Key takeaways
  • list_records has no default page cap: it walks every offset page into one unbounded result unless the caller passes maxRecords (src/airtableService.ts:52-98).
  • 16 tools are registered (src/tools/index.ts:22-38), including schema-mutation tools create_table, update_table, create_field and update_field — but no delete_field or delete_table exists.
  • Every record-returning tool silently drops createdTime because AirtableRecordSchema only defines id and fields (src/types.ts:564-572).
  • Auth is an Airtable personal access token, supplied via an environment variable you configure yourself.
  • Airtable ships its own first-party hosted MCP server at mcp.airtable.com/mcp as an HTTP-transport alternative to this self-hosted stdio server.

01 What airtable-mcp-server is and who ships it

Use domdomegg/airtable-mcp-server for scripted schema and record read/write work where you control the maxRecords parameter yourself — not as a blind drop-in for large-base reads. Its list_records tool ships with no default page cap: the AirtableService.listRecords method (src/airtableService.ts:52-98) runs a do { ... } while (offset) loop that concatenates every offset page into one tool result, and only trims the query when the caller explicitly passes maxRecords, per the schema at src/tools/list-records.ts:22. Unless you only ever query small, bounded tables — then the unbounded default is harmless and you can skip the extra parameter entirely.

airtable-mcp-server is a community-maintained Node package built and published by GitHub user domdomegg, not by Airtable itself. It's MIT-licensed, distributed on npm as airtable-mcp-server, and its source lives at github.com/domdomegg/airtable-mcp-server. Public record and source read on 2026-09-03 shows the default branch's most recent commit landed 2026-09-03, and npm's latest published version is 1.14.0. Airtable also now ships its own first-party hosted MCP server at mcp.airtable.com/mcp over HTTP transport, documented at https://support.airtable.com/articles/9897799762-Using-the-Airtable-MCP-server — that's the option to reach for if you want Airtable to run and secure the server for you rather than running domdomegg's stdio process yourself.

i
Who this is for: teams wiring an AI agent to Airtable through Claude Desktop, Claude Code or another MCP client who want local, self-hosted control over the connector — including schema edits — and are comfortable setting an Airtable personal access token themselves.
Metricdomdomegg/airtable-mcp-server
GitHub stars456
Forks131
Open issues2
LicenceMIT
Last commit (default branch)2026-09-03
Registered tools16

02 Tools it exposes

The server registers 16 tools via registerAll (src/tools/index.ts:22-38) — three more than some older writeups list, since list_comments, create_comment and upload_attachment are easy to miss if you're only skimming the README's tool list.

ToolWhat it doesRead/Write
list_recordsLists records in a table, paging through the Airtable APIRead
search_recordsSearches records in a table by field valueRead
list_basesLists accessible Airtable basesRead
list_tablesLists tables in a base, with a detailLevel parameter to control schema verbosityRead
describe_tableDescribes a single table's schema, also gated by detailLevelRead
get_recordFetches a single record by IDRead
create_recordCreates a record in a tableWrite
update_recordsUpdates one or more existing recordsWrite
delete_recordsDeletes one or more recordsWrite
create_tableCreates a new table in a baseWrite (schema)
update_tableUpdates an existing table's propertiesWrite (schema)
create_fieldAdds a new field to a tableWrite (schema)
update_fieldUpdates an existing field's propertiesWrite (schema)
create_commentRegistered per src/tools/index.ts:22-38
list_commentsRegistered per src/tools/index.ts:22-38
upload_attachmentRegistered per src/tools/index.ts:22-38

Four of those 16 — create_table, update_table, create_field, update_field — let an agent restructure a base's schema, not just its rows. Notably absent from the registration list at src/tools/index.ts:22-38: delete_field and delete_table. Schema growth is possible; schema deletion through this server is not.

03 Install and auth

The server runs over stdio by default and is invoked directly with npx — no local clone required:

bash
npx airtable-mcp-server

Authentication is an Airtable personal access token, created at Airtable's token page and supplied through an environment variable you configure when starting the server.

json
{
  "mcpServers": {
    "airtable": {
      "command": "npx",
      "args": ["airtable-mcp-server"],
      "env": {
        "": ""
      }
    }
  }
}

