Skip to content

GeiserX/genieacs-mcp

Repository files navigation

GenieACS MCP banner

GenieACS-MCP

npm CI Coverage Go Docker Pulls GitHub Stars License

Official MCP Registry Glama MCP Server MCPServers.org mcp.so ToolSDK Registry listed on awesome-mcp-servers

A tiny bridge that exposes any GenieACS instance as an MCP v1 (JSON-RPC for LLMs) server written in Go.


✨ What you get

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
genieacs://presets/list
genieacs://provisions/list
genieacs://faults/{id}
Tools Invoke 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)

npx genieacs-mcp

Or install globally:

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

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
ACS_URL http://localhost:7557 GenieACS 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 500 Max devices returned by genieacs://devices/list
MCP_LISTEN_ADDR 127.0.0.1:8080 HTTP listen address (only used when TRANSPORT is not stdio)

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": "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-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:

Project Type Description
genieacs-docker Docker + Helm Production-ready multi-arch Docker image and Helm chart
genieacs-ansible Ansible Collection Dynamic inventory plugin and device management modules
genieacs-ha HA Integration Home Assistant integration for TR-069 monitoring
n8n-nodes-genieacs n8n Node Workflow automation for GenieACS
genieacs-services Service Defs Systemd/Supervisord service definitions
genieacs-sim-container Simulator Docker-based GenieACS simulator for testing

Other MCP Servers by GeiserX