# genieacs-mcp

An MCP server that wires an AI client to GenieACS, so you can search devices, read their parameters and queue tasks from a chat.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 19
- Author: GeiserX
- License: GPL-3.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/GeiserX/genieacs-mcp
- Updated: 2026-10-21
- HTML: https://affpapa.org/en/nevibecode/mcp/genieacs-mcp

## What it does

The server sits on top of the GenieACS NBI and exposes 7 resources and 12 tools. Through them the assistant searches devices by tag, model, firmware or any TR-069 parameter, reads a device's parameter tree, tasks and faults, and lists the presets, provisions and files on the ACS. Actions work too: reboot a CPE, push firmware, change a parameter, send a connection request.

Read and act are split. `search_devices`, `get_parameter` and the resources change nothing; the other ten tools queue work on a device or modify the ACS. There is no read-only mode, so point the server at an ACS you are fine letting an assistant touch, and leave tool-approval prompts enabled in your client. The HTTP transport binds to loopback unless you set an address and bearer token, and it checks `Host` and `Origin` against DNS rebinding.

One Go binary covers Linux, macOS and Windows on amd64 and arm64, with an npm package and a Docker image as alternatives. You need a reachable GenieACS NBI on port 7557 — without it the server has nothing to talk to. No ACS of your own? The demo stack in `genieacs-container` brings up an ACS with a simulated router in about a minute.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `ACS_URL`, `ACS_USER`, `ACS_PASS`, `DEVICE_LIMIT` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env ACS_URL=<ACS_URL> --env ACS_USER=<ACS_USER> --env ACS_PASS=<ACS_PASS> --env DEVICE_LIMIT=<DEVICE_LIMIT> --transport stdio genieacs-mcp -- npx -y genieacs-mcp
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add genieacs-mcp --env ACS_URL=<ACS_URL> --env ACS_USER=<ACS_USER> --env ACS_PASS=<ACS_PASS> --env DEVICE_LIMIT=<DEVICE_LIMIT> -- npx -y genieacs-mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "genieacs-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "genieacs-mcp"
            ],
            "env": {
                "ACS_URL": "<ACS_URL>",
                "ACS_USER": "<ACS_USER>",
                "ACS_PASS": "<ACS_PASS>",
                "DEVICE_LIMIT": "<DEVICE_LIMIT>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "genieacs-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "genieacs-mcp"
            ],
            "env": {
                "ACS_URL": "<ACS_URL>",
                "ACS_USER": "<ACS_USER>",
                "ACS_PASS": "<ACS_PASS>",
                "DEVICE_LIMIT": "<DEVICE_LIMIT>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e ACS_URL=<ACS_URL> -e ACS_USER=<ACS_USER> -e ACS_PASS=<ACS_PASS> -e DEVICE_LIMIT=<DEVICE_LIMIT> genieacs-mcp npx -y genieacs-mcp
```
Replace <…> with your own values

## When to use it
- find devices that stopped checking in
- inspect the parameter tree of one CPE
- reboot every device carrying a given tag
- roll firmware out to a batch of routers
- create a preset or provision from chat

## Example prompts
- Which devices stopped informing the ACS last night?
- Reboot the devices tagged `pilot`
- Show me the parameters of device `202BC1-BM632w-000000`

## Similar
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [Oh My Posh Validator](https://affpapa.org/en/nevibecode/mcp/oh-my-posh-validator.md) — MCP server · ★ 23643
- [Keploy](https://affpapa.org/en/nevibecode/mcp/keploy.md) — MCP server · ★ 18727
- [Coder](https://affpapa.org/en/nevibecode/mcp/coder.md) — MCP server · ★ 17160
- [mcp](https://affpapa.org/en/nevibecode/mcp/kubeshark-mcp.md) — MCP server · ★ 12109

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
