Airtable User MCP MCP Server
io.github.Automations-Project/airtable-user-mcp
72 Airtable tools for schema, fields, views, formulas, and extensions—gaps the official REST API can't fill.
What is the Airtable User MCP MCP server?
The Airtable User MCP is a Model Context Protocol server that exposes 72 tools for managing Airtable bases, including schema operations, field creation and validation, view configuration, record templates, extensions, and base synchronization. It complements the official Airtable MCP by providing access to Airtable's internal API, enabling tasks like creating formula fields, validating formulas, managing views with filters and sorts, and installing extensions—capabilities unavailable through the public REST API.
Airtable User MCP fills critical gaps in Airtable automation by exposing the internal API that powers Airtable's web UI. While the official REST API handles record CRUD, this server adds schema management (create/update formula, rollup, and lookup fields), view configuration (filters, sorts, grouping, column visibility), record templates, extensions, and base sync. It runs locally with browser-based login, stores credentials in your OS keychain, and offers permission profiles (read-only, safe-write, full) for flexible access control.
How to install Airtable User MCP
Copy-paste configuration for popular MCP clients.
AIRTABLE_HEADLESS_ONLYHeadless auth (no browser UI)
AIRTABLE_NO_BROWSERForce manual session mode
AIRTABLE_USER_MCP_HOMEOverride config directory
Tools & capabilities
Tools this server exposes to the agent.
query_records— Read up to 1,000 records per call with fully resolved field values; search parameter works on lookup and rollup fieldscreate_records— Batch create records in a tableupdate_records— Batch update records in a tableduplicate_records— Duplicate records from a tabledelete_records— Batch delete records from a tableupload_attachment— Upload attachments to multipleAttachments cells by URLcreate_table— Create a new table in a baserename_table— Rename an existing tabledelete_table— Delete a table from a basecreate_field— Create formula, rollup, lookup, or count fieldsvalidate_formula— Validate a formula before applying it to a fieldupdate_field— Update field descriptions and other metadatadelete_field— Delete a single field or bulk delete fieldscreate_view— Create views (grid, form, kanban, calendar, gallery, gantt, list)set_view_filters— Set or append nested AND/OR filters to a viewset_view_sorts— Configure sort order in a viewset_view_grouping— Set grouping configuration for a viewset_column_order— Reorder columns in a viewshow_hide_columns— Show or hide columns in a viewset_row_height— Change row height in a view
Use cases
- Create and validate formula fields programmatically before deploying to production
- Build views with complex nested filters, sorts, and grouping via AI without manual UI navigation
- Duplicate entire base schemas with records and configurations to another base for testing or backup
- Automate extension installation and configuration across multiple Airtable bases
- Generate record templates with pre-filled data to standardize data entry workflows
Airtable User MCP MCP server FAQ
It's a Model Context Protocol server that exposes 72 tools for Airtable base management—schema, fields, views, formulas, extensions, and records. It uses Airtable's internal API (the one the web UI uses) to fill gaps the official REST API can't cover, like creating formula fields or validating formulas before applying them.
Yes, it's free and open-source (MIT license). It works with any Airtable plan you can log into; no special API token or plan tier is required.
Install via npm: `npx airtable-user-mcp login` (one-time browser login), then add to your MCP config: `{"airtable-user-mcp": {"command": "npx", "args": ["-y", "airtable-user-mcp"]}}`. The VS Code extension also offers one-click setup for Cursor, Windsurf, Claude Desktop, Cline, and Amp.
No. You log in once with your normal Airtable account (SSO and 2FA supported), and credentials are stored securely in your OS keychain. The daemon runs locally and never sends data through Airtable's servers.
Yes, they're designed to work together. Register both in the same `mcpServers` block in your MCP client config. The official MCP handles records via HTTP; this server adds schema, formulas, views, and extensions via local stdio.
Four profiles: read-only (12 tools for inspection), safe-write (54 tools for non-destructive changes), full (all 72 tools including deletions), and custom (toggle individual tools or categories).
README (reference)
Source of truth, from the repository.
Airtable Formulas, Scripts, Automation, MCP & LSP
Formula, script & automation editor · MCP server (72 tools + manage_tools) · Language server · AI skills
</div>Not affiliated with Airtable Inc. This is a community-maintained project.
Active development — Breaking changes may land between minor versions. Pin to a version if you need stability.
Top Features
| Feature | What it does | File types |
|---|---|---|
| Formula Editor | Syntax highlighting, IntelliSense, beautify / minify | .formula, .min.formula |
| Script Editor | Completions, hover docs, diagnostics | .ats, .script |
| Automation Editor | Completions, hover docs, diagnostics | .ata, .automation |
MCP Server (72 tools + manage_tools) | Full Airtable internal API — schema, views, fields, records, extensions, templates | — |
| Language Server (LSP) | Standalone multi-editor support — Neovim, Zed, Helix, OpenCode | All above |
| IDE Auto-Setup | One-click MCP config for Cursor, Windsurf, Claude Desktop, Cline, Amp | — |
| AI Skills | Pre-built Airtable-specific rules and workflows for AI coding assistants | — |
| Daemon + Tunnel | Persistent background server; optional Cloudflare or ngrok remote access | — |
| Tool Profiles | read-only (12 tools) / safe-write (54 tools) / full (72 tools) / custom permission scopes | — |
| OS Keychain Auth | Browser-based Airtable login with SSO/2FA — credentials in your OS keychain | — |
Why this exists
Airtable's public Web API has never exposed some of the most common tasks builders actually need: creating a formula field, tweaking a view's filter set, installing an extension, or validating a formula before it breaks production. The official Airtable MCP server is a thin wrapper over that same REST API, so it inherits every one of those gaps.
airtable-user-mcp is an add-on to the official Airtable MCP, not a replacement. It uses Airtable's own internal API (the one the web UI uses) to cover exactly the surface area the REST API can't reach. Register both servers in your AI client and your assistant gets the full Airtable automation experience — records over HTTP via the official MCP, plus schema, formulas, views, and extensions via this one.
What airtable-user-mcp adds on top of the official Airtable MCP
This is a coverage map, not a "pick one" decision — the two servers are complementary and designed to run side-by-side.
| Capability | Official Airtable MCP | airtable-user-mcp |
|---|---|---|
| Total tools | ~17 | 73 (72 + manage_tools) |
| Auth model | Personal Access Token or OAuth, per-scope setup | Log in once with your normal Airtable account (SSO/2FA supported) |
| Transport | HTTP (remote) | stdio (local, private) |
| Data never leaves your machine | ❌ Requests go through mcp.airtable.com | ✅ Runs locally against Airtable's API |
| Schema read (bases, tables, fields, views) | Partial (no view config) | Full — filters, sorts, groups, visibility, row height, descriptions |
| Read records with resolved field values | Partial | ✅ query_records — returns lookup/rollup/formula fields fully resolved |
| Search records by text (incl. lookup fields) | ❌ filterByFormula with FIND()/SEARCH() silently fails on lookup fields | ✅ query_records.search — substring match on all resolved values |
| Duplicate records | ❌ | ✅ duplicate_records |
| Create formula fields | ❌ UNSUPPORTED_FIELD_TYPE_FOR_CREATE | ✅ |
| Create rollup fields | ❌ | ✅ |
| Create lookup / multipleLookupValues fields | ❌ | ✅ |
| Create count fields | ❌ | ✅ |
| Update formula text of an existing field | ❌ | ✅ |
| Validate a formula before applying | ❌ | ✅ |
| Rename / duplicate / safely delete fields | Partial (no duplicate, no dependency summary) | ✅ with expectedName guard + dependency preview |
| Create views (grid/form/kanban/calendar/gallery/gantt/list) | ❌ (API has no create-view endpoint) | ✅ |
| Set/append view filters (nested AND/OR) | ❌ | ✅ |
| Set view sorts | ❌ | ✅ |
| Set view grouping | ❌ | ✅ |
| Change column order | ❌ | ✅ |
| Show/hide columns in a view | ❌ | ✅ |
| Change row height | ❌ | ✅ |
| Duplicate a view with its full configuration | ❌ | ✅ |
| View descriptions, cell wrap, covers, color config, calendar dates, frozen columns | ❌ | ✅ |
| Sidebar sections (create, rename, move, delete) | ❌ | ✅ |
| Record templates (create, pre-fill, duplicate, apply, delete) | ❌ | ✅ |
| Form metadata (description, redirect, attribution, branding) | ❌ | ✅ |
| Extension / block management (install, enable, rename, duplicate, remove) | ❌ | ✅ |
| Create dashboard pages | ❌ | ✅ |
| Daemon self-diagnosis (session dead? browser busy? daemon gone?) | ❌ | ✅ manage_daemon action=status, plus start / restart / stop / tunnel / token rotation |
| Tool profiles & per-tool toggles | ❌ | ✅ read-only (12) / safe-write (54) / full (72) / custom |
| Destructive-action safety guards | Relies on token scopes | ✅ expectedName match, dependency summary, force flag |
| Batch record create limit | 10 / request | Uses the same Airtable limit; no added restriction |
| VS Code / Cursor / Windsurf / Cline / Amp one-click install | Manual JSON edit per IDE | ✅ One click via the companion extension |
| Formula editor with IntelliSense | ❌ | ✅ (VS Code extension) |
| Credentials storage | You manage the PAT | OS keychain, auto-refresh |
| Plan requirement | Airtable plan with API access + token scopes | Any plan you can log into |
| Price | Free | Free, MIT |
Sources: Airtable's official MCP docs, Airtable Web API reference, and the UNSUPPORTED_FIELD_TYPE_FOR_CREATE rollup thread.
Use both MCPs together
npx -y airtable-user-mcp login # one-time browser login
claude mcp add airtable --scope user -- npx -y airtable-user-mcp # Claude Code
airtable-user-mcp is additive. Register the official Airtable MCP following Airtable's setup guide, then add this one alongside it in the same mcpServers block:
{
"mcpServers": {
"airtable-user-mcp": {
"command": "npx",
"args": ["-y", "airtable-user-mcp"]
}
}
}
Your MCP client will expose every tool from both servers. The two entries are independent — rename the keys (airtable, airtable-official, airtable-user-mcp, etc.) however makes sense for your workflow.
What's In This Repo
This monorepo ships three products from one source tree:
<div align="center">| Product | Install | |
|---|---|---|
| <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/extension/images/icon.png" width="24" /> | Airtable Formulas, Scripts, Automation, MCP & LSP — VS Code extension | Marketplace |
| <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/icon.png" width="24" /> | airtable-user-mcp — Standalone MCP server | npx airtable-user-mcp |
| <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/icon.png" width="24" /> | airtable-user-lsp — Airtable language server | npx airtable-user-lsp |
Demo
<div align="center"> </div>Features
MCP Server (72 Tools + manage_tools)
Manage Airtable bases with capabilities not available through the official REST API:
| Category | Tools | Highlights |
|---|---|---|
| Schema Read | 11 | Full schema inspection — bases, tables, fields, views, sidebar sections, record templates; download all formula fields to local files |
| Record Read | 1 | query_records — up to 1 000 records/call with resolved field values; search param works on lookup/rollup fields (REST API filterByFormula doesn't) |
| Record Write | 4 | create_records / update_records / duplicate_records / upload_attachment (the only way to write multipleAttachments cells by URL) |
| Record Destructive | 1 | delete_records — batch-delete records from a table |
| Table Management | 3 | create / rename / delete tables |
| Field Management | 9 | Create formula / rollup / lookup / count fields, validate formulas, update descriptions, delete single or bulk |
| View Configuration | 20 | Filters, sorts, grouping, columns, freezing, row height, covers, color rules, calendar dates, create / duplicate / rename / delete |
| Sidebar Sections | 4 | Create, rename, move-into-section, delete (auto-promotes contained views to ungrouped) |
| Record Templates | 8 | Create / rename / describe / set cells / set columns / duplicate / apply / delete saved row scaffolds |
| Form Metadata | 2 | Description, redirect URL, attribution, copy-to-respondent, branding (legacy form views) |
| Extension Management | 7 | Create, install, enable/disable, rename, duplicate, remove extensions |
| Tool Management | 1 | List profiles, switch profile, toggle tools/categories (meta-tool, always enabled — not part of any profile) |
| Base Sync | 1 | sync_base — copy a base's schema, views, and records to another base. mode=plan/diff/status are read-only; mode=apply mutates the destination and, with policy=mirror plus the confirmation flags, can delete tables, fields, views, sections and records; mode=reconcile updates local mapping state. Drift-guarded and resumable via journal. |
| Daemon Control | 1 | manage_daemon — action=status is read-only self-diagnosis: daemon liveness, transport, uptime, tunnel URL, and the live session state (dead session, last breaker trip with Airtable's own response body, browser busy queue) that tells "daemon gone" from "session dead" from "browser busy". Also start / restart / stop / tunnel_enable / tunnel_disable / token_rotate. full profile only. |
See the full tool reference in packages/mcp-server/README.md.
One shared daemon
The extension starts the shared MCP daemon whenever a tool call needs one, so every VS Code window uses one Airtable browser session instead of one per window — that duplication is what produced most "session dead" errors. A daemon you stop from the dashboard stays stopped, and if it cannot start, the extension falls back to a per-window server so your tools keep working.
Because a daemon is usually running, other MCP clients on the same machine (Claude Desktop, Cursor, Cline, Amp) attach to it and therefore run under its auth mode and HTTP client rather than their own — deliberately, since two browsers on one Airtable profile crash. Each such client prints one stderr line saying so. See Sharing one daemon across clients.
LSP Server
airtable-user-lsp is a standalone language server for Airtable formula, script, and automation files — works in any LSP-capable editor, not just VS Code.
# stdio mode — works standalone, no daemon needed
npx airtable-user-lsp --stdio
Features: diagnostics, completions, hover documentation, and signature help for .formula, .ats, and .ata files.
When the daemon is running, it auto-spawns airtable-user-lsp --tcp so multiple editors share one language server instance. The TCP port is written to ~/.airtable-user-mcp/daemon.lock as port_lsp.
See packages/lsp-server/README.md for per-editor configuration (Neovim, Zed, OpenCode, Helix).
Supported IDEs
The extension auto-configures MCP for all major AI-enabled editors:
<div align="center">| <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" /> |
|---|---|---|---|---|---|
| Claude Desktop | Claude Code | Cursor | Windsurf | Cline | Amp |
Don't use VS Code? Use the standalone MCP server directly:
npx airtable-user-mcp
Find Us
<div align="center">| Registry | Link |
|---|---|
| VS Code Marketplace | Nskha.airtable-formula |
| npm | airtable-user-mcp |
| Open VSX | Nskha.airtable-formula |
| MCP Registry | io.github.automations-project/airtable-user-mcp |
| Glama | glama.ai/mcp/servers |
| PulseMCP | pulsemcp.com |
| MCP.so | mcp.so |
| Video demo — managing views, computed fields & extensions with Claude Code |
Requirements
- VS Code ^1.100.0 (or any fork exposing the
McpServerDefinitionProviderAPI) - Node.js — bundled via the VS Code runtime; no separate install needed
- Google Chrome (or Edge / Chromium) — the Airtable login flow uses Patchright in headless mode. Falls back to
msedgeon Windows andchromiumon Linux. The extension shows an actionable warning if no supported browser is detected.
Development
This is a pnpm monorepo.
| Package | Description |
|---|---|
packages/extension | VS Code extension host (TypeScript + tsup) |
packages/webview | React dashboard webview (Vite + Tailwind v4) |
packages/shared | Shared types and message protocol |
packages/mcp-server | airtable-user-mcp — ESM Node MCP server |
packages/lsp-server | airtable-user-lsp — LSP server for formula / script / automation files |
scripts/ | Build tooling (esbuild bundler, dep vendoring) |
pnpm install # install all packages
pnpm build # build shared → webview → mcp bundle → extension
pnpm package # build + create airtable-formula-X.Y.Z.vsix
pnpm test # run all unit tests
pnpm dev # start webview dev server (browser preview)
How the MCP server is bundled: scripts/bundle-mcp.mjs esbuilds packages/mcp-server/src/ into packages/extension/dist/mcp/. Then scripts/prepare-package-deps.mjs vendors patchright, patchright-core, otpauth, impit and @ngrok/ngrok into dist/node_modules/ before vsce package runs, so an installed extension needs no npm install at runtime.
Platform-specific VSIXes. impit (the Chrome-TLS HTTP client) and @ngrok/ngrok (the ngrok tunnel provider) keep their compiled native binary in separate per-platform npm packages, and only the one matching the build machine is ever installed. A single VSIX therefore cannot carry working native binaries for every platform. Instead we publish one VSIX per platform, each vendoring only its own binaries — VS Code and Open VSX hand each user the build matching their machine. Supported targets:
| Target | impit | @ngrok/ngrok |
|---|---|---|
win32-x64 | impit-win32-x64-msvc | @ngrok/ngrok-win32-x64-msvc |
win32-arm64 | impit-win32-arm64-msvc | @ngrok/ngrok-win32-arm64-msvc |
darwin-x64 | impit-darwin-x64 | @ngrok/ngrok-darwin-x64 |
darwin-arm64 | impit-darwin-arm64 | @ngrok/ngrok-darwin-arm64 |
linux-x64 | impit-linux-x64-gnu | @ngrok/ngrok-linux-x64-gnu |
linux-arm64 | impit-linux-arm64-gnu | @ngrok/ngrok-linux-arm64-gnu |
alpine-x64 | impit-linux-x64-musl | @ngrok/ngrok-linux-x64-musl |
alpine-arm64 | impit-linux-arm64-musl | @ngrok/ngrok-linux-arm64-musl |
linux-armhf (32-bit ARM) is not published: impit ships no arm-gnueabihf build, so an armhf VSIX would advertise airtableFormula.mcp.httpClient: "impit" and then fail with "Cannot find native binding". No untargeted fallback is published either, for the same reason.
The matrix is defined once in scripts/vsix-targets.mjs; versions and tarball hashes are pinned to pnpm-lock.yaml. scripts/package-targets.mjs builds every target and scripts/assert-vsix-binaries.mjs verifies each artifact contains exactly its own platform's .node files and no other's — byte-for-byte, against the SHA-256 digests in scripts/native-binary-digests.json, which are recorded from tarballs verified against pnpm-lock.yaml's integrity hashes. Filenames, package.json os/cpu, and a magic number are all labels an artifact carries about itself and cannot distinguish an x64 binary from an ARM64 one, or a glibc build from a musl one; an exact digest can.
Together these are eight target artifact packaging/assertion smokes — eight .vsix files built and their contents verified on one machine. They are not runtime smokes of eight native bindings: any single host can only load the binding compiled for itself, so only the host target's binding receives a genuine runtime load. Verifying the other seven by exact content is the strongest claim a single-host build can make about them.
The standalone npm package airtable-user-mcp is unaffected and stays universal — npm resolves the right optional dependency on your own machine at install time.
Support This Project
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.
Interested? Open an issue or reach out to discuss feature requests and sponsorship.
License
Related MCP servers
Screen Base smart contracts and B20 tokens: free on-chain check, paid Flash Audit over x402 (USDC).
View repository →Access your Simplenote notes from Claude, Cursor, and other AI tools—read-only by default, with optional write support.
Pay-per-call agent tools over x402: site audits, llms.txt generation, wallet watch, catalog.
View repository →Paid TaskMarket bounty data MCP: first 10 calls/mo FREE per wallet, then $0.001/call USDC (x402).
View repository →
Sales, marketing, HR + launch playbook, weekly briefing & investor pitch — all in one Claude server.

io.github.Autostackup/hr
Candidate screening, offer letters, onboarding, interview kits & performance reviews for Claude.


