A tiny bridge that exposes any GenieACS instance as an MCP v1 (JSON-RPC for LLMs) server written in Go.
Type | What for | MCP URI / Tool id |
---|---|---|
Resources | Consume GenieACS data read-only | genieacs://device/{id} genieacs://file/{name} genieacs://tasks/{id} genieacs://devices/list |
Tools | Invoke actions on a CPE through GenieACS | reboot_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.
Follow instructions from https://github.com/GeiserX/genieacs-docker, it is included in the docker compose file there.
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
Variable | Default | Description |
---|---|---|
ACS_URL |
http://localhost:7557 | GenieACS NBI endpoint (without trailing /) |
ACS_USER |
admin | GenieACS username |
ACS_PASS |
admin | GenieACS password |
Put them in a .env
file (from .env.example
) or set them in the environment.
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.
{
"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": "[email protected]",
"legal_info_url": "https://github.com/GeiserX/genieacs-mcp/blob/main/LICENSE"
}
GenieACS – the best open-source ACS
MCP-GO – modern MCP implementation
GoReleaser – painless multi-arch releases
Feel free to dive in! Open an issue or submit PRs.
GenieACS-Docker follows the Contributor Covenant Code of Conduct.