Sympathy-MCP
# 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
Scored across 9 tools
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.
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.
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.
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.