
Bridges GenieACS TR-069 auto-configuration servers to LLMs through MCP, exposing both read-only resources (device details, presets, provisions, faults) and write operations (reboot, firmware downloads, parameter get/set, tagging, connection requests). Written in Go with stdio and HTTP transports. You can query device lists, manage presets and provisions, search CPE fleets, and handle task lifecycles all through natural language. Tested with MCP Inspector but still gathering real-world LLM client feedback. Ships as an npm package that downloads pre-built binaries or runs in Docker Compose alongside the full GenieACS stack. Part of a larger GenieACS ecosystem that includes Ansible collections, Home Assistant integrations, and n8n workflow nodes.
genieacs-mcp is an MCP server for GenieACS, the open-source TR-069 ACS that manages routers, ONTs and other CPE devices. Add it to Claude Desktop, Cursor or any other MCP client and ask in plain words: which devices stopped informing last night, what firmware serial 000003 runs, reboot the ones tagged pilot. The assistant reads and acts through your GenieACS NBI with 7 resources and 12 tools; one Go binary, no database of its own.
search_devices takes a MongoDB-style filter).genieacs://device/{id}, genieacs://devices/list, ...).search_devices, get_parameter and the seven resources only read; the other ten tools queue a task on a device or change the ACS.Host and Origin against DNS rebinding.npx genieacs-mcp) and a Docker image.You need a GenieACS whose NBI (port 7557) this machine can reach; without one, the family's demo stack gives you an ACS with a simulated router in about a minute:
curl -fsSLO https://raw.githubusercontent.com/GeiserX/genieacs-container/main/docker-compose.yml
docker compose --profile testing up -d # GenieACS + MongoDB + one simulated CPE, NBI on localhost:7557
Then add the server to a client that reads an mcpServers block (Claude Desktop, Cursor, Claude Code; in VS Code the .vscode/mcp.json key is servers):
{
"mcpServers": {
"genieacs": {
"command": "npx",
"args": ["-y", "genieacs-mcp"],
"env": { "ACS_URL": "http://localhost:7557" }
}
}
}
It worked when you ask "which devices does the ACS know about?" and the assistant answers with device ids such as 202BC1-BM632w-000000 (the demo stack) or your own. Docker, the HTTP transport and a local build are in Getting started.
The full documentation is at geiserx.github.io/genieacs-mcp.
Listed in the official MCP Registry as io.github.GeiserX/genieacs-mcp. Part of the GenieACS family: genieacs-container (the ACS itself, Docker and Helm, with this server as a compose profile), genieacs-sim-container, genieacs-ansible, genieacs-ha, genieacs-services, and n8n-nodes-genieacs (archived).
ACS_URL*GenieACS NBI API URL (e.g. http://genieacs:7557)
ACS_USERGenieACS NBI basic-auth username
ACS_PASSsecretGenieACS NBI basic-auth password