This project implements a Model Context Protocol (MCP) server that acts as a bridge to interact with the Coda API. It allows an MCP client (like an AI assistant) to perform actions on Coda pages, such as listing, creating, reading, updating, duplicating, and renaming.
The server exposes the following tools to the MCP client:
coda_list_documents: List or search available documents with optional filteringcoda_get_document: Get detailed information about a specific documentcoda_create_document: Create a new document, optionally from a templatecoda_update_document: Update document properties like title and iconcoda_get_document_stats: Get comprehensive statistics and insights about a document
coda_list_pages: List pages in a document with pagination supportcoda_create_page: Create a new page, optionally under a parent page with initial contentcoda_delete_page: Delete a page from the documentcoda_get_page_content: Retrieve the content of a page as markdowncoda_peek_page: Get a preview of the beginning of a page (limited lines)coda_replace_page_content: Replace the entire content of a page with new markdowncoda_append_page_content: Append new markdown content to the end of a pagecoda_duplicate_page: Create a copy of an existing page with a new namecoda_rename_page: Rename an existing page and optionally update its subtitlecoda_search_pages: Search for pages by name or content within a document
coda_list_tables: List all tables and views in a documentcoda_get_table: Get detailed information about a specific table or viewcoda_get_table_summary: Get a comprehensive summary including row count, columns, and sample datacoda_search_tables: Search for tables by name across a document
coda_list_columns: List all columns in a table with optional visibility filteringcoda_get_column: Get detailed information about a specific column
coda_list_rows: List rows in a table with filtering, pagination, and sortingcoda_get_row: Get detailed information about a specific rowcoda_create_rows: Create or update multiple rows in a table (upsert)coda_update_row: Update a specific row in a tablecoda_delete_row: Delete a specific row from a tablecoda_delete_rows: Delete multiple rows from a tablecoda_bulk_update_rows: Update multiple rows with different values in batch
coda_list_formulas: List all named formulas in a documentcoda_get_formula: Get detailed information about a specific formula
coda_list_controls: List all controls (buttons, sliders, etc.) in a documentcoda_get_control: Get detailed information about a specific controlcoda_push_button: Push a button control in a table row
coda_whoami: Get information about the current authenticated user
Note: This MCP server provides comprehensive CRUD operations for existing Coda elements but cannot create new tables or other canvas elements due to Coda API limitations. Total: 34 tools available.
Add the MCP server to Cursor/Claude Desktop/etc. like so:
{
"mcpServers": {
"coda": {
"command": "npx",
"args": ["-y", "coda-mcp@latest"],
"env": {
"API_KEY": "..."
}
}
}
}Required environment variables:
API_KEY: Your Coda API key. You can generate one from your Coda account settings at https://coda.io/account
This MCP server is also available with Docker:
{
"mcpServers": {
"coda": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "API_KEY", "dustingood/coda-mcp:latest"],
"env": {
"API_KEY": "..."
}
}
}
}-
Prerequisites:
- Node.js
- pnpm
-
Clone the repository:
git clone <repository-url> cd coda-mcp
-
Install dependencies:
pnpm install
-
Build the project:
pnpm build
This compiles the TypeScript code to JavaScript in the
dist/directory.
The MCP server communicates over standard input/output (stdio). To run it, set the environment variables and run the compiled JavaScript file - dist/index.js.
-
Build the project:
pnpm build
-
Test locally:
API_KEY=your-api-key node dist/index.js
When making changes to the codebase that need to be deployed via Docker:
-
Build the project:
pnpm build
-
Build the Docker image:
docker build -t dustingood/coda-mcp:latest . -
Test the Docker image:
docker run -i --rm -e API_KEY=your-api-key dustingood/coda-mcp:latest
-
Push to Docker Hub:
docker push dustingood/coda-mcp:latest
For npm/npx usage:
{
"mcpServers": {
"coda": {
"command": "npx",
"args": ["-y", "coda-mcp@latest"],
"env": {
"API_KEY": "your-api-key-here"
}
}
}
}For Docker usage:
{
"mcpServers": {
"coda": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "API_KEY", "dustingood/coda-mcp:latest"],
"env": {
"API_KEY": "your-api-key-here"
}
}
}
}Note: Replace your-api-key-here with your actual Coda API key from https://coda.io/account