Skip to main content
Glama
README.md
# Sympathy-MCP

MCP server for Incus VM operations. Named for sympathetic magic — the connection between puppet and puppeteer.

Agents on masternode puppeteer VMs via structured MCP tools instead of freeform Bash commands.

## Tools

| Tool | Description |
|------|-------------|
| `vm_exec` | Run a command inside a VM (stdout, stderr, exit code) |
| `vm_file_read` | Read a file from inside a VM |
| `vm_file_write` | Write content to a file inside a VM |
| `vm_file_push` | Push a file from host into a VM |
| `vm_file_pull` | Pull a file from a VM to host |
| `vm_snapshot` | Create a named snapshot |
| `vm_restore` | Restore to a named snapshot |
| `vm_status` | Get VM state, IP, resource usage |
| `vm_list` | List all VMs with status |

## Usage

```bash
# Run the MCP server (stdio transport)
uv run python -m sympathy_mcp

# Or via entry point
uv run sympathy-mcp
```

## MCP Configuration

Add to `.mcp.json`:

```json
{
  "mcpServers": {
    "sympathy-mcp": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/Sympathy-MCP", "sympathy-mcp"]
    }
  }
}
```

## Requirements

- Python 3.12+
- `incus` CLI installed and configured
- `uv` for project management

## Architecture

- `src/sympathy_mcp/incus.py` — Async Incus CLI wrapper (validation, subprocess exec, structured results)
- `src/sympathy_mcp/server.py` — FastMCP server with 9 tools (stdio transport)

Shells out to `incus` CLI under the hood. Go rewrite planned.

TDQS

A4.1/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity. The tools cover separate operations: command execution, file transfer (pull/push), file reading/writing, listing instances, snapshot management, and status checking. The descriptions clearly differentiate between these functions, making misselection unlikely.

Naming Consistency5/5

All tools follow a consistent 'vm_' prefix with descriptive action suffixes (e.g., vm_exec, vm_file_pull, vm_snapshot). The naming pattern is perfectly uniform throughout the set, using snake_case consistently without any deviations or mixed conventions.

Tool Count5/5

With 9 tools, this is well-scoped for remote host/VM management. Each tool earns its place by covering essential operations like execution, file management, snapshot handling, and status monitoring. The count is neither too thin nor excessive for the domain.

Completeness5/5

The toolset provides complete coverage for remote VM/container management. It includes execution, bidirectional file transfer, file reading/writing, instance listing, snapshot creation/restoration, and status checking. There are no obvious gaps or missing operations that would hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues