coda-mcp
Provides tools for interacting with Coda.io documents, tables, and rows, enabling CRUD operations and content retrieval.
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., "@coda-mcplist my 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.
coda-mcp
MCP (Model Context Protocol) server for Coda.io API. Enables AI assistants to read and write Coda documents, tables, and rows.
Features
Full CRUD operations on Coda tables
Document and page content retrieval
Formula and control access
Async export workflow for canvas pages
Rate limit handling
Related MCP server: Coda MCP Server
Quick Start
1. Install
cargo install coda-mcp2. Get API Token
Get your token from coda.io/account → API settings.
3. Configure Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or ~/.config/claude/claude_desktop_config.json (Linux):
{
"mcpServers": {
"coda": {
"command": "/Users/YOUR_USERNAME/.cargo/bin/coda-mcp",
"env": {
"CODA_API_TOKEN": "your_token_here"
}
}
}
}4. Restart Claude Desktop
The Coda tools will now be available.
Installation
From crates.io (Recommended)
cargo install coda-mcpFrom Source
git clone https://github.com/nkpar/coda-mcp.git
cd coda-mcp
cargo build --releaseBinary will be at ./target/release/coda-mcp
Pre-built Binaries
Check the Releases page.
Docker
No Rust toolchain required. Multi-arch image (amd64 + arm64), ~3MB.
docker pull ghcr.io/nkpar/coda-mcp:latestClaude Code (CLI):
claude mcp add coda -e CODA_API_TOKEN=your_token_here -- docker run --rm -i -e CODA_API_TOKEN ghcr.io/nkpar/coda-mcp:latestClaude Desktop config:
{
"mcpServers": {
"coda": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "CODA_API_TOKEN", "ghcr.io/nkpar/coda-mcp:latest"],
"env": {
"CODA_API_TOKEN": "your_token_here"
}
}
}
}One-Click Install Script
For Claude Desktop with automatic configuration:
git clone https://github.com/nkpar/coda-mcp.git
cd coda-mcp
./scripts/install.shConfiguration
1. Get API Token
Get your Coda API token from coda.io/account → API settings.
Important: For write operations (create_doc, delete_doc, add_row, update_row, delete_row), ensure your token has write permissions enabled. Read-only tokens will return 403 Forbidden for these operations.
2. Configure MCP Client
Claude Desktop (~/.config/claude/claude_desktop_config.json):
{
"mcpServers": {
"coda": {
"command": "/path/to/coda-mcp",
"env": {
"CODA_API_TOKEN": "your_token_here"
}
}
}
}Claude Code (CLI):
# Binary
claude mcp add coda -e CODA_API_TOKEN=your_token_here -- $HOME/.cargo/bin/coda-mcp
# Or via Docker (no Rust required)
claude mcp add coda -e CODA_API_TOKEN=your_token_here -- docker run --rm -i -e CODA_API_TOKEN ghcr.io/nkpar/coda-mcp:latestOr via .mcp.json in project root:
{
"mcpServers": {
"coda": {
"command": "/path/to/coda-mcp",
"env": {
"CODA_API_TOKEN": "your_token_here"
}
}
}
}Environment Variables
Variable | Required | Description |
| Yes | Your Coda API token |
| No | API base URL (default: |
| No | Log level: |
Tools
Tool | Description |
| List available documents |
| Get document details |
| Search documents by name |
| Create a new document (optional: folder, template, timezone) |
| Delete a document (permanent) |
| List pages in a document |
| Get page content (HTML) |
| List tables in a document |
| Get table details |
| List columns in a table |
| Get rows with optional filtering |
| Get a specific row |
| Add a new row |
| Update an existing row |
| Delete a row |
| List named formulas |
| Get formula value |
| List controls (buttons, sliders) |
Usage Examples
# List all documents
list_docs
# Create a new document
create_doc title="My New Doc"
# Create from template in specific folder
create_doc title="Project Plan" folder_id="fl-abc" source_doc="template-xyz"
# Delete a document (permanent!)
delete_doc doc_id="AbCdEfGh"
# Get rows from a table
get_rows doc_id="AbCdEfGh" table_id="grid-xyz" limit=50
# Filter rows
get_rows doc_id="AbCdEfGh" table_id="grid-xyz" query="Status:Active"
# Add a row
add_row doc_id="AbCdEfGh" table_id="grid-xyz" cells={"Name": "John", "Email": "john@example.com"}
# Get page content
get_page doc_id="AbCdEfGh" page_id="canvas-xyz"Rate Limits
Coda API has rate limits:
Reading: 100 requests per 6 seconds
Writing: 10 requests per 6 seconds
Write operations return HTTP 202 (queued). Changes may take a few seconds to appear.
Security
API tokens are redacted from all log output
Download URLs validated against trusted hosts only (coda.io, codahosted.io, storage.googleapis.com)
Request limits capped at 1000 to prevent resource exhaustion
Install script uses silent input for tokens and sets restrictive file permissions (600)
Development
# Build
cargo build --release
# Run unit & integration tests
cargo test
# Run E2E tests (requires write-enabled API token)
export $(cat .env | xargs) && cargo test --test e2e_tests -- --ignored
# Run with debug logging
RUST_LOG=debug cargo run
# Format & lint
cargo fmt && cargo clippySee DEVELOPER.md for API details and CONTRIBUTING.md for contribution guidelines.
License
MIT License. See LICENSE for details.
This server cannot be installed
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/nkpar/coda-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server