airtable-user-mcp 0.0.1 → 2.1.1

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.
package/README.md CHANGED
@@ -1,5 +1,295 @@
1
- # airtable-user-mcp
2
-
3
- Temporary placeholder package to reserve the npm name ahead of the public release.
4
-
5
- Not affiliated with Airtable Inc.
1
+ <div align="center">
2
+
3
+ <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/icon.png" alt="Airtable User MCP" width="140" />
4
+
5
+ # airtable-user-mcp
6
+
7
+ **Community MCP server for Airtable — 30 tools your AI assistant can't get from the official API**
8
+
9
+ [![npm version](https://img.shields.io/npm/v/airtable-user-mcp?style=flat-square&color=CB3837)](https://www.npmjs.com/package/airtable-user-mcp)
10
+ [![MCP 2.0](https://img.shields.io/badge/MCP-2.0-blue?style=flat-square)](https://modelcontextprotocol.io)
11
+ [![MIT License](https://img.shields.io/badge/license-MIT-green?style=flat-square)](https://github.com/Automations-Project/VSCode-Airtable-Formula/blob/main/LICENSE)
12
+ [![VS Code Extension](https://img.shields.io/visual-studio-marketplace/v/Nskha.airtable-formula?style=flat-square&label=VS%20Code&color=007ACC)](https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula)
13
+
14
+ <br />
15
+
16
+ > **Not affiliated with Airtable Inc.** This is a community-maintained project.
17
+ >
18
+ > **Experimental** — This project is under active development and not intended for production use. APIs, tools, and behavior may change without notice.
19
+
20
+ </div>
21
+
22
+ ---
23
+
24
+ ## Why this server?
25
+
26
+ The official Airtable REST API doesn't expose formula field creation, view configuration, or extension management. **airtable-user-mcp** fills that gap by using Airtable's internal API, giving your AI assistant capabilities that are otherwise only available through the Airtable UI.
27
+
28
+ <div align="center">
29
+
30
+ | | Capability | Official API | This Server |
31
+ |:-:|:-----------|:---:|:---:|
32
+ | **S** | Schema inspection (bases, tables, fields, views) | Partial | Full |
33
+ | **F** | Create formula / rollup / lookup / count fields | No | Yes |
34
+ | **V** | Validate formulas before applying | No | Yes |
35
+ | **C** | View config (filters, sorts, groups, visibility) | No | Yes |
36
+ | **E** | Extension / block management | No | Yes |
37
+
38
+ </div>
39
+
40
+ ---
41
+
42
+ ## Quick Start
43
+
44
+ ```bash
45
+ npx airtable-user-mcp
46
+ ```
47
+
48
+ That's it. Your MCP client connects via **stdio** and gets access to all 30 tools.
49
+
50
+ ---
51
+
52
+ ## Supported Clients
53
+
54
+ Works with any MCP-compatible client. Tested with:
55
+
56
+ <div align="center">
57
+
58
+ | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/claude.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/claude-code.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/cursor.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/windsurf.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/cline.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/amp.svg" width="28" /> |
59
+ |:---:|:---:|:---:|:---:|:---:|:---:|
60
+ | Claude Desktop | Claude Code | Cursor | Windsurf | Cline | Amp |
61
+
62
+ </div>
63
+
64
+ ### Advanced GUI
65
+
66
+ For a visual management experience, install the **[Airtable Formula](https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula)** VS Code extension. It bundles this MCP server and adds:
67
+
68
+ - **One-click MCP registration** for Cursor, Windsurf, Claude Code, Cline, and Amp
69
+ - **Dashboard** with session status, version info, and setup wizard
70
+ - **Airtable login** with credentials in OS keychain and auto-refresh
71
+ - **Formula editor** with syntax highlighting, IntelliSense, and beautify/minify
72
+
73
+ <!-- TODO: Replace with actual screenshot -->
74
+ <!-- <p align="center"><img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/extension/images/screenshot-dashboard.png" alt="Dashboard Screenshot" width="700" /></p> -->
75
+
76
+ ---
77
+
78
+ ## Installation
79
+
80
+ ### Via npx (recommended)
81
+
82
+ Add to your MCP client config (`mcp.json`, `claude_desktop_config.json`, etc.):
83
+
84
+ ```json
85
+ {
86
+ "mcpServers": {
87
+ "airtable": {
88
+ "command": "npx",
89
+ "args": ["-y", "airtable-user-mcp"]
90
+ }
91
+ }
92
+ }
93
+ ```
94
+
95
+ ### Via VS Code / Windsurf / Cursor
96
+
97
+ Install the [Airtable Formula](https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula) extension — it bundles this server and registers it automatically across all your IDEs.
98
+
99
+ ### From source
100
+
101
+ ```json
102
+ {
103
+ "mcpServers": {
104
+ "airtable": {
105
+ "command": "node",
106
+ "args": ["/path/to/airtable-user-mcp/src/index.js"]
107
+ }
108
+ }
109
+ }
110
+ ```
111
+
112
+ ---
113
+
114
+ ## Authentication
115
+
116
+ The server uses browser-based authentication via [Patchright](https://github.com/Kaliiiiiiiiii/patchright-nodejs).
117
+
118
+ ```bash
119
+ # 1. Install the browser engine (one-time, ~170 MB)
120
+ npx airtable-user-mcp install-browser
121
+
122
+ # 2. Log in to Airtable
123
+ npx airtable-user-mcp login
124
+
125
+ # 3. Verify your session
126
+ npx airtable-user-mcp status
127
+ ```
128
+
129
+ Sessions are cached in `~/.airtable-user-mcp/` and reused automatically.
130
+
131
+ **Headless / CI environments:** Set `AIRTABLE_NO_BROWSER=1` to use cached cookies only, without launching a browser.
132
+
133
+ **Diagnostics:** Run `npx airtable-user-mcp doctor` to check browser availability, session health, and config.
134
+
135
+ ---
136
+
137
+ ## Tools (30)
138
+
139
+ ### Schema Read (5)
140
+
141
+ | Tool | Description |
142
+ |:-----|:------------|
143
+ | `get_base_schema` | Full schema of all tables, fields, and views in a base |
144
+ | `list_tables` | List all tables in a base with IDs and names |
145
+ | `get_table_schema` | Full schema for a single table |
146
+ | `list_fields` | All fields in a table with types and configuration |
147
+ | `list_views` | All views in a table with IDs, names, and types |
148
+
149
+ ### Field Management (8)
150
+
151
+ | Tool | Description |
152
+ |:-----|:------------|
153
+ | `create_field` | Create a field — including formula, rollup, lookup, count |
154
+ | `create_formula_field` | Create a formula field (shorthand) |
155
+ | `validate_formula` | Validate a formula expression before applying |
156
+ | `update_formula_field` | Update the formula text of an existing field |
157
+ | `update_field_config` | Update configuration of any computed field |
158
+ | `rename_field` | Rename a field with pre-validation |
159
+ | `delete_field` | Delete with safety guards and dependency checks |
160
+ | `duplicate_field` | Clone a field, optionally copying cell values |
161
+
162
+ ### View Configuration (11)
163
+
164
+ | Tool | Description |
165
+ |:-----|:------------|
166
+ | `create_view` | Create grid, form, kanban, calendar, gallery, gantt, or list view |
167
+ | `duplicate_view` | Clone a view with all configuration |
168
+ | `rename_view` | Rename a view |
169
+ | `delete_view` | Delete a view (cannot delete last view) |
170
+ | `update_view_description` | Set or clear a view's description |
171
+ | `update_view_filters` | Set filter conditions with AND/OR conjunctions |
172
+ | `reorder_view_fields` | Change column order |
173
+ | `show_or_hide_view_columns` | Toggle column visibility |
174
+ | `apply_view_sorts` | Set or clear sort conditions |
175
+ | `update_view_group_levels` | Set or clear grouping |
176
+ | `update_view_row_height` | Change row height (small / medium / large / xlarge) |
177
+
178
+ ### Field Metadata (1)
179
+
180
+ | Tool | Description |
181
+ |:-----|:------------|
182
+ | `update_field_description` | Set or update a field's description text |
183
+
184
+ ### Extension Management (5)
185
+
186
+ | Tool | Description |
187
+ |:-----|:------------|
188
+ | `create_extension` | Register a new extension/block in a base |
189
+ | `create_extension_dashboard` | Create a new dashboard page |
190
+ | `install_extension` | Install an extension onto a dashboard page |
191
+ | `update_extension_state` | Enable or disable an installed extension |
192
+ | `rename_extension` | Rename an installed extension |
193
+ | `duplicate_extension` | Clone an installed extension |
194
+ | `remove_extension` | Remove an extension from a dashboard |
195
+
196
+ ---
197
+
198
+ ## Usage Examples
199
+
200
+ ### Inspect a base schema
201
+
202
+ ```
203
+ Tool: list_tables
204
+ Args: { "appId": "appXXXXXXXXXXXXXX" }
205
+ ```
206
+
207
+ ### Create and validate a formula
208
+
209
+ ```
210
+ Tool: validate_formula
211
+ Args: { "appId": "appXXX", "tableId": "tblXXX", "formulaText": "IF({Price}>0,{Price}*{Qty},0)" }
212
+
213
+ Tool: create_formula_field
214
+ Args: { "appId": "appXXX", "tableId": "tblXXX", "name": "Total", "formulaText": "IF({Price}>0,{Price}*{Qty},0)" }
215
+ ```
216
+
217
+ ### Configure view filters
218
+
219
+ ```
220
+ Tool: update_view_filters
221
+ Args: {
222
+ "appId": "appXXX",
223
+ "viewId": "viwXXX",
224
+ "filters": {
225
+ "filterSet": [
226
+ { "columnId": "fldXXX", "operator": "isNotEmpty" }
227
+ ],
228
+ "conjunction": "and"
229
+ }
230
+ }
231
+ ```
232
+
233
+ ---
234
+
235
+ ## Safety
236
+
237
+ - **Destructive operations** (`delete_field`, `delete_view`, `remove_extension`) include built-in safety guards
238
+ - `delete_field` requires both `fieldId` **and** `expectedName`, and checks for downstream dependencies before deleting
239
+ - Formula validation is available and recommended before creating/updating formulas
240
+ - All tools accept `debug: true` for raw response inspection
241
+
242
+ ---
243
+
244
+ ## ID Format Reference
245
+
246
+ | Entity | Prefix | Example |
247
+ |:-------|:-------|:--------|
248
+ | Base / App | `app` | `appXXXXXXXXXXXXXX` |
249
+ | Table | `tbl` | `tblXXXXXXXXXXXXXX` |
250
+ | Field | `fld` | `fldXXXXXXXXXXXXXX` |
251
+ | View | `viw` | `viwXXXXXXXXXXXXXX` |
252
+ | Block | `blk` | `blkXXXXXXXXXXXXXX` |
253
+ | Block Installation | `bli` | `bliXXXXXXXXXXXXXX` |
254
+ | Dashboard Page | `bip` | `bipXXXXXXXXXXXXXX` |
255
+
256
+ ---
257
+
258
+ ## Protocol
259
+
260
+ | | |
261
+ |:--|:--|
262
+ | **Transport** | stdio (JSON-RPC 2.0) |
263
+ | **MCP Version** | 2025-11-25 |
264
+ | **SDK** | `@modelcontextprotocol/sdk` v1.27.1 |
265
+
266
+ ---
267
+
268
+ ## Find Us
269
+
270
+ | Registry | Link |
271
+ |:---------|:-----|
272
+ | **npm** | [`airtable-user-mcp`](https://www.npmjs.com/package/airtable-user-mcp) |
273
+ | **VS Code Marketplace** | [`Nskha.airtable-formula`](https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula) |
274
+ | **GitHub** | [`Automations-Project/VSCode-Airtable-Formula`](https://github.com/Automations-Project/VSCode-Airtable-Formula) |
275
+ | **MCP Registry** | [`io.github.automations-project/airtable-user-mcp`](https://registry.modelcontextprotocol.io) |
276
+ | **Smithery** | [smithery.ai](https://smithery.ai) |
277
+ | **Glama** | [glama.ai/mcp/servers](https://glama.ai/mcp/servers) |
278
+ | **PulseMCP** | [pulsemcp.com](https://www.pulsemcp.com) |
279
+
280
+ ---
281
+
282
+ ## Related
283
+
284
+ - [**Airtable Formula** VS Code Extension](https://github.com/Automations-Project/VSCode-Airtable-Formula) — Dashboard, formula editor, MCP installer, and AI skills
285
+ - [Model Context Protocol](https://modelcontextprotocol.io) — The open standard for AI tool integration
286
+
287
+ ## Support This Project
288
+
289
+ This project is built and maintained with the help of AI coding tools. If you find it useful and want to support continued development (new tools, updates, bug fixes), you can contribute by gifting **Claude Code credits** — the primary tool used to build this project.
290
+
291
+ Interested? [Open an issue](https://github.com/Automations-Project/VSCode-Airtable-Formula/issues/new) or reach out to discuss feature requests and sponsorship.
292
+
293
+ ## License
294
+
295
+ [MIT](https://github.com/Automations-Project/VSCode-Airtable-Formula/blob/main/LICENSE)
package/package.json CHANGED
@@ -1 +1,47 @@
1
- {"name":"airtable-user-mcp","version":"0.0.1","description":"Temporary placeholder package to reserve the npm name for an upcoming public MCP release. Not affiliated with Airtable Inc.","license":"MIT","private":false,"publishConfig":{"access":"public"}}
1
+ {
2
+ "name": "airtable-user-mcp",
3
+ "version": "2.1.1",
4
+ "mcpName": "io.github.Automations-Project/airtable-user-mcp",
5
+ "description": "Community MCP server for Airtable. Schema inspection, field CRUD, view configuration, formula validation, and extension management. Not affiliated with Airtable Inc.",
6
+ "main": "src/index.js",
7
+ "bin": {
8
+ "airtable-user-mcp": "src/index.js"
9
+ },
10
+ "type": "module",
11
+ "files": [
12
+ "src/**/*.js",
13
+ "src/**/*.mjs",
14
+ "README.md",
15
+ "LICENSE"
16
+ ],
17
+ "publishConfig": {
18
+ "access": "public",
19
+ "provenance": true
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/Automations-Project/VSCode-Airtable-Formula.git",
24
+ "directory": "packages/mcp-server"
25
+ },
26
+ "homepage": "https://github.com/Automations-Project/VSCode-Airtable-Formula/tree/main/packages/mcp-server#readme",
27
+ "bugs": "https://github.com/Automations-Project/VSCode-Airtable-Formula/issues",
28
+ "keywords": ["mcp", "model-context-protocol", "airtable", "mcp-server", "ai", "formula", "schema", "automation"],
29
+ "license": "MIT",
30
+ "scripts": {
31
+ "start": "node src/index.js",
32
+ "login": "node src/login.js",
33
+ "test": "node --test test/test-cache.js test/test-client.js test/test-tool-config.js"
34
+ },
35
+ "dependencies": {
36
+ "@modelcontextprotocol/sdk": "^1.0.0",
37
+ "cheerio": "^1.0.0",
38
+ "dotenv": "^16.4.5",
39
+ "fetch-cookie": "^3.0.1",
40
+ "node-fetch": "^3.3.2",
41
+ "tough-cookie": "^4.1.3"
42
+ },
43
+ "optionalDependencies": {
44
+ "otpauth": "^9.5.0",
45
+ "patchright": "^1.58.2"
46
+ }
47
+ }