Model Context Protocol (MCP) server for interacting with the Coda API. Allows AI assistants to perform actions on Coda documents and pages.
coda_list_documents: List all documents available to the usercoda_list_pages: List all pages within a document with paginationcoda_create_page: Create a new page with optional parent page and markdown contentcoda_get_page_content: Get page content as markdowncoda_replace_page_content: Replace page content with new markdowncoda_append_page_content: Append markdown content to a pagecoda_duplicate_page: Duplicate an existing pagecoda_rename_page: Rename a pagecoda_peek_page: Preview the first N lines of a pagecoda_resolve_link: Resolve metadata from a Coda browser link
Add to your MCP configuration:
{
"mcpServers": {
"coda": {
"command": "npx",
"args": ["-y", "coda-mcp@latest"],
"env": {
"CODA_API_TOKEN": "your_coda_api_key"
}
}
}
}Get your API key from Coda account settings.
Deploy to Vercel to use with Claude.ai web application.
- Go to vercel.com/new
- Import this repository from GitHub
- Vercel will detect the project automatically
In Vercel project settings, go to Settings → Environment Variables and add:
API_KEY: Your Coda API key from https://coda.io/account- Select Production environment
- Save
Note: The server runs in authless mode. Your Vercel URL acts as the security token - keep it private.
Vercel will automatically deploy. Your deployment will be at: https://your-project.vercel.app
- Go to Claude.ai Settings
- Navigate to Connectors (under Custom Connectors)
- Click Add Connector
- Enter your MCP server URL:
https://your-project.vercel.app - Click Connect
Visit https://your-project.vercel.app/health - you should see:
{
"status": "ok",
"server": "coda-mcp",
"version": "1.5.1"
}Requirements: Node.js 24+ (use nvm use to switch)
# Install dependencies
yarn install
# Create .env file with your API key
cp .env.example .env
# Edit .env and add your Coda API key
# Build stdio version (for Claude Desktop)
yarn build
# Test HTTP server locally (for Claude.ai web)
yarn build:http
yarn start:httpLocal server runs at http://localhost:3000
coda-mcp/
├── src/
│ ├── index.ts # Stdio server (Claude Desktop)
│ ├── http.ts # HTTP/SSE server (standalone)
│ ├── server.ts # Core MCP server logic
│ └── client/ # Auto-generated Coda API client
│
├── api/
│ └── mcp.ts # Vercel serverless function
│
└── dist/ # Compiled output (gitignored)
| File | Transport | Use Case |
|---|---|---|
src/index.ts |
stdio | Claude Desktop spawns as child process |
src/http.ts |
HTTP/SSE | Web server (deployed to Vercel/Railway/etc) |
Both use the same core logic in src/server.ts.
src/http.ts implements:
- Full OAuth 2.1 discovery endpoints (
/.well-known/*) - Dynamic Client Registration (
/register) - Authorization & token endpoints (
/authorize,/token) - MCP SSE transport at root (
/)
Important: This server runs in authless mode for simplicity. Your Vercel URL is effectively your access token - anyone with the URL can access your Coda account.
Security recommendations:
- Keep your Vercel URL private
- Use Vercel's domain obfuscation features
- For production, implement OAuth following the MCP auth spec
- Verify the URL in Claude.ai is exactly
https://your-project.vercel.app/api/mcp - Don't add
/healthor query parameters - Check that
API_KEYenvironment variable is set in Vercel
- Verify
CODA_API_TOKENis set in Vercel environment variables - Test your key at https://coda.io/apis/v1/docs
- Check health endpoint:
https://your-project.vercel.app/api/mcp/health - Verify URL in Claude.ai settings is correct
- Check Vercel logs in dashboard for errors
This project requires Node.js 24 (not v25). Run nvm use to switch automatically.
MIT