Skip to main content
Glama
README.md
# VyOS MCP Server

An MCP (Model Context Protocol) server for managing VyOS routers via the VyOS HTTP API. Gives any MCP-compatible AI assistant full control over your VyOS router — from reading config to setting up interfaces, firewall rules, VPNs, and more.

## Requirements

- Python 3.10+
- A VyOS router (1.4+ or rolling) with the HTTP API enabled

### Enable the VyOS HTTP API

On your VyOS router:

```bash
configure
set service https api keys id my-app key 'YOUR_API_KEY'
set service https api rest
commit
save
```

## Installation

```bash
git clone https://github.com/openclaw/vyos-mcp.git
cd vyos-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e .
```

## Configuration

### Claude Code

Add to your `~/.claude.json` (or project `.mcp.json`):

```json
{
  "mcpServers": {
    "vyos": {
      "command": "/path/to/vyos-mcp/.venv/bin/python",
      "args": ["-m", "vyos_mcp.server"],
      "env": {
        "VYOS_URL": "https://10.0.0.1",
        "VYOS_API_KEY": "YOUR_API_KEY",
        "VYOS_VERIFY_SSL": "false"
      }
    }
  }
}
```

### Claude Desktop

Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "vyos": {
      "command": "/path/to/vyos-mcp/.venv/bin/python",
      "args": ["-m", "vyos_mcp.server"],
      "env": {
        "VYOS_URL": "https://10.0.0.1",
        "VYOS_API_KEY": "YOUR_API_KEY",
        "VYOS_VERIFY_SSL": "false"
      }
    }
  }
}
```

### Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `VYOS_URL` | Yes | Base URL of your VyOS router (e.g. `https://10.0.0.1`) |
| `VYOS_API_KEY` | Yes | API key configured on the router |
| `VYOS_VERIFY_SSL` | No | Set to `false` to skip TLS verification (default: `true`) |

## Tools

### Read-Only

| Tool | Description |
|------|-------------|
| `vyos_info` | Get system version, hostname, and banner (no auth required) |
| `vyos_show` | Run operational-mode `show` commands (interfaces, routes, BGP, etc.) |
| `vyos_show_config` | Retrieve running configuration (full or partial subtree) |
| `vyos_exists` | Check whether a configuration path exists |
| `vyos_return_values` | Return values of a multi-valued config node (e.g. DNS servers) |

### Configuration

| Tool | Description |
|------|-------------|
| `vyos_set` | Set a single configuration path |
| `vyos_delete` | Delete a configuration path and its children |
| `vyos_comment` | Add a comment to a configuration node |
| `vyos_configure_batch` | Apply multiple set/delete/comment operations in a single atomic commit |

All configuration tools automatically save to `/config/config.boot` after a successful commit, so changes persist across reboots.

Use `confirm_time` (1-60 minutes) on any config tool for safe rollback — changes auto-revert unless confirmed with `vyos_confirm_commit`.

### Config File Management

| Tool | Description |
|------|-------------|
| `vyos_save_config` | Save running config to disk (default or custom path) |
| `vyos_load_config` | Load a config file, replacing the running configuration |
| `vyos_merge_config` | Merge config from a file or inline string into running config |
| `vyos_confirm_commit` | Confirm a pending commit-confirm timer |

### System

| Tool | Description |
|------|-------------|
| `vyos_generate` | Run generate commands (WireGuard keys, certificates, etc.) |
| `vyos_reset` | Reset protocol sessions, counters, or runtime state |
| `vyos_image` | Add (download) or delete system images |
| `vyos_system_control` | Reboot or power off the router (requires explicit confirmation) |

## Examples

Once configured, you can ask your AI assistant things like:

- "Show me the current interface status"
- "Set up eth0 as WAN with DHCP and eth1 as LAN with a DHCP server on 192.168.1.0/24"
- "Add a firewall rule to block incoming traffic on port 22 from WAN"
- "Set up a WireGuard VPN tunnel to 203.0.113.1"
- "Show me the routing table"
- "What DHCP leases are active?"
- "Generate a new WireGuard key pair"

## License

MIT

TDQS

A4.3/5.0

Scored across 17 tools

Disambiguation5/5

Each tool targets a distinct operation: set, delete, comment, batch configure, check existence, generate keys, manage images, get system info, load/merge/save config, reset sessions, read multi-valued nodes, run show commands, retrieve config subtrees, and system control. No two tools overlap in purpose.

Naming Consistency4/5

All tools follow the vyos_<verb>_<noun> pattern (e.g., vyos_configure_batch, vyos_save_config) with a few noun-only names like vyos_info and vyos_image. The naming is largely consistent and intuitive, with minor exceptions.

Tool Count5/5

With 17 tools, the set is well-scoped for VyOS router management. It covers configuration operations, system control, monitoring, and diagnostics without being excessive or sparse.

Completeness5/5

The tool surface provides comprehensive lifecycle coverage: create, read, update, delete, commit confirm, save, load, merge, existence check, multi-value retrieval, operational show commands, image management, and system reboot/poweroff. No obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues