MCP FAQ
TukeySheets ships an in-process MCP server and one-click toggles for the major MCP clients. The toggles are mostly "just work", but a few clients have setup quirks that bite people on first use. Everything on this page is from the field.
The TukeySheets MCP server
When ai.mcp_enabled is true(Settings → AI → "Enable MCP server"), TukeySheets binds 127.0.0.1:<mcp_port> and exposes a single POST /mcp endpoint that speaks the MCP JSON-RPC protocol. The server lives inside the app process — it starts when the first window opens and stops when the last window quits. It is loopback-only and unauthenticated; see the FAQ below for the security implications.
Changing the port in Settings restarts the server automatically and rewrites every enabled client's config with the new URL. You do not need to manually re-toggle anything.
Per-client cheat sheet
For each supported client: where TukeySheets writes the entry, what transport it uses, and what you need preinstalled.
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json%LOCALAPPDATA%\Packages\Claude_<hash>\LocalCache\Roaming\Claude\claude_desktop_config.json (MSIX / Microsoft Store) OR %APPDATA%\Claude\claude_desktop_config.json (traditional installer)~/.config/Claude/claude_desktop_config.json- Claude Desktop only speaks stdio — there is no native remote-HTTP option, so the npx shim is required even though TukeySheets is running on your own machine.
- Windows installs come in two flavors: the traditional installer (config under %APPDATA%\Claude\) and the MSIX / Microsoft Store package (config under %LOCALAPPDATA%\Packages\Claude_<hash>\LocalCache\Roaming\Claude\). The MSIX package's view of %APPDATA% is virtualized by Windows into that LocalCache path, so a non-packaged app like TukeySheets has to write directly to the package folder — writing to plain %APPDATA%\Claude\ is invisible to MSIX Claude. TukeySheets auto-detects which is installed and writes to the right one; if you have both installed (unusual), it prefers the MSIX path.
- After toggling the switch on, you must FULLY QUIT Claude Desktop (Cmd-Q on macOS; right-click the taskbar tray icon on Windows → Quit) and relaunch. Closing the window only hides it; the MCP config is read once at process start.
- If TukeySheets does not show up in Claude Desktop's tool list, check the logs. Traditional installer: %APPDATA%\Claude\logs\. MSIX: %LOCALAPPDATA%\Packages\Claude_<hash>\LocalCache\Roaming\Claude\logs\. macOS: ~/Library/Logs/Claude/. A missing `npx` shows up as an ENOENT spawn error.
- The first connection after a fresh Node install will pause for a few seconds while npx fetches the `mcp-remote` package from npm. Subsequent launches reuse the cached copy.
Claude Code (CLI)
~/.claude.json%USERPROFILE%\.claude.json~/.claude.json- Same stdio constraint as Claude Desktop, so the same npx requirement applies.
- Claude Code re-reads ~/.claude.json on every invocation, so toggling the switch takes effect on your next `claude` command — no restart dance needed.
Codex CLI
~/.codex/config.toml%USERPROFILE%\.codex\config.toml~/.codex/config.toml- Codex speaks remote HTTP natively, so TukeySheets writes a bare [mcp_servers.tukeysheets] TOML table with a `url` field — no npx, no Node.
- If you have hand-edited config.toml, TukeySheets preserves comments and ordering on update (it edits the document, it does not rewrite it).
Gemini CLI
~/.gemini/settings.json%USERPROFILE%\.gemini\settings.json~/.gemini/settings.json- Writes a bare `{ "url": "http://127.0.0.1:<port>/mcp" }` entry under mcpServers.tukeysheets.
OpenCode
~/.config/opencode/opencode.json%APPDATA%\opencode\opencode.json~/.config/opencode/opencode.json- The entry uses `type: "remote"` (OpenCode's convention), not `"http"`. The toggle field is also set to `enabled: true` so OpenCode loads the server immediately.
Kiro CLI
~/.kiro/settings/mcp.json%USERPROFILE%\.kiro\settings\mcp.json~/.kiro/settings/mcp.json- Bare `{ "url": ... }` entry under mcpServers.tukeysheets — same shape as Gemini.