VS Code extension and MCP server for Airtable, formula editor, schema tools, and 60+ automation utilities for bases, views, and fields.
SaferSkills independently audited Vscode Airtable Formula (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<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 — 66 tools your AI assistant can't get from the official Airtable REST API" width="900" /> </picture>
Formula, script & automation editor · MCP server (66 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>
| 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 (66 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 / safe-write / full / custom permission scopes | — |
| OS Keychain Auth | Browser-based Airtable login with SSO/2FA — credentials in your OS keychain | — |
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>
airtable-user-mcp adds on top of the official Airtable MCPThis 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 | 66 |
| 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 | ❌ | ✅ |
| Tool profiles & per-tool toggles | ❌ | ✅ read-only / safe-write / full / 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](https://support.airtable.com/docs/using-the-airtable-mcp-server), [Airtable Web API reference](https://www.airtable.com/developers/web/api/introduction), and the [`UNSUPPORTED_FIELD_TYPE_FOR_CREATE` rollup thread](https://community.airtable.com/development-apis-11/how-to-set-up-a-rollup-field-using-the-api-4879).
npx -y airtable-user-mcp login # one-time browser login
claude mcp add airtable --scope user -- npx -y airtable-user-mcp # Claude Codeairtable-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.
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>
<div align="center">
</div>
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 | 1 | duplicate_records — bulk copy records within 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) |
See the full tool reference in packages/mcp-server/README.md.
`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 --stdioFeatures: 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).
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<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 |
</div>
McpServerDefinitionProvider API)msedge on Windows and chromium on Linux. The extension shows an actionable warning if no supported browser is detected.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, and otpauth into dist/node_modules/ before vsce package runs. The VSIX is fully self-contained.
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.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.