genieacs-mcp

GeiserX/genieacs-mcp

3.3

If you are the rightful owner of genieacs-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

GenieACS-MCP is a bridge that exposes any GenieACS instance as an MCP v1 server, enabling JSON-RPC communication for LLMs.

GenieACS-MCP

A tiny bridge that exposes any GenieACS instance as an MCP v1 (JSON-RPC for LLMs) server written in Go.




✨ What you get

TypeWhat forMCP URI / Tool id
ResourcesConsume GenieACS data read-onlygenieacs://device/{id}
genieacs://file/{name}
genieacs://tasks/{id}
genieacs://devices/list
ToolsInvoke actions on a CPE through GenieACSreboot_device
download_firmware
refresh_parameter

Everything is exposed over a single JSON-RPC endpoint (/mcp).
LLMs / Agents can: initialize → readResource → listTools → callTool … and so on.


🚀 Quick-start (Docker Compose)

Follow instructions from https://github.com/GeiserX/genieacs-docker, it is included in the docker compose file there.

🛠 Local build

git clone https://github.com/GeiserX/genieacs-mcp
cd genieacs-mcp

# (optional) create .env from the sample
cp .env.example .env && $EDITOR .env

go run ./cmd/server

🔧 Configuration

VariableDefaultDescription
ACS_URLhttp://localhost:7557GenieACS NBI endpoint (without trailing /)
ACS_USERadminGenieACS username
ACS_PASSadminGenieACS password

Put them in a .env file (from .env.example) or set them in the environment.

Testing

Tested with Inspector and it is currently fully working. Before making a PR, make sure this MCP server behaves well via this medium.

Lacks Testing with actual MCP clients (client LLMs), so please, submit your PRs to improve descriptions in case it fails to adequately match the services offered by this MCP server.

Example configuration for client LLMs:

{
  "schema_version": "v1",
  "name_for_human": "GenieACS-MCP",
  "name_for_model": "genieacs_mcp",
  "description_for_human": "Read data from GenieACS and run actions on CPEs (reboot, firmware update, parameter refresh).",
  "description_for_model": "Interact with an Auto-Configuration-Server (ACS) that manages routers. First call initialize, then reuse the returned session id in header \"Mcp-Session-Id\" for every other call. Use readResource to fetch URIs that begin with genieacs://. Use listTools to discover available actions and callTool to execute them.",
  "auth": { "type": "none" },
  "api": {
    "type": "jsonrpc-mcp",
    "url":  "http://localhost:8080/mcp",
    "init_method": "initialize",
    "session_header": "Mcp-Session-Id"
  },
  "logo_url": "https://raw.githubusercontent.com/geiserx/genieacs-docker/main/extra/logo.png",
  "contact_email": "acsdesk@protonmail.com",
  "legal_info_url": "https://github.com/GeiserX/genieacs-mcp/blob/main/LICENSE"
}

Credits

GenieACS – the best open-source ACS

MCP-GO – modern MCP implementation

GoReleaser – painless multi-arch releases

Maintainers

@GeiserX.

Contributing

Feel free to dive in! Open an issue or submit PRs.

GenieACS-Docker follows the Contributor Covenant Code of Conduct.