Skip to main content
Glama

mcp-coda

PyPI version PyPI downloads Python License: MIT CI MCP Registry

Install: uvx mcp-coda | PyPI | MCP Registry | Changelog

mcp-coda is a Model Context Protocol (MCP) server for the Coda API54 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

Install in Cursor

Install in VS Code Install in VS Code Insiders

Tip: For other AI assistants (Claude Code, Windsurf, IntelliJ, Gemini CLI), visit the Coda MCP Installation Gateway.

Prerequisite: Install uv first (required for all uvx install flows). Install uv.

Claude Code

claude mcp add coda -- uvx mcp-coda

Windsurf & IntelliJ

Windsurf: Add to ~/.codeium/windsurf/mcp_config.json IntelliJ: Add to Settings | Tools | MCP Servers

Note: The actual server config starts at coda inside the mcpServers object.

{
  "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-coda

pip / uv

uv pip install mcp-coda

Related MCP server: GitBook MCP Server

Configuration

Variable

Required

Default

Description

CODA_API_TOKEN

Yes

-

Coda API token (get one here)

CODA_READ_ONLY

No

false

Set to true to disable write operations

CODA_BASE_URL

No

https://coda.io/apis/v1

API base URL

CODA_TIMEOUT

No

30

Request timeout in seconds

CODA_SSL_VERIFY

No

true

Set to false to skip SSL verification

Supported Token Types

The server checks these environment variables in order — first match wins:

  1. CODA_API_TOKEN

  2. CODA_TOKEN

  3. CODA_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_desktop_config.json

Claude Code

Yes

claude mcp add

Cursor

Yes

One-click deeplink or .cursor/mcp.json

VS Code Copilot

Yes

One-click deeplink or .vscode/mcp.json

Windsurf

Yes

~/.codeium/windsurf/mcp_config.json

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

coda_whoami

Get current user info

coda_resolve_browser_link

Convert browser URL to API IDs

coda_get_mutation_status

Check async write status

coda_rate_limit_budget

Get remaining rate limit budget

Docs

Tool

Description

coda_list_docs

List accessible docs

coda_get_doc

Get doc metadata

coda_create_doc

Create a new doc

coda_update_doc

Update doc title/icon

coda_delete_doc

Delete a doc

Pages

Tool

Description

coda_list_pages

List pages in a doc

coda_get_page

Get page metadata

coda_create_page

Create a page

coda_update_page

Update page name/content

coda_delete_page

Delete a page

coda_get_page_content

Read page content

coda_delete_page_content

Clear page content

coda_export_page

Export page as HTML or markdown

Tables

Tool

Description

coda_list_tables

List tables and views

coda_get_table

Get table metadata

coda_list_columns

List columns in a table

coda_get_column

Get column metadata

Rows

Tool

Description

coda_list_rows

List and filter rows

coda_get_row

Get a single row

coda_insert_rows

Insert or upsert rows

coda_update_row

Update a row

coda_delete_row

Delete a row

coda_delete_rows

Bulk delete rows by filter

coda_push_button

Push a button column value

Formulas

Tool

Description

coda_list_formulas

List named formulas

coda_get_formula

Get formula value

Controls

Tool

Description

coda_list_controls

List controls

coda_get_control

Get control value

Permissions

Tool

Description

coda_get_sharing_metadata

Get sharing config

coda_list_permissions

List ACL entries

coda_add_permission

Grant access

coda_delete_permission

Revoke access

coda_search_principals

Search users/groups

coda_get_acl_settings

Get ACL settings

Publishing

Tool

Description

coda_list_categories

List publishing categories

coda_publish_doc

Publish a doc

coda_unpublish_doc

Unpublish a doc

Folders

Tool

Description

coda_list_folders

List folders

coda_get_folder

Get folder details

coda_create_folder

Create a folder

coda_update_folder

Rename a folder

coda_delete_folder

Delete a folder

Automations

Tool

Description

coda_trigger_automation

Trigger an automation rule

Analytics

Tool

Description

coda_list_doc_analytics

Doc usage metrics

coda_get_doc_analytics_summary

Aggregated doc metrics

coda_list_page_analytics

Page usage metrics

coda_list_pack_analytics

Pack usage metrics

coda_get_pack_analytics_summary

Aggregated pack metrics

coda_list_pack_formula_analytics

Formula-level metrics

coda_get_analytics_updated

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

Coda Docs

List of docs accessible to the current API token

coda://docs/{doc_id}/schema

Coda Doc Schema

Table and column definitions for a doc

Rules (static knowledge)

URI

Name

Description

resource://rules/coda-doc-structure

Coda Doc Structure

Doc/page hierarchy, page types, naming, when to split docs vs folders

resource://rules/coda-table-design

Coda Table Design

Column types, relations, display columns, row limits, table vs view

resource://rules/coda-permissions

Coda Permission Model

Doc-level vs page-level locking, ACL, domain sharing, principal types

resource://rules/coda-automations

Coda Automation Patterns

Webhooks, button triggers, rate limits, payload design, idempotency

resource://rules/coda-api-patterns

Coda API Best Practices

Rate limits, pagination, async mutations, error handling, retry

Guides (how-to)

URI

Name

Description

resource://guides/row-operations

Row Operations Guide

Insert vs upsert, bulk ops, key columns, cell formats, delete strategies

resource://guides/page-content

Page Content Guide

HTML vs markdown, insert modes, export workflows

resource://guides/formula-controls

Formulas & Controls Guide

Named formulas, control types, reading values

resource://guides/publishing-analytics

Publishing & Analytics Guide

Publishing categories, gallery settings, analytics date filtering

resource://guides/folder-organization

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_doc_structure

doc_id

Analyze a doc's page hierarchy, table layout, and organization

design_table_schema

description

Design a table schema from a natural language description

migrate_spreadsheet

doc_id, source_format

Guide for migrating CSV/Excel/Sheets data into Coda

setup_automation

doc_id, trigger_type

Set up a webhook/button/time automation with error handling

audit_permissions

doc_id

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=true to 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, and idempotentHint for client-side permission prompts.

  • SSL verification: CODA_SSL_VERIFY=true by 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

CODA_READ_ONLY=true blocks all write tools

MCP annotations

readOnlyHint, destructiveHint, idempotentHint for client-side prompts

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-only

The server loads .env files from the working directory automatically via python-dotenv.

  • 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

Install Server
A
license - permissive license
A
quality
D
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
17Releases (12mo)
Commit activity

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

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