GenieACS
MCP server bridging GenieACS TR-069 ACS instances to LLMs for CPE device management
Que pouvez-vous faire avec GenieACS ?
- Find devices the way you would ask a colleague: by tag, model, firmware, last inform, or any TR-069 parameter (
search_devicestakes a MongoDB-style filter). - Read a device's full parameter tree, its tasks and its faults, plus the presets, provisions and files on the ACS, as resources (
genieacs://device/{id},genieacs://devices/list, ...). - Reboot a device, push firmware to it, refresh or set a parameter, or wake it with a connection request, from a chat.
- Tag devices, create or delete presets and provisions, and delete or retry tasks, so the assistant can fix what it finds.
- Every tool description says what it does, its limits and an example, so clients pick the right one without a prompt from you.
- Read versus act:
search_devices,get_parameterand the seven resources only read; the other ten tools queue a task on a device or change the ACS. - No read-only mode: point it at an ACS you are willing to let an assistant act on, and keep your client's tool-approval prompts on.
- Safe on a laptop: the HTTP transport listens on loopback only unless you set an address and a bearer token, and checks
HostandOriginagainst DNS rebinding.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
genieacs-mcpclaude mcp add genieacs -e 'ACS_URL=http://localhost:7557' -e 'ACS_USER=<ACS_USER>' -e 'ACS_PASS=<your acs_pass>' -e 'DEVICE_LIMIT=500' -e 'GENIEACS_READ_ONLY=false' -e 'GENIEACS_TOOLS=<GENIEACS_TOOLS>' -e 'ACS_TIMEOUT=30' -e 'ACS_MAX_RESPONSE_BYTES=4194304' -- npx -y genieacs-mcp@0.4.0
{
"mcpServers": {
"genieacs": {
"command": "npx",
"args": [
"-y",
"genieacs-mcp@0.4.0"
],
"env": {
"ACS_URL": "http://localhost:7557",
"ACS_USER": "<ACS_USER>",
"ACS_PASS": "<your acs_pass>",
"DEVICE_LIMIT": "500",
"GENIEACS_READ_ONLY": "false",
"GENIEACS_TOOLS": "<GENIEACS_TOOLS>",
"ACS_TIMEOUT": "30",
"ACS_MAX_RESPONSE_BYTES": "4194304"
}
}
}
}
Variables d'environnement
ACS_URLGenieACS NBI URL, without a trailing slashACS_USERGenieACS NBI basic-auth usernameACS_PASSsecret GenieACS NBI basic-auth passwordDEVICE_LIMITMax devices returned by genieacs://devices/list (default 500)GENIEACS_READ_ONLYSet to true to serve only the tools that never change a device or the ACSGENIEACS_TOOLSComma-separated tool names to serve; every other tool is left outACS_TIMEOUTSeconds to wait for one GenieACS NBI request (default 30)ACS_MAX_RESPONSE_BYTESLargest GenieACS NBI response the server reads, in bytes (default 4194304)
drumsergio/genieacs-mcp:v0.4.0claude mcp add genieacs -e 'ACS_URL=http://genieacs:7557' -e 'ACS_USER=<ACS_USER>' -e 'ACS_PASS=<your acs_pass>' -e 'DEVICE_LIMIT=500' -e 'GENIEACS_READ_ONLY=false' -e 'GENIEACS_TOOLS=<GENIEACS_TOOLS>' -e 'ACS_TIMEOUT=30' -e 'ACS_MAX_RESPONSE_BYTES=4194304' -- docker run -i --rm drumsergio/genieacs-mcp:v0.4.0
{
"mcpServers": {
"genieacs": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"drumsergio/genieacs-mcp:v0.4.0"
],
"env": {
"ACS_URL": "http://genieacs:7557",
"ACS_USER": "<ACS_USER>",
"ACS_PASS": "<your acs_pass>",
"DEVICE_LIMIT": "500",
"GENIEACS_READ_ONLY": "false",
"GENIEACS_TOOLS": "<GENIEACS_TOOLS>",
"ACS_TIMEOUT": "30",
"ACS_MAX_RESPONSE_BYTES": "4194304"
}
}
}
}
Variables d'environnement
ACS_URLGenieACS NBI URL, without a trailing slashACS_USERGenieACS NBI basic-auth usernameACS_PASSsecret GenieACS NBI basic-auth passwordDEVICE_LIMITMax devices returned by genieacs://devices/list (default 500)GENIEACS_READ_ONLYSet to true to serve only the tools that never change a device or the ACSGENIEACS_TOOLSComma-separated tool names to serve; every other tool is left outACS_TIMEOUTSeconds to wait for one GenieACS NBI request (default 30)ACS_MAX_RESPONSE_BYTESLargest GenieACS NBI response the server reads, in bytes (default 4194304)
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
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.
Features
- Find devices the way you would ask a colleague: by tag, model, firmware, last inform, or any TR-069 parameter (
search_devicestakes a MongoDB-style filter). - Read a device's full parameter tree, its tasks and its faults, plus the presets, provisions and files on the ACS, as resources (
genieacs://device/{id},genieacs://devices/list, ...). - Reboot a device, push firmware to it, refresh or set a parameter, or wake it with a connection request, from a chat.
- Tag devices, create or delete presets and provisions, and delete or retry tasks, so the assistant can fix what it finds.
- Every tool description says what it does, its limits and an example, so clients pick the right one without a prompt from you.
- Read versus act:
search_devices,get_parameterand the seven resources only read; the other ten tools queue a task on a device or change the ACS. - No read-only mode: point it at an ACS you are willing to let an assistant act on, and keep your client's tool-approval prompts on.
- Safe on a laptop: the HTTP transport listens on loopback only unless you set an address and a bearer token, and checks
HostandOriginagainst DNS rebinding. - One static Go binary for Linux, macOS and Windows on amd64 and arm64, also as an npm package (
npx genieacs-mcp) and a Docker image.
Quick start
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.
Documentation
The full documentation is at geiserx.github.io/genieacs-mcp.
- Getting started: npm, Docker Compose, local build, and what the first exchange looks like
- Configuration: every environment variable, the HTTP transport's security model, client config for stdio and HTTP
- Usage: the 7 resources and 12 tools with their arguments, which ones act on devices, example prompts
- Development: tests, trying the server with MCP Inspector, contributing
- Related projects: the GenieACS family, other MCP servers, where this server is listed
Related projects
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).
License
Questions fréquentes
Qu'est-ce que GenieACS ?
MCP server bridging GenieACS TR-069 ACS instances to LLMs for CPE device management
Comment installer GenieACS ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add genieacs -e 'ACS_URL=http://localhost:7557' -e 'ACS_USER=<ACS_USER>' -e 'ACS_PASS=<your acs_pass>' -e 'DEVICE_LIMIT=500' -e 'GENIEACS_READ_ONLY=false' -e 'GENIEACS_TOOLS=<GENIEACS_TOOLS>' -e 'ACS_TIMEOUT=30' -e 'ACS_MAX_RESPONSE_BYTES=4194304' -- npx -y genieacs-mcp@0.4.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour GenieACS ?
Oui. Il attend ACS_PASS, à renseigner dans sa configuration.
GenieACS est-il open source ?
Oui. Son code est sur GitHub sous licence GPL-3.0.
Qui maintient GenieACS ?
Il est publié par GeiserX. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.