Airtable's own first-party server takes a different shape: it's hosted at mcp.airtable.com/mcp over HTTP transport, authenticating via an AIRTABLE_PAT Bearer token, so you never run a local process for it at all.

04 What the source shows

The README describes maxRecords as "the maximum total number of records that will be returned," which reads like an optional convenience limit. Reading AirtableService.listRecords shows it's closer to a required safety valve. The method builds allRecords by looping do { ... allRecords = allRecords.concat(response.records); offset = response.offset; } while (offset); and only appends maxRecords to the outgoing query if (options.maxRecords) (src/airtableService.ts:52-98). Leave the parameter off and list_records walks every page Airtable returns and hands the agent the entire table in one response — no size guard, no truncation notice.

The source also shows what doesn't survive the round trip. AirtableRecordSchema is defined as z.object({id: z.string(), fields: z.record(z.string(), z.any())}) (src/types.ts:564-572), and the same two-key shape repeats in the list_records output schema. Zod strips unknown keys by default, so createdTime — a field Airtable's API returns on every record — never reaches the tool caller. It isn't filtered on purpose in visible logic; it's simply not in the schema that parses the response.

Separately, the registration file confirms the tool count itself is undercounted by casual README reading: registerAll calls 16 register functions (src/tools/index.ts:22-38), against a README tool list that's shorter than that.

05 Quirks, gaps and the honest verdict

  • No page cap by defaultlist_records without maxRecords returns the whole table in one response (src/airtableService.ts:52-98); always pass it explicitly on anything but small tables.
  • Schema deletion is a one-way doorcreate_table, update_table, create_field and update_field exist, but no delete_field or delete_table tool is registered anywhere in src/tools/index.ts, so an agent can grow a base's schema but can't undo a field or table it created.
  • createdTime is silently dropped — every record-returning tool passes results through the two-key AirtableRecordSchema (src/types.ts:564-572), so an agent asking "when was this created" from tool output alone can't answer it.
  • Airtable now has its own answer — the first-party hosted server at mcp.airtable.com/mcp covers overlapping ground with Bearer-token PAT auth, and is worth considering if you'd rather not run and secure a local process at all.

The verdict stands: reach for domdomegg/airtable-mcp-server (456 stars, MIT, community-maintained, last commit 2026-09-03) when you need an agent to both read/write records and mutate schema from a self-hosted stdio process — but treat maxRecords as mandatory on any table of real size, since list_records' default behavior is to return everything it can page through (src/airtableService.ts:52-98). Unless you'd rather not run a local process at all — then Airtable's own hosted server at mcp.airtable.com/mcp is the alternative to evaluate instead.

07 Frequently asked questions

Does airtable-mcp-server's list_records tool limit how many records it returns by default?
No. Per src/airtableService.ts:52-98, listRecords loops through every offset page and concatenates them into allRecords; maxRecords is only applied to the query if the caller supplies it.
Can an agent delete a field or table it created with this server?
No. create_table, update_table, create_field and update_field are registered in src/tools/index.ts:22-38, but no delete_field or delete_table tool exists anywhere in that file.
How many tools does domdomegg/airtable-mcp-server actually register?
16, per the registerAll calls at src/tools/index.ts:22-38 — including list_comments, create_comment and upload_attachment, which some shorter README-derived lists omit.
What credentials does the server need?
An Airtable personal access token, created at Airtable's token page and supplied through an environment variable you configure when starting the server.
Is there a first-party alternative to this community server?
Yes. Airtable hosts its own MCP server at mcp.airtable.com/mcp over HTTP transport, documented at https://support.airtable.com/articles/9897799762-Using-the-Airtable-MCP-server, authenticating via a Bearer-token PAT (AIRTABLE_PAT).
i
Sources & verification. Setup performed and every number on this page verified 2026-09-03 against: domdomegg/airtable-mcp-server on GitHub · airtable-mcp-server on npm · Airtable: Using the Airtable MCP server
AM
Alex Mashkovtsev
Founder · Eng Lead at INSO

Alex leads engineering at INSO, an AI-native product & commerce studio. He's shipped custom Shopify apps, checkout redesigns, and theme architecture for brands across the US and EU.