Content
# oxidized-mcp
MCP (Model Context Protocol) server for Oxidized network device configuration backup tool.
## Tools
| Tool | Description |
|---|---|
| `list_nodes` | List all nodes with status, group, model, and last backup time |
| `get_node` | Get details for a specific node (IP, model, group, variables) |
| `get_node_config` | Retrieve stored configuration for a node |
| `run_backup` | Trigger immediate backup for a node (use '*' for all nodes) |
| `list_node_versions` | List all config versions (git commits) for a node |
| `get_node_version` | Get full configuration at a specific version/commit |
| `diff_node_versions` | Compare two config versions and return unified diff |
| `search_configs` | Search text across all stored node configurations |
| `get_nodes_stats` | Get statistics for all nodes |
| `reload_nodes` | Reload node list from configured source |
## Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
| `OXIDIZED_URL` | Yes | — | Oxidized web URL (e.g. `https://oxidized.example.com`) |
| `MCP_API_TOKEN` | Yes | — | Bearer token required by clients to authenticate with the MCP server |
| `MCP_HOST` | No | `0.0.0.0` | Bind host for MCP server |
| `MCP_PORT` | No | `8000` | Bind port for MCP server |
## Local Development
```bash
cp .env.example .env
# Edit .env with your Oxidized URL and token
docker compose up --build
```
The MCP server will be available at `http://localhost:8000/mcp`.
## Kubernetes Deployment
```bash
# Create secret with Oxidized URL and MCP API token
kubectl create secret generic oxidized-mcp-secret \
--from-literal=oxidized-url=https://oxidized.example.com \
--from-literal=mcp-api-token=your-mcp-server-token-here
# Deploy
kubectl apply -f k8s/
```
## GitHub Container Registry
Images are built and pushed automatically via GitHub Actions on pushes to `main` and version tags (`v*`).
```bash
docker pull ghcr.io/marcusjfloyd/oxidized-mcp:latest
```
## MCP Client Configuration
Connect your MCP client to `http://<host>:8000/mcp` using Streamable HTTP transport.
All requests must include the `Authorization: Bearer <MCP_API_TOKEN>` header.