trackmcp
Back to directory
GeiserX

genieacs-mcp

View on GitHub

MCP Server for GenieACS written in Go

16 stars GoOthers Updated Aug 25, 2026
genieacsgolangmcpacsaiautomationcpecwmpdevice-managementdockergoispjson-rpcllmmodel-context-protocolnetworkingrouter-managementself-hostedtr-069tr069

Documentation

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-only`genieacs://device/{id}``genieacs://file/{name}``genieacs://tasks/{id}``genieacs://devices/list``genieacs://presets/list``genieacs://provisions/list``genieacs://faults/{id}`
ToolsInvoke actions on a CPE through GenieACS`reboot_device``download_firmware``refresh_parameter``set_parameter``get_parameter``manage_preset``manage_provision``search_devices``tag_device``connection_request``delete_task``retry_task`

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-container, it is included in the docker compose file there.

📦 Install via npm (stdio transport)

sh
npx genieacs-mcp

Or install globally:

sh
npm install -g genieacs-mcp
genieacs-mcp

This downloads the pre-built Go binary for your platform and runs it with stdio transport, compatible with any MCP client.

🛠 Local build

sh
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_URL`http://localhost:7557GenieACS NBI endpoint (without trailing /)
`ACS_USER`_(empty)_GenieACS NBI basic-auth username
`ACS_PASS`_(empty)_GenieACS NBI basic-auth password
`TRANSPORT`_(empty = HTTP)_Set to `stdio` for stdio transport
`DEVICE_LIMIT`500Max devices returned by `genieacs://devices/list`
`MCP_LISTEN_ADDR`127.0.0.1:8080HTTP listen address (only used when TRANSPORT is not stdio)
`MCP_AUTH_TOKEN`_(empty)_Bearer token for HTTP transport auth. Required when `MCP_LISTEN_ADDR` is non-loopback
`MCP_ALLOWED_HOSTS`_(empty)_Comma-separated extra `Host` header values to accept (e.g. a reverse-proxy domain). Loopback names on the listen port are always allowed
`MCP_ALLOWED_ORIGINS`_(empty)_Comma-separated extra browser `Origin` values to accept (e.g. `https://my-ai-app.com`)

> Security — HTTP transport. The HTTP transport validates the `Host` and

> `Origin` headers on every request to prevent DNS rebinding

> from a malicious web page reaching a local listener. Requests with an

> untrusted `Host`, or a present-but-untrusted `Origin`, are rejected with

> `403`. Loopback access works with no configuration; if you expose the server

> through a reverse proxy or a hostname, add that name to `MCP_ALLOWED_HOSTS`

> (and `MCP_ALLOWED_ORIGINS` for browser clients). The `stdio` transport 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:

json
{
  "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": "" },
  "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

@GeiserX.

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:

ProjectTypeDescription
genieacs-dockerDocker + HelmProduction-ready multi-arch Docker image and Helm chart
genieacs-ansibleAnsible CollectionDynamic inventory plugin and device management modules
genieacs-haHA IntegrationHome Assistant integration for TR-069 monitoring
n8n-nodes-genieacsn8n NodeWorkflow automation for GenieACS
genieacs-servicesService DefsSystemd/Supervisord service definitions
genieacs-sim-containerSimulatorDocker-based GenieACS simulator for testing

Other MCP Servers by GeiserX

Frequently asked questions

What is genieacs-mcp?

genieacs-mcp is MCP Server for GenieACS written in Go

How do I install genieacs-mcp?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is genieacs-mcp open source?

Yes — it is hosted on GitHub at https://github.com/GeiserX/genieacs-mcp and has 16 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP