Skip to main content
Glama

Airtable Formulas, Scripts, Automation, MCP & LSP

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

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


Related MCP server: Airtable MCP Server

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:

Product

Install

Airtable Formulas, Scripts, Automation, MCP & LSP — VS Code extension

Marketplace

airtable-user-mcp — Standalone MCP server

npx airtable-user-mcp

airtable-user-lsp — Airtable language server

npx airtable-user-lsp


Demo

Using Claude Code to manage base views, computed fields & extensions — Reddit demo


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:

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


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

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
<1hResponse time
5dRelease cycle
54Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Airtable MCP Pack — wraps the Airtable REST API v0

  • Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.

  • MCP server for interacting with the Supabase platform

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Automations-Project/VSCode-Airtable-Formula'

If you have feedback or need assistance with the MCP directory API, please join our Discord server