mcp-coda
Provides tools for managing Coda documents, pages, tables, rows, formulas, controls, permissions, folders, publishing, automations, and analytics via the Coda API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-codalist my Coda documents"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-coda
Install: uvx mcp-coda | PyPI | MCP Registry | Changelog
mcp-coda is a Model Context Protocol (MCP) server for the Coda API — 54 tools, 12 resources, and 5 prompts covering docs, pages, tables, rows, formulas, controls, permissions, folders, publishing, automations, and analytics. Works with Claude Desktop, Claude Code, Cursor, Windsurf, VS Code Copilot, and any MCP-compatible client.
Built with FastMCP, httpx, and Pydantic.
1-Click Installation
Tip: For other AI assistants (Claude Code, Windsurf, IntelliJ, Gemini CLI), visit the Coda MCP Installation Gateway.
Prerequisite: Install
uvfirst (required for alluvxinstall flows). Install uv.
Claude Code
claude mcp add coda -- uvx mcp-codaWindsurf & IntelliJ
Windsurf: Add to ~/.codeium/windsurf/mcp_config.json
IntelliJ: Add to Settings | Tools | MCP Servers
Note: The actual server config starts at
codainside themcpServersobject.
{
"mcpServers": {
"coda": {
"command": "uvx",
"args": ["mcp-coda"],
"env": {
"CODA_API_TOKEN": "your-token-here"
}
}
}
}Gemini CLI
gemini mcp add -e CODA_API_TOKEN=your-token-here coda uvx mcp-codapip / uv
uv pip install mcp-codaRelated MCP server: GitBook MCP Server
Configuration
Variable | Required | Default | Description |
| Yes | - | Coda API token (get one here) |
| No |
| Set to |
| No |
| API base URL |
| No |
| Request timeout in seconds |
| No |
| Set to |
Supported Token Types
The server checks these environment variables in order — first match wins:
CODA_API_TOKENCODA_TOKENCODA_PAT
Tokens are generated at coda.io/account#apiSettings. Tokens grant access to all docs accessible by the token owner. There are no scope restrictions — access is controlled at the doc level via Coda's sharing settings.
Compatibility
Client | Supported | Install Method |
Claude Desktop | Yes |
|
Claude Code | Yes |
|
Cursor | Yes | One-click deeplink or |
VS Code Copilot | Yes | One-click deeplink or |
Windsurf | Yes |
|
Any MCP client | Yes | stdio or HTTP transport |
Tools (54)
Category | Count | Tools |
Account | 4 | whoami, resolve browser link, mutation status, rate limit budget |
Docs | 5 | list, get, create, update, delete |
Pages | 8 | list, get, create, update, delete, get content, delete content, export |
Tables | 4 | list tables, get table, list columns, get column |
Rows | 7 | list, get, insert/upsert, update, delete, bulk delete, push button |
Formulas | 2 | list, get |
Controls | 2 | list, get |
Permissions | 6 | sharing metadata, list, add, delete, search principals, ACL settings |
Publishing | 3 | list categories, publish, unpublish |
Folders | 5 | list, get, create, update, delete |
Automations | 1 | trigger automation |
Analytics | 7 | doc analytics, doc summary, page analytics, pack analytics, pack summary, formula analytics, analytics updated |
Account
Tool | Description |
| Get current user info |
| Convert browser URL to API IDs |
| Check async write status |
| Get remaining rate limit budget |
Docs
Tool | Description |
| List accessible docs |
| Get doc metadata |
| Create a new doc |
| Update doc title/icon |
| Delete a doc |
Pages
Tool | Description |
| List pages in a doc |
| Get page metadata |
| Create a page |
| Update page name/content |
| Delete a page |
| Read page content |
| Clear page content |
| Export page as HTML or markdown |
Tables
Tool | Description |
| List tables and views |
| Get table metadata |
| List columns in a table |
| Get column metadata |
Rows
Tool | Description |
| List and filter rows |
| Get a single row |
| Insert or upsert rows |
| Update a row |
| Delete a row |
| Bulk delete rows by filter |
| Push a button column value |
Formulas
Tool | Description |
| List named formulas |
| Get formula value |
Controls
Tool | Description |
| List controls |
| Get control value |
Permissions
Tool | Description |
| Get sharing config |
| List ACL entries |
| Grant access |
| Revoke access |
| Search users/groups |
| Get ACL settings |
Publishing
Tool | Description |
| List publishing categories |
| Publish a doc |
| Unpublish a doc |
Folders
Tool | Description |
| List folders |
| Get folder details |
| Create a folder |
| Rename a folder |
| Delete a folder |
Automations
Tool | Description |
| Trigger an automation rule |
Analytics
Tool | Description |
| Doc usage metrics |
| Aggregated doc metrics |
| Page usage metrics |
| Pack usage metrics |
| Aggregated pack metrics |
| Formula-level metrics |
| Analytics freshness timestamp |
Resources (12)
The server exposes MCP resources that provide ambient context without consuming tool calls.
Data Resources (live API)
URI | Name | Description |
| Coda Docs | List of docs accessible to the current API token |
| Coda Doc Schema | Table and column definitions for a doc |
Rules (static knowledge)
URI | Name | Description |
| Coda Doc Structure | Doc/page hierarchy, page types, naming, when to split docs vs folders |
| Coda Table Design | Column types, relations, display columns, row limits, table vs view |
| Coda Permission Model | Doc-level vs page-level locking, ACL, domain sharing, principal types |
| Coda Automation Patterns | Webhooks, button triggers, rate limits, payload design, idempotency |
| Coda API Best Practices | Rate limits, pagination, async mutations, error handling, retry |
Guides (how-to)
URI | Name | Description |
| Row Operations Guide | Insert vs upsert, bulk ops, key columns, cell formats, delete strategies |
| Page Content Guide | HTML vs markdown, insert modes, export workflows |
| Formulas & Controls Guide | Named formulas, control types, reading values |
| Publishing & Analytics Guide | Publishing categories, gallery settings, analytics date filtering |
| Folder Organization Guide | Folder CRUD, doc-folder relationships, hierarchy, bulk organization |
Prompts (5)
The server provides MCP prompts — reusable task templates that clients can invoke.
Prompt | Parameters | Description |
|
| Analyze a doc's page hierarchy, table layout, and organization |
|
| Design a table schema from a natural language description |
|
| Guide for migrating CSV/Excel/Sheets data into Coda |
|
| Set up a webhook/button/time automation with error handling |
|
| Audit sharing and permissions, suggest tightening |
Usage Examples
Docs & Pages
"List all my Coda docs"
→ coda_list_docs(is_owner=True)
"Get the content of page 'Sprint Planning' in doc d1"
→ coda_list_pages(doc_id="d1") → find page ID
→ coda_get_page_content(doc_id="d1", page_id_or_name="canvas-abc")
"Create a new doc from a template"
→ coda_create_doc(title="Q1 Planning", source_doc="template-doc-id")Tables & Rows
"List all tables in doc d1"
→ coda_list_tables(doc_id="d1")
"Find rows where Status is 'Done'"
→ coda_list_rows(doc_id="d1", table_id_or_name="Tasks", query="Done")
"Insert a new row into the Tasks table"
→ coda_insert_rows(doc_id="d1", table_id_or_name="Tasks", rows=[{"cells": [{"column": "Name", "value": "New task"}]}])
"Update a row's status"
→ coda_update_row(doc_id="d1", table_id_or_name="Tasks", row_id_or_name="i-abc", row={"cells": [{"column": "Status", "value": "In Progress"}]})Formulas & Controls
"Get the value of the TotalBudget formula"
→ coda_get_formula(doc_id="d1", formula_id_or_name="TotalBudget")
"Check the current value of the DateFilter control"
→ coda_get_control(doc_id="d1", control_id_or_name="DateFilter")Permissions & Sharing
"Share a doc with a teammate"
→ coda_add_permission(doc_id="d1", access="write", principal={"type": "email", "email": "alice@example.com"})
"List who has access to a doc"
→ coda_list_permissions(doc_id="d1")Security Considerations
Token scope: Coda API tokens grant access to all docs the token owner can access. Use a dedicated service account for production deployments to limit exposure.
Read-only mode: Set
CODA_READ_ONLY=trueto disable all write operations (create, update, delete). Read-only mode is enforced server-side before any API call.MCP tool annotations: Each tool declares
readOnlyHint,destructiveHint, andidempotentHintfor client-side permission prompts.SSL verification:
CODA_SSL_VERIFY=trueby default. Only disable for development against local proxies.No credential storage: The server does not persist tokens. Credentials are read from environment variables at startup.
Rate Limits & Permissions
Rate Limits
Coda enforces per-token rate limits (varies by plan). When rate-limited, tools return a 429 error with retry_after seconds. Use coda_rate_limit_budget to check remaining budget before batch operations. Paginated endpoints default to 25 results per page; use limit to adjust.
Async Mutations
Write operations (insert, update, delete rows) are processed asynchronously. Tools return a requestId that can be checked with coda_get_mutation_status to confirm completion.
Required Permissions
Operation | Minimum Coda Doc Role |
List docs, read pages, tables, rows, formulas, controls | Viewer |
Read permissions, analytics | Viewer (doc owner for analytics) |
Create/update pages, insert/update/delete rows | Editor |
Create/delete docs, manage folders | Editor (or doc owner) |
Add/remove permissions, publish/unpublish | Doc Owner |
Trigger automations | Editor |
Access Control
Layer | Mechanism |
Server-level |
|
MCP annotations |
|
Coda token | Doc-level access enforced by Coda's sharing settings |
CLI & Transport Options
# Default: stdio transport (for MCP clients)
uvx mcp-coda
# HTTP transport (SSE or streamable-http)
uvx mcp-coda --transport sse --host 127.0.0.1 --port 8000
uvx mcp-coda --transport streamable-http --port 9000
# CLI overrides for config
uvx mcp-coda --coda-token your-token --read-onlyThe server loads .env files from the working directory automatically via python-dotenv.
Related MCP Servers
mcp-gitlab — GitLab integration (76 tools, 6 resources, 5 prompts)
mcp-atlassian-extended — Jira + Confluence integration (23 tools, 15 resources, 5 prompts)
Development
git clone https://github.com/vish288/mcp-coda.git
cd mcp-coda
uv sync --all-extras
uv run pytest --cov
uv run ruff check .
uv run ruff format --check .License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vish288/mcp-coda'
If you have feedback or need assistance with the MCP directory API, please join our Discord server