genieacs-mcp
This server acts as a bridge between LLMs/agents and a GenieACS TR-069 Auto-Configuration Server (ACS), enabling comprehensive management of CPE devices (routers, ONTs, gateways).
Read-only Resources:
genieacs://device/{id}– Device detailsgenieacs://file/{name}– File contentgenieacs://tasks/{id}– Task statusgenieacs://faults/{id}– Fault informationgenieacs://devices/list– List all managed devicesgenieacs://presets/list– List all presetsgenieacs://provisions/list– List all provisions
Tools (Actions):
reboot_device– Remotely reboot a CPE devicedownload_firmware– Push a firmware image or file from GridFS to a devicerefresh_parameter– Request an updated TR-069 parameter value from a device (e.g.,Device.DeviceInfo.SerialNumber)get_parameter– Get a TR-069 parameter value from a deviceset_parameter– Set a TR-069 parameter value on a devicesearch_devices– Search for devicestag_device– Tag a deviceconnection_request– Trigger a connection request to a devicemanage_preset– Create/update/delete presetsmanage_provision– Create/update/delete provisionsdelete_task– Delete a taskretry_task– Retry a task
✨ What you get
Type | What for | MCP URI / Tool id |
Resources | Consume GenieACS data read-only |
|
Tools | Invoke actions on a CPE through GenieACS |
|
Everything is exposed over a single JSON-RPC endpoint (/mcp).
LLMs / Agents can: initialize → readResource → listTools → callTool … and so on.
Related MCP server: GoMCP
🚀 Quick-start (Docker Compose)
Follow instructions from https://github.com/GeiserX/genieacs-container, it is included in the docker compose file there.
📦 Install via npm (stdio transport)
npx genieacs-mcpOr install globally:
npm install -g genieacs-mcp
genieacs-mcpThis downloads the pre-built Go binary for your platform and runs it with stdio transport, compatible with any MCP client.
🛠 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
Variable | Default | Description |
| GenieACS NBI endpoint (without trailing /) | |
| (empty) | GenieACS NBI basic-auth username |
| (empty) | GenieACS NBI basic-auth password |
| (empty = HTTP) | Set to |
| 500 | Max devices returned by |
| 127.0.0.1:8080 | HTTP listen address (only used when TRANSPORT is not stdio) |
| (empty) | Bearer token for HTTP transport auth. Required when |
| (empty) | Comma-separated extra |
| (empty) | Comma-separated extra browser |
Security — HTTP transport. The HTTP transport validates the
HostandOriginheaders on every request to prevent DNS rebinding from a malicious web page reaching a local listener. Requests with an untrustedHost, or a present-but-untrustedOrigin, are rejected with403. Loopback access works with no configuration; if you expose the server through a reverse proxy or a hostname, add that name toMCP_ALLOWED_HOSTS(andMCP_ALLOWED_ORIGINSfor browser clients). Thestdiotransport is unaffected and remains the recommended mode for local MCP clients.
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": "Full CPE management through GenieACS — parameter read/write, presets, provisions, firmware, tags, search, and task lifecycle.",
"description_for_model": "Interact with a GenieACS TR-069 Auto-Configuration-Server (ACS) that manages CPE devices (routers, ONTs, gateways). 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:// (devices, presets, provisions, faults). Use listTools to discover available actions (parameter read/write, presets, provisions, tags, search, task management) and callTool to execute them.",
"auth": { "type": "bearer", "token": "<MCP_AUTH_TOKEN value>" },
"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-container/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
Contributing
Feel free to dive in! Open an issue or submit PRs.
GenieACS-MCP follows the Contributor Covenant Code of Conduct.
GenieACS Ecosystem
This project is part of a broader set of tools for working with GenieACS:
Project | Type | Description |
Docker + Helm | Production-ready multi-arch Docker image and Helm chart | |
Ansible Collection | Dynamic inventory plugin and device management modules | |
HA Integration | Home Assistant integration for TR-069 monitoring | |
n8n Node | Workflow automation for GenieACS | |
Service Defs | Systemd/Supervisord service definitions | |
Simulator | Docker-based GenieACS simulator for testing |
Other MCP Servers by GeiserX
cashpilot-mcp — Passive income monitoring
duplicacy-mcp — Backup health monitoring
lynxprompt-mcp — AI configuration blueprints
pumperly-mcp — Fuel and EV charging prices
telegram-archive-mcp — Telegram message archive
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-quality-maintenanceA high-performance Go-based MCP server that provides a microservice architecture for orchestrating diverse tools through gRPC and HTTP/REST APIs. Enables seamless integration of language-agnostic tools including ML capabilities, web search, calculations, and human interaction for intelligent agent workflows.Last updated2
- AlicenseAqualityAmaintenanceAbout The fast, idiomatic way to build MCP servers in Go. Gin-like DX with struct-tag auto schema, middleware, adapters for Gin/OpenAPI/gRPC.Last updated514Apache 2.0
- Alicense-qualityBmaintenanceMCP server for managing AdGuard Home instances and AdGuardHome Sync with 33 tools across read, safe-write, and destructive operations, featuring three-tier write gating.Last updated202MIT
- Flicense-qualityCmaintenanceA Model Context Protocol (MCP) server for interfacing with AVM FRITZ!Box routers. Control smart home devices, monitor network status, and administer your router through any MCP-compatible client.Last updated
Related MCP Connectors
MCP (Model Context Protocol) server for Appwrite
MCP server for InsForge BaaS — database, storage, edge functions, and deployments
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/GeiserX/genieacs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server