kimo mcp
kimo mcp speaks MCP on stdin/stdout (ADR 0013 §8). Agents get the same tool set as the
desktop app (kimo_get_state, kimo_open, kimo_query, kimo_apply_ops, kimo_render, …)
and read the guides with kimo_read_docs (also in docs/agents).
On this page1 section
- Auto (default). When the Kimo app is running (
~/.kimo/mcp/endpoint.jsonnames a live pid and the socket accepts thekimo/hellowith the token from~/.kimo/mcp/token), it relays to the app. Agent edits then appear live in the editor, with the app's permissions and approval prompts. Otherwise it runs headless. --attach. Relay only. Without the app,initializeandtools/listare answered locally and every tool call returnsAPP_NOT_RUNNING. It attaches when the app starts and replays the session'sinitialize. If the app restarts, calls in flight fail withTIMEOUT(retryable) and the relay reconnects for 30 s.--headless. Files are opened in memory by this process. It takes the file's lease (kimo mcp (headless)), so the app and other processes see the file as locked. It saves atomically with read-back, autosaves after 2 s idle (--no-autosaveleaves saving tokimo_save), and saves on exit, or writes~/.kimo/recovery/<id>.kimoif that fails. There is no UI, so anything that would need an approval is denied.--allow read|edit|edit+deletesets the permission level (defaultedit+delete).--files <glob>sets the file allow-list, repeatable (default<cwd>/**). A glob passed to--allowis also accepted (ADR spelling).
The process exits when stdin closes or when its parent process disappears.
Installing into agent hosts
kimo mcp install # every agent host found on this machinekimo mcp install --host claude-code # or codex, gemini, cursor, vscode, allkimo mcp install --project --dir . # project files (.mcp.json, .codex/config.toml, …)kimo mcp install --dry-run # show the change, write nothingkimo mcp status # installed / outdated / not installed, per hostkimo mcp remove --host all
| Host | User scope (default) | Project scope |
|---|---|---|
| Claude Code | ~/.claude.json → mcpServers.kimo | .mcp.json |
| Codex | ~/.codex/config.toml → [mcp_servers.kimo] | .codex/config.toml |
| Gemini CLI | ~/.gemini/settings.json → mcpServers.kimo | .gemini/settings.json |
| Cursor | ~/.cursor/mcp.json → mcpServers.kimo | .cursor/mcp.json |
| VS Code | user mcp.json (macOS ~/Library/Application Support/Code/User/) → servers.kimo | .vscode/mcp.json |
~/.claude.json → mcpServers.kimo.mcp.json~/.codex/config.toml → [mcp_servers.kimo].codex/config.toml~/.gemini/settings.json → mcpServers.kimo.gemini/settings.json~/.cursor/mcp.json → mcpServers.kimo.cursor/mcp.jsonmcp.json (macOS ~/Library/Application Support/Code/User/) → servers.kimo.vscode/mcp.jsonRules: the installer changes only the kimo entry and keeps every other key, entry and the
file's indentation and permissions. It backs up to ~/ before
each write and writes atomically. Running it twice changes nothing. A file it cannot parse
(JSON with comments, broken TOML) is never rewritten: it prints the snippet to paste instead
and exits 1.
Claude Code and ~/.claude.json. Claude Code rewrites this file often. Kimo keeps the
user scope as the default, because that is where Claude Code users expect servers. Every write
is compare-and-swap: the file is re-read just before the atomic rename, and if Claude Code
changed it in the meantime, the edit is recomputed from the new content (up to 5 times). A
concurrent write is merged, never lost. Use --project for a checked-in .mcp.json instead.
Which command is written. If the Kimo app is installed, the installer writes its bundled
kimo-mcp shim (/, also looked up in
Contents/Resources/, ~/Applications, /usr/bin, /opt/Kimo and %LOCALAPPDATA%\Programs\Kimo)
with --client <host>. Otherwise it writes bunx @kimo/cli mcp --client <host>. Override the
command with --command <path> or $KIMO_MCP_SHIM, or force the CLI with --cli. Re-running
install after installing the app switches existing entries over (status shows them as
outdated until then). --transport http writes the Streamable HTTP entry with the per-host
token from ~/.kimo/mcp/http-tokens.json (turn on HTTP in Settings › Agents first).