Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Coda MCP server (MCP 2026-07-28): docs, pages, tables, rows, automations; writes or read-only
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
CODA_API_TOKEN, CODA_READ_ONLY, MCP_READ_ONLY, CODA_HTTP_BEARER_TOKEN「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"coda": {
"command": "uvx",
"args": [
"mcp-coda"
],
"env": {
"CODA_API_TOKEN": "your-value",
"CODA_READ_ONLY": "your-value",
"MCP_READ_ONLY": "your-value",
"CODA_HTTP_BEARER_TOKEN": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add coda --env CODA_API_TOKEN=your-value --env CODA_READ_ONLY=your-value --env MCP_READ_ONLY=your-value --env CODA_HTTP_BEARER_TOKEN=your-value -- uvx mcp-coda動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"coda": {
"command": "uvx",
"args": [
"mcp-coda"
],
"env": {
"CODA_API_TOKEN": "your-value",
"CODA_READ_ONLY": "your-value",
"MCP_READ_ONLY": "your-value",
"CODA_HTTP_BEARER_TOKEN": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"coda": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-coda"
],
"env": {
"CODA_API_TOKEN": "your-value",
"CODA_READ_ONLY": "your-value",
"MCP_READ_ONLY": "your-value",
"CODA_HTTP_BEARER_TOKEN": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
CODA_READ_ONLY envMCP_READ_ONLY envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント vish288 で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:CODA_API_TOKEN, CODA_HTTP_BEARER_TOKEN
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.13.0)がレジストリに届いたのは昨日です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Hunter Killer
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Liquidation walls, snapshot age, evidence labels and a public record. Managed OAuth.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Install: uvx mcp-coda | PyPI | MCP Registry | Changelog
uvx mcp-coda # with writes
MCP_READ_ONLY=true uvx mcp-coda # locked read-only: write tools are not listed
mcp-coda is a Model Context Protocol (MCP) server for Coda. It lets an AI assistant read and write Coda docs, pages, tables, and rows through the Coda API. It also runs formulas, manages permissions and folders, publishes docs, and triggers automations. The server exposes 54 tools, 12 resources, and 5 prompts. It supports the MCP 2026-07-28 specification (often called MCP 2.0) and stays compatible with 2025-11-25 clients. It works with Claude Desktop, Claude Code, Cursor, Windsurf, VS Code Copilot, and any MCP-compatible client. Runs in one of two modes: with writes, or locked read-only (MCP_READ_ONLY=true) so the 20 write tools are never offered to the model.
mcp-coda uses FastMCP, httpx, and Pydantic.
Tip: For other AI assistants (Claude Code, Windsurf, IntelliJ, Gemini CLI), visit the [Coda MCP Installation Gateway](https://vish288.github.io/mcp-install?server=mcp-coda).
Manual Setup Guides (Click to expand)
Prerequisite: Install
uvfirst (required for alluvxinstall flows). Install uv.
# with writes
claude mcp add coda -e CODA_API_TOKEN=your-token-here -- uvx mcp-coda
claude mcp add coda -e MCP_READ_ONLY=true -e CODA_API_TOKEN=your-token-here -- uvx mcp-coda
Windsurf: Add to ~/.codeium/windsurf/mcp_config.json IntelliJ: Add to Settings | Tools | MCP Servers
Note: The actual server config starts at
codainside themcpServersobject.
Remove
MCP_READ_ONLYto allow writes.
{
"mcpServers": { "coda": { "command": "uvx", "args": ["mcp-coda"], "env": { "CODA_API_TOKEN": "your-token-here", "MCP_READ_ONLY": "true" } } } }
# with writes
gemini mcp add -s user -e CODA_API_TOKEN=your-token-here coda uvx mcp-coda
gemini mcp add -s user -e MCP_READ_ONLY=true -e CODA_API_TOKEN=your-token-here coda uvx mcp-coda
Add to .vscode/mcp.json:
{
"servers": { "coda": { "type": "stdio", "command": "uvx", "args": ["mcp-coda"], "env": { "CODA_API_TOKEN": "your-token-here", "MCP_READ_ONLY": "true" } } } }
# with writes
codex mcp add coda --env CODA_API_TOKEN=your-token-here -- uvx mcp-coda
codex mcp add coda --env MCP_READ_ONLY=true --env CODA_API_TOKEN=your-token-here -- uvx mcp-coda
uv pip install mcp-coda
Drop MCP_READ_ONLY to allow writes. On a shared or hosted server put it in the deployer's env, not the client config.
| Variable | Required | Default | Description |
|---|---|---|---|
CODA_API_TOKEN | Yes | - | Coda API token (get one here) |
MCP_READ_ONLY | No | false | Shared name across the mcp-* servers. Any value other than false/0/no/off/empty locks the server read-only: the 20 write tools and write-workflow prompts are not listed, and nothing can turn it back off at runtime |
CODA_READ_ONLY | No | false | Per-server alias for MCP_READ_ONLY; either one locks the server read-only. --read-only can only raise the lock |
CODA_BASE_URL | No | https://coda.io/apis/v1 | API base URL |
CODA_TIMEOUT | No | 30 | Request timeout in seconds |
CODA_HTTP_BEARER_TOKEN | No | - | Required to bind an HTTP transport to a non-loopback host. Clients send Authorization: Bearer . Minimum 16 characters |
The server checks these environment variables in order — first match wins:
CODA_API_TOKENCODA_TOKENCODA_PATGenerate tokens at coda.io/account#apiSettings. Tokens grant access to all docs accessible by the token owner. Tokens have no scope restrictions. Coda's sharing settings control doc-level access.
| 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 |
mcp-coda implements the Model Context Protocol 2026-07-28 specification, often called MCP 2.0. It also stays compatible with 2025-11-25 clients. A FastMCP client pinned to 2026-07-28 and a legacy client both list all tools and reach the Coda API over stdio. The companion code PR adds a regression test that checks tools/list with an in-memory client pinned to 2026-07-28.
stdio (default) and streamable-http (recommended for remote). sse (HTTP+SSE) still works, but the 2026-07-28 specification deprecates it, so the server prints a warning.An expected failure — a 404, a 401, a rate limit, or a write that reaches the read-only guard — comes back as a tool result with isError: true rather than a value the caller must inspect for an error key. (In locked read-only mode the write tools are hidden, so calling one returns an Unknown tool error; the error envelope below is the guard's own response, returned only when a client reaches a write tool anyway.) The result body is the text content: a JSON object with error, an actionable hint, and, where relevant, status_code, body, and retry_after. The result carries no structuredContent — the TypeScript MCP SDK validates structuredContent against the tool's output schema even when isError is true, so an error payload there would make strict clients reject the whole result. Unexpected exceptions (a bug in a tool) are also isError: true, their text is TypeName: message, and the server logs them with a traceback.
A successful result carries the Coda JSON object as structuredContent beside the pretty-printed text, and tools advertise no outputSchema: payloads pass the upstream fields through untyped, so strict clients validate nothing and receive the object directly rather than a double-encoded {"result": " "} wrapper. A typed schema is opt-in per tool via @mcp.tool(output_schema=…).
| Category | Count | Tools |
|---|---|---|
| Account | 3 | whoami, resolve browser link, mutation status |
| Docs | 5 | list, get, create, update, delete |
| Pages | 9 | list, get, create, update, delete, get content, delete content, export, export status |
| Tables | 4 | list tables, get table, list columns, get column |
| Rows | 7 | list, get, insert/upsert, update, delete, bulk delete, push button |
| Permissions | 6 | sharing metadata, list, add, delete, search principals, ACL settings |
| Folders | 5 | list, get, create, update, delete |
| Misc | 8 | formulas (list, get), controls (list, get), publishing (list categories, publish, unpublish), trigger automation |
| Analytics | 7 | doc analytics, doc summary, page analytics, pack analytics, pack summary, formula analytics, analytics updated |
Full tool reference (click to expand)
| 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 |
| 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 |
| 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 |
coda_get_export_status | Poll an export started by coda_export_page |
| 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 |
| 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 |
| Tool | Description |
|---|---|
coda_list_formulas | List named formulas |
coda_get_formula | Get formula value |
| Tool | Description |
|---|---|
coda_list_controls | List controls |
coda_get_control | Get control value |
| 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 |
| Tool | Description |
|---|---|
coda_list_categories | List publishing categories |
coda_publish_doc | Publish a doc |
| `coda_unpublish_do
冒頭だけを表示しています。続きはリポジトリで読めます