Skip to main content
Glama
clicon

Clixon MCP Server

by clicon
README.md
# Clixon MCP Server

A [Model Context Protocol](https://modelcontextprotocol.io/) server for fetching and querying network device configuration via RESTCONF. Connects to Clixon-based (or any RESTCONF-capable) devices and makes the configuration available to AI coding agents like OpenCode.

This project uses UV (https://github.com/astral-sh/uv) for package control.

## Setup

```bash
uv sync
```

## Run

```bash
uv run server.py --restconf-url https://localhost:8443/restconf/
```

### CLI Arguments

| Argument | Default | Description |
|----------|---------|-------------|
| `--restconf-url` | `https://localhost:8443/restconf/` | RESTCONF URL to fetch config from |
| `--restconf-username` | _(empty)_ | HTTP basic auth username for RESTCONF (optional) |
| `--restconf-password` | _(empty)_ | HTTP basic auth password for RESTCONF (optional) |
| `--restconf-verify-ssl` | `False` | Verify SSL certificates when fetching RESTCONF config |

## Tools

| Tool | Description |
|------|-------------|
| `fetch_config` | Fetch device configuration via RESTCONF (supports basic auth and TLS) |
| `write_config` | Write cached configuration back to the device via RESTCONF |
| `get_config` | Return the currently cached configuration |
| `get_config_path` | Extract a specific section by dot-separated path (e.g. `ietf-interfaces:interfaces.interface`) |
| `get_config_url` | Return the RESTCONF URL used to fetch the configuration |
| `set_config_url` | Set the RESTCONF URL for fetching configuration |
| `clear_config_cache` | Clear the cached configuration |
| `list_tools` | List available tools |
| `help` | Return a help message describing the server and available tools |

## Resources

- `config://server-info` — Server metadata (name, version, available tools)

## Prompts

- `analyze_config` — Fetch and analyze device configuration (interfaces, routing, etc.)


## Connect to OpenCode

Add to your `opencode.json` (`~/.opencode/opencode.json`):

```json
{
    "$schema": "https://opencode.ai/config.json",
    "mcp": {
      "clixon": {
        "type": "remote",
        "url": "http://localhost:8000/mcp",
        "enabled": true
      }
    }
}
```

## Example Usage in OpenCode

Once connected, ask questions like:

- `Fetch the config and summarize it.`
- `What interfaces are configured?`
- `Show me the routing configuration`
- `Are there any interfaces that are down?`

The AI agent will call `fetch_config` to pull the RESTCONF data, cache it in memory, and then use `get_config` / `get_config_path` to answer follow-up questions about the device configuration.

TDQS

A3.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: fetch_config retrieves configuration from a device, get_config accesses the cached configuration, and get_config_path extracts specific sections from the cache. There is no overlap or ambiguity in their functions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case (fetch_config, get_config, get_config_path). The verbs 'fetch' and 'get' are semantically related but used distinctly to differentiate between external retrieval and internal access.

Tool Count3/5

With only 3 tools, the set feels thin for a network device configuration server, potentially lacking operations like update, delete, or validation. However, it covers basic fetch and query workflows, making it borderline but functional for limited use cases.

Completeness2/5

The toolset is severely incomplete for network device configuration management. It only supports fetching and reading configuration, with no tools for creating, updating, deleting, or validating configurations, leaving significant gaps that will hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues