Connect InnerSheet to your AI client
One server, every client. Desktop apps and CLIs launch InnerSheet locally over stdio; web chats reach it over HTTPS once you deploy it in remote mode.
InnerSheet speaks standard MCP over stdio, so any client that can launch a local process can use it. If your client can run a program, it works — the only difference between clients is where the configuration lives. Replace /path/to/innersheet in the snippets below with your real folder.
Compatibility at a glance
| Client | Config location | Status | Notes |
|---|---|---|---|
| Claude Desktop | claude_desktop_config.json | Supported | mcpServers block; restart after editing |
| Claude Code | claude mcp add / .mcp.json | Supported | One command; project file can be committed |
| Cursor | .cursor/mcp.json | Supported | Same JSON as Claude Desktop |
| Codex (OpenAI CLI) | ~/.codex/config.toml | Supported | [mcp_servers.innersheet] table (snake_case) |
| VS Code + GitHub Copilot | .mcp.json / .vscode/mcp.json | Supported | Agent mode required; see the key-name warning below |
| Gemini CLI | ~/.gemini/settings.json | Supported | gemini mcp add -s user |
| Windsurf · Cline · Zed · JetBrains | Client MCP settings | Standard MCP | Same stdio command + env; see each client's MCP docs |
| ChatGPT (web) | Plugins / Developer mode | Remote only | Needs a public HTTPS endpoint — deploy in HTTP mode |
| Claude.ai (web) | Settings → Connectors | Remote only | Add custom connector with the server URL |
| Muse | Custom connector flow | Remote only | No URL field; connect the deployed server as a custom connector |
| Gemini (web app) | Settings → Connected Apps | US-only | Custom apps need a personal account, age 18+, US location, English |
| Client type | Runs on | How it reaches InnerSheet |
|---|---|---|
| Desktop apps and CLIs | Your machine | Launches InnerSheet as a local process (stdio) |
| Web chats | The cloud | Only a server at a public HTTPS address |
That is why InnerSheet v2 ships a Streamable HTTP mode alongside the local one — the same code, a different transport, protected by an API key.
Used the installer? This entry is already in place (it uses uv run, see what the installer writes) — just restart Claude Desktop.
Add this to claude_desktop_config.json (Claude Desktop → Settings → Developer → Edit Config), then fully quit and restart Claude Desktop.
{
"mcpServers": {
"innersheet": {
"command": "/path/to/innersheet/.venv/bin/python",
"args": ["/path/to/innersheet/server.py"],
"env": {
"GOOGLE_OAUTH_CLIENT_SECRETS": "/path/to/client_secret.json"
}
}
}
}On macOS and Linux the Python path is .venv/bin/python. On Windows it is C:\innersheet\.venv\Scripts\python.exe — note the doubled backslashes inside JSON. If you installed with uv, you can also use uv as the command with ["run", "/path/to/innersheet/server.py"] as the arguments.
One command from your terminal. Export the environment variable first, or pass it with -e:
claude mcp add innersheet -e GOOGLE_OAUTH_CLIENT_SECRETS=/path/to/client_secret.json -- /path/to/innersheet/.venv/bin/python /path/to/innersheet/server.py- Check it with
claude mcp list. - For a project the whole team shares, commit a
.mcp.jsonfile with the samemcpServersblock as Claude Desktop — teammates only need their ownclient_secret.json. - InnerSheet also ships as a Claude Code plugin bundle (skill + hooks); see the Tools page for what the plugin adds.
Create .cursor/mcp.json in your project (or Cursor → Settings → MCP → Add):
{
"mcpServers": {
"innersheet": {
"command": "/path/to/innersheet/.venv/bin/python",
"args": ["/path/to/innersheet/server.py"],
"env": {
"GOOGLE_OAUTH_CLIENT_SECRETS": "/path/to/client_secret.json"
}
}
}
}Cursor also imports Claude Code hooks from ~/.claude/settings.json when Third-Party Imports is on (it is by default), so the InnerSheet safety hooks work in Cursor without extra configuration.
Add this to ~/.codex/config.toml (or run codex mcp add). Watch the table name — it is snake_case mcp_servers, not mcpServers; a typo means the section is silently ignored.
[mcp_servers.innersheet]
command = "/path/to/innersheet/.venv/bin/python"
args = ["/path/to/innersheet/server.py"]
[mcp_servers.innersheet.env]
GOOGLE_OAUTH_CLIENT_SECRETS = "/path/to/client_secret.json"Verify with codex mcp list, then type /mcp inside Codex to see the server and its tools. A project can scope the same table in .codex/config.toml, which Codex only reads for trusted projects.
Preferred: the portable .mcp.json at the workspace root, which uses the top-level key mcpServers. The older .vscode/mcp.json uses servers instead — copying an entry between the two files without renaming the key is the most common silent failure.
{
"mcpServers": {
"innersheet": {
"command": "/path/to/innersheet/.venv/bin/python",
"args": ["/path/to/innersheet/server.py"],
"env": {
"GOOGLE_OAUTH_CLIENT_SECRETS": "/path/to/client_secret.json"
}
}
}
}Then switch Copilot Chat to Agent mode — MCP tools do not run in Ask mode. The Copilot CLI reads the same entry from ~/.copilot/mcp-config.json. If Copilot comes from an organisation, the "MCP servers in Copilot" policy must be enabled by an admin, and it is disabled by default.
One command (-s user makes it available everywhere), or edit ~/.gemini/settings.json by hand:
gemini mcp add -s user innersheet -e GOOGLE_OAUTH_CLIENT_SECRETS=/path/to/client_secret.json /path/to/innersheet/.venv/bin/python /path/to/innersheet/server.pyRestart gemini and run /mcp — InnerSheet should show as CONNECTED with its tools listed underneath. Note that Gemini CLI access for free and individual paid accounts moved to the Antigravity CLI in June 2026, so check which CLI your plan uses before setting this up.
Web chats: remote mode
ChatGPT, Claude.ai, the Gemini web app and Muse all run in the cloud, so none of them can launch a program on your computer. To use InnerSheet there:
- Deploy it as a remote server over Streamable HTTP — FastMCP supports the transport natively, so the same code serves both modes.
- Protect it with an API key.
- Add the public URL where the chat expects it:
| Web chat | Where to add the URL | Requirements |
|---|---|---|
| ChatGPT | Plugins / Developer mode | Pro plan and up |
| Claude.ai | Settings → Connectors → Add custom connector | Free allows one custom connector |
| Gemini web app | Settings → Connected Apps → Custom apps | Personal account, 18+, US, English, Keep Activity on |
| Muse | Custom-connector flow | — |
Never expose it without authentication. A remote Sheets server holds your Google credentials: anyone with the URL could read and write your sheets. The security page covers remote deployment in detail.
Trust prompts and tool limits
Every client asks you to approve a new MCP server at least once:
- Claude Code and Cursor show a trust prompt for project-level configs.
- Codex requires you to trust new hooks with
/hooks. - Copilot may ask per tool call in Agent mode.
That friction is deliberate: an MCP server runs with your privileges, so a client that silently loaded any server it found would be a security hole. InnerSheet's 24 tools are well inside the per-request tool caps clients enforce (VS Code, for example, allows 128 tools per request), so you won't hit a ceiling.
A tool doesn't appear after setup?
- Restart the client first — most clients only read MCP configuration at startup.
- Then check the command path in the config — a wrong Python path is the cause in nine cases out of ten.
Every other error, with its fix, is on the Troubleshooting page.