@vinhnguyen/coda-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +246 -0
  2. package/index.js +1988 -0
  3. package/package.json +72 -0
package/README.md ADDED
@@ -0,0 +1,246 @@
1
+ # Coda MCP Server
2
+
3
+ A Model Context Protocol (MCP) server that connects Claude to [Coda](https://coda.io) — enabling full read/write access to docs, pages, tables, rows, columns, formulas, controls, and automations. Designed to turn Coda into a powerful **knowledge base** for AI assistants.
4
+
5
+ ## Features
6
+
7
+ - **40 tools** covering the complete Coda API v1
8
+ - Full CRUD for docs, pages, tables, and rows
9
+ - Page content export (HTML/Markdown) with automatic async polling
10
+ - Table search and bulk row retrieval for knowledge base queries
11
+ - Doc structure overview in a single call
12
+ - Formula and control value reading
13
+ - Automation triggering
14
+ - Button pressing on table rows
15
+ - Analytics access
16
+ - Mutation status tracking for async write operations
17
+
18
+ ## Quick Start
19
+
20
+ ### 1. Get a Coda API Token
21
+
22
+ 1. Go to [Coda Account Settings](https://coda.io/account#apiSettings)
23
+ 2. Click **Generate API token**
24
+ 3. Copy the token
25
+
26
+ ### 2. Install
27
+
28
+ **Option A: npx (no install)**
29
+ ```bash
30
+ npx @vinhnguyen/coda-mcp
31
+ ```
32
+
33
+ **Option B: Global install**
34
+ ```bash
35
+ npm install -g @vinhnguyen/coda-mcp
36
+ ```
37
+
38
+ **Option C: From source**
39
+ ```bash
40
+ git clone https://github.com/glorynguyen/coda-mcp.git
41
+ cd coda-mcp
42
+ npm install
43
+ npm start
44
+ ```
45
+
46
+ ### 3. Configure with Claude
47
+
48
+ #### Claude Desktop
49
+
50
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
51
+
52
+ ```json
53
+ {
54
+ "mcpServers": {
55
+ "coda": {
56
+ "command": "npx",
57
+ "args": ["-y", "@vinhnguyen/coda-mcp"],
58
+ "env": {
59
+ "CODA_API_TOKEN": "your-api-token-here"
60
+ }
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
66
+ #### Claude Code
67
+
68
+ Add to `~/.claude.json` or project `.claude/settings.json`:
69
+
70
+ ```json
71
+ {
72
+ "mcpServers": {
73
+ "coda": {
74
+ "command": "npx",
75
+ "args": ["-y", "@vinhnguyen/coda-mcp"],
76
+ "env": {
77
+ "CODA_API_TOKEN": "your-api-token-here"
78
+ }
79
+ }
80
+ }
81
+ }
82
+ ```
83
+
84
+ Or run from source:
85
+
86
+ ```json
87
+ {
88
+ "mcpServers": {
89
+ "coda": {
90
+ "command": "node",
91
+ "args": ["/path/to/coda-mcp/index.js"],
92
+ "env": {
93
+ "CODA_API_TOKEN": "your-api-token-here"
94
+ }
95
+ }
96
+ }
97
+ }
98
+ ```
99
+
100
+ ## Environment Variables
101
+
102
+ | Variable | Required | Description |
103
+ |----------|----------|-------------|
104
+ | `CODA_API_TOKEN` | Yes | API token from [Coda Account Settings](https://coda.io/account#apiSettings) |
105
+
106
+ ## Tools Reference
107
+
108
+ ### Doc Operations (5 tools)
109
+
110
+ | Tool | Description |
111
+ |------|-------------|
112
+ | `coda_list_docs` | List accessible docs with optional search filter |
113
+ | `coda_get_doc` | Get doc metadata (name, owner, timestamps, link) |
114
+ | `coda_create_doc` | Create a new doc, optionally from a template |
115
+ | `coda_update_doc` | Update doc title or icon |
116
+ | `coda_delete_doc` | Delete a doc |
117
+
118
+ ### Page Operations (6 tools)
119
+
120
+ | Tool | Description |
121
+ |------|-------------|
122
+ | `coda_list_pages` | List all pages in a doc with hierarchy |
123
+ | `coda_get_page` | Get page details (name, subtitle, parent/children) |
124
+ | `coda_create_page` | Create a page with optional content (HTML/Markdown) |
125
+ | `coda_update_page` | Update page name, content (replace or append), icon, cover |
126
+ | `coda_delete_page` | Delete a page |
127
+ | `coda_get_page_content` | Export page content as HTML or Markdown |
128
+
129
+ ### Table Operations (2 tools)
130
+
131
+ | Tool | Description |
132
+ |------|-------------|
133
+ | `coda_list_tables` | List all tables and views in a doc |
134
+ | `coda_get_table` | Get table details (schema, row count, filters) |
135
+
136
+ ### Column Operations (2 tools)
137
+
138
+ | Tool | Description |
139
+ |------|-------------|
140
+ | `coda_list_columns` | List all columns in a table with types |
141
+ | `coda_get_column` | Get column details |
142
+
143
+ ### Row Operations (6 tools)
144
+
145
+ | Tool | Description |
146
+ |------|-------------|
147
+ | `coda_list_rows` | List rows with optional filtering and sorting |
148
+ | `coda_get_row` | Get a specific row with all values |
149
+ | `coda_upsert_rows` | Insert or update rows (with upsert key columns) |
150
+ | `coda_update_row` | Update a specific row |
151
+ | `coda_delete_row` | Delete a single row |
152
+ | `coda_delete_rows` | Delete multiple rows by IDs |
153
+ | `coda_push_button` | Trigger a button column on a row |
154
+
155
+ ### Formula & Control Operations (4 tools)
156
+
157
+ | Tool | Description |
158
+ |------|-------------|
159
+ | `coda_list_formulas` | List named formulas in a doc |
160
+ | `coda_get_formula` | Get a formula and its current value |
161
+ | `coda_list_controls` | List controls (sliders, pickers, etc.) |
162
+ | `coda_get_control` | Get a control and its current value |
163
+
164
+ ### Utility Operations (3 tools)
165
+
166
+ | Tool | Description |
167
+ |------|-------------|
168
+ | `coda_resolve_browser_link` | Resolve a Coda URL to its resource type and ID |
169
+ | `coda_get_mutation_status` | Check status of an async write operation |
170
+ | `coda_whoami` | Get current API token owner info |
171
+
172
+ ### Analytics Operations (2 tools)
173
+
174
+ | Tool | Description |
175
+ |------|-------------|
176
+ | `coda_list_doc_analytics` | Get doc-level analytics (views, copies) |
177
+ | `coda_list_page_analytics` | Get page-level analytics |
178
+
179
+ ### Automation Operations (1 tool)
180
+
181
+ | Tool | Description |
182
+ |------|-------------|
183
+ | `coda_trigger_automation` | Trigger an automation rule by ID |
184
+
185
+ ### Knowledge Base Helpers (5 tools)
186
+
187
+ | Tool | Description |
188
+ |------|-------------|
189
+ | `coda_search_docs` | Search docs by name |
190
+ | `coda_get_doc_structure` | Get full doc overview: pages + tables in one call |
191
+ | `coda_search_table` | Search rows in a table by query |
192
+ | `coda_get_page_with_content` | Get page metadata + exported content in one call |
193
+ | `coda_list_all_rows` | Bulk retrieve all rows with automatic pagination |
194
+
195
+ ## Knowledge Base Usage
196
+
197
+ This MCP server is specifically designed to make Coda work as a knowledge base for AI. Here are common patterns:
198
+
199
+ ### Discover available knowledge
200
+ ```
201
+ "What Coda docs do I have access to?"
202
+ → coda_list_docs
203
+
204
+ "Show me the structure of my wiki doc"
205
+ → coda_get_doc_structure
206
+ ```
207
+
208
+ ### Read knowledge base content
209
+ ```
210
+ "Read the Getting Started page from my doc"
211
+ → coda_get_page_with_content (returns Markdown)
212
+
213
+ "Show me all entries in the FAQ table"
214
+ → coda_list_all_rows
215
+ ```
216
+
217
+ ### Search for information
218
+ ```
219
+ "Find docs about onboarding"
220
+ → coda_search_docs
221
+
222
+ "Search the knowledge base table for authentication"
223
+ → coda_search_table
224
+ ```
225
+
226
+ ### Write to knowledge base
227
+ ```
228
+ "Add a new article to the wiki"
229
+ → coda_create_page (with Markdown content)
230
+
231
+ "Add a new entry to the FAQ table"
232
+ → coda_upsert_rows
233
+ ```
234
+
235
+ ## Rate Limits
236
+
237
+ The Coda API enforces rate limits:
238
+ - **Read operations**: 100 requests per 6 seconds
239
+ - **Write operations**: 10 requests per 6 seconds
240
+ - **Doc content writes**: 5 requests per 10 seconds
241
+
242
+ The server returns errors for 429 responses. Implement retry logic in your usage patterns if needed.
243
+
244
+ ## License
245
+
246
+ MIT