Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Manage Airtable bases: schema, field CRUD, views, formula validation, extensions

README.md

<div align="center">

<picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/banner-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/banner-light.svg"> <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/banner-light.svg" alt="airtable-user-mcp — 72 Airtable tools (plus manage_tools) your AI assistant can't get from the official Airtable REST API" width="900" /> </picture>

Airtable Formulas, Scripts, Automation, MCP & LSP

Formula, script & automation editor · MCP server (72 tools + manage_tools) · Language server · AI skills

<table align="center"> <tr> <th align="center">VS Code</th> <th align="center">Open VSX</th> <th align="center">npm · MCP</th> <th align="center">npm · LSP</th> <th align="center">MCP Registry</th> </tr> <tr> <td align="center"> <a href="https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula"><img src="https://vsmarketplacebadges.dev/version-short/Nskha.airtable-formula.svg?style=for-the-badge&label=Version&colorB=007ACC" alt="VS Code version" /></a><br/> <a href="https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula"><img src="https://vsmarketplacebadges.dev/installs-short/Nskha.airtable-formula.svg?style=for-the-badge&label=Installs&colorB=1E8CBE" alt="VS Code installs" /></a> </td> <td align="center"> <a href="https://open-vsx.org/extension/Nskha/airtable-formula"><img src="https://img.shields.io/open-vsx/v/Nskha/airtable-formula?style=for-the-badge&logo=eclipseide&logoColor=white&label=Version&color=C160EF" alt="Open VSX version" /></a><br/> <a href="https://open-vsx.org/extension/Nskha/airtable-formula"><img src="https://img.shields.io/open-vsx/dt/Nskha/airtable-formula?style=for-the-badge&logo=eclipseide&logoColor=white&label=Downloads&color=A855F7" alt="Open VSX downloads" /></a> </td> <td align="center"> <a href="https://www.npmjs.com/package/airtable-user-mcp"><img src="https://img.shields.io/npm/v/airtable-user-mcp?style=for-the-badge&logo=npm&logoColor=white&label=Version&color=CB3837" alt="npm version" /></a><br/> <a href="https://www.npmjs.com/package/airtable-user-mcp"><img src="https://img.shields.io/npm/dw/airtable-user-mcp?style=for-the-badge&logo=npm&logoColor=white&label=DL%2FWeek&color=F43F5E" alt="npm downloads per week" /></a> </td> <td align="center"> <a href="https://www.npmjs.com/package/airtable-user-lsp"><img src="https://img.shields.io/npm/v/airtable-user-lsp?style=for-the-badge&logo=npm&logoColor=white&label=Version&color=CB3837" alt="LSP version" /></a> </td> <td align="center"> <a href="https://registry.modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP%20Registry-Listed-1D4ED8?style=for-the-badge" alt="MCP Registry listing" /></a> </td> </tr> </table>

<p align="center"> <a href="https://github.com/Automations-Project/VSCode-Airtable-Formula/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/Automations-Project/VSCode-Airtable-Formula/ci.yml?branch=main&style=for-the-badge&logo=githubactions&logoColor=white&label=CI" alt="CI status" /></a> <a href="https://github.com/Automations-Project/VSCode-Airtable-Formula/releases/latest"><img src="https://img.shields.io/github/v/release/Automations-Project/VSCode-Airtable-Formula?style=for-the-badge&logo=github&logoColor=white&label=Latest%20Release&color=10B981" alt="Latest release" /></a> <a href="https://github.com/Automations-Project/VSCode-Airtable-Formula/commits/main"><img src="https://img.shields.io/github/last-commit/Automations-Project/VSCode-Airtable-Formula?style=for-the-badge&logo=github&logoColor=white&label=Last%20Commit&color=6366F1" alt="Last commit" /></a> <a href="https://github.com/Automations-Project/VSCode-Airtable-Formula/stargazers"><img src="https://img.shields.io/github/stars/Automations-Project/VSCode-Airtable-Formula?style=for-the-badge&logo=github&logoColor=white&label=Stars&color=FBBF24" alt="GitHub stars" /></a> <a href="LICENSE"><img src="https://img.shields.io/github/license/Automations-Project/VSCode-Airtable-Formula?style=for-the-badge&logo=opensourceinitiative&logoColor=white&label=License&color=22C55E" alt="License" /></a> </p>

<br />

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.

</div>

---

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.

<div align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/architecture-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/architecture-light.svg"> <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/architecture-light.svg" alt="Architecture: AI Client → Official MCP + airtable-user-mcp → Airtable" width="900" /> </picture> </div>

---

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 |

</div>

---

Demo

<div align="center">

![Using Claude Code to manage base views, computed fields & extensions — Reddit demo](https://www.reddit.com/r/Airtable/comments/1skmqe1/using_claude_code_to_manage_base_views_computed/)

</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_daemonaction=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 |

</div>

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 | | Reddit | Video demo — managing views, computed fields & extensions with Claude Code |

</div>

---

Requirements

  • VS Code ^1.100.0 (or any fork exposing the McpServerDefinitionProvider API)
  • 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 msedge on Windows and chromium on 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

MIT

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Developer Tools servers.