airtable-mcp
Self-discovery
Tools are fetched from the MCP server at runtime, so the CLI never has a hardcoded command list. Discover what's available:
Run airtable-mcp tools before assuming a tool exists. Tool names, arguments, and output shapes can change between server releases without a CLI update.
Install
Auth
The CLI needs an Airtable personal access token (PAT). Two paths:
Environment variable (preferred for scripts/agents):
Interactive configure (stores token in ~/.airtable/cli.json with 0600 permissions):
Create tokens at https://airtable.com/create/tokens. Ensure the token has the scopes required by the tools being called.
AIRTABLE_TOKEN takes precedence over saved profiles when no --profile flag is set. Never log or echo tokens.
Quick reference
Tool names use hyphens on the CLI (list-records) but underscores in MCP (list_records). The CLI translates automatically.
Workflow
- Auth — set
AIRTABLE_TOKENor runairtable-mcp configure - Discover — run
airtable-mcp toolsto see available tools - Inspect — run
airtable-mcp <tool> --helpfor flags and descriptions - Check access — in
tools --jsonoutput, check theaccessfield:read-only,write, ordestructive. Confirm with the user before runningdestructivetools. - Execute — run
airtable-mcp <tool> --flagName value
Output & automation
- Default output is formatted JSON to stdout. Status messages go to stderr.
--jsonontoolsgives a JSON array of{name, title, access}.-q/--quietsuppresses stderr status messages (cache warnings, etc).--output rawreturns the raw server response text instead of parsed JSON.--input -reads tool arguments as a JSON object from stdin, bypassing flag parsing.- Exit codes:
0success,1error (auth, tool failure, not found),2usage error (bad flags, bad input).
Common tasks
Find a base and list its tables:
List records with specific fields:
Filter records — filters use structured JSON, not formula strings. Wrap conditions in an operands array; the top-level operator defaults to and if omitted:
For select fields, filter by choice ID (from get-table-schema), not the display name. The airtable-filters skill covers compound filters, date filters, and operator-by-field-type details.
Search records — use search-records for free-text/fuzzy queries on large tables. Use list-records-for-table with --filters when filtering by exact field values:
Pass --fields ALL_SEARCHABLE_FIELDS to search across every indexed field. Date, rating, checkbox, and button fields are not searchable.
Update records — complex args are easier via --input -:
Select field values are returned as objects ({"id":"sel...","name":"Done"}) but must be written as plain strings ("Done"). Record field keys in create/update currently require field IDs (fldEXAMPLEfield02) — use get-table-schema to resolve names to IDs before writing. Note that fieldIds, sort, and filters accept both names and IDs.
