Claude Desktop Integration
Claude Desktop speaks the Model Context Protocol. Point it at cmdop mcp stdio and the same tools your local agent uses — terminal, files, ask_agent, board — appear inside Claude.
Prerequisites
Before you start, make sure:
- CMDOP is installed and on your shell
PATH(which cmdopshould print a path). - You have signed in at least once:
cmdop login. - The daemon is running on the machine you want to expose:
cmdop agent startandcmdop agent statusreportsONLINE. - Claude Desktop is installed and has been launched at least once (so the config directory exists).
Where Claude Desktop reads MCP config
Claude Desktop loads MCP servers from claude_desktop_config.json:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
If the file does not exist yet, create it with the snippet below. If it already has mcpServers, merge the cmdop entry in.
Add the CMDOP server entry
{
"mcpServers": {
"cmdop": {
"command": "cmdop",
"args": ["mcp", "stdio"]
}
}
}Save the file and fully restart Claude Desktop (Quit, not just close the window). Claude spawns cmdop mcp stdio as a subprocess and speaks JSON-RPC over its stdin/stdout.
Claude Desktop launches MCP servers from a non-interactive shell. Your interactive shell’s PATH does not apply. If cmdop lives somewhere unusual (Homebrew on Apple Silicon at /opt/homebrew/bin, for example), use the absolute path: "command": "/opt/homebrew/bin/cmdop".
Verify it loaded
Open Claude Desktop and start a new chat. The tools picker (the slider icon in the input box) should list a cmdop group with entries like execute_command, read_file, ask_agent, issue_create. If the group is empty or missing, jump to Troubleshooting.
Ask Claude to confirm: “Can you list the cmdop tools you have access to?”
Permissions and the gate
Every tool call Claude makes goes through CMDOP’s permission gate. The gate fires for remote callers — Claude Desktop counts as a remote caller because it is not running inside cmdop chat.
Recommended setup for an exposed machine like vps-audi:
# Strict default — explicit allow required
cmdop permissions mode strict
# Allow read-only inspection
cmdop permissions allow 'read_file(/var/log/**)'
cmdop permissions allow 'execute_command(uptime)'
cmdop permissions allow 'execute_command(systemctl status *)'
# Tail the audit log to see what Claude tries
cmdop permissions audit --tail 20 -fA denial in Claude looks like a tool error. Run cmdop permissions audit --tail 5 to see why.
Choosing the workspace
The MCP server uses the daemon’s currently active workspace. Switch on the daemon machine, then restart Claude Desktop:
cmdop connect workspace use acme-prod
# Restart Claude Desktop so it re-spawns cmdop mcp stdioCross-machine reach from inside Claude
Because CMDOP exposes ask_agent and ask_agents, Claude can fan out from your laptop to remote machines through the same single MCP entry:
You: ask the agent on mac-studio for its uptime, and on vps-audi for the
last 50 lines of /var/log/syslog. Summarize both.Claude calls ask_agent("mac-studio", ...) and ask_agent("vps-audi", ...) in parallel. Both go through each receiver’s permission gate. See Agent Communication for the full model.
Updating CMDOP
Claude Desktop holds the cmdop binary open while a server is registered. Quit Claude Desktop before running cmdop update apply, then relaunch.