- 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.
| Metric | domdomegg/airtable-mcp-server |
|---|---|
| GitHub stars | 456 |
| Forks | 131 |
| Open issues | 2 |
| Licence | MIT |
| Last commit (default branch) | 2026-09-03 |
| Registered tools | 16 |
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.
| Tool | What it does | Read/Write |
|---|---|---|
list_records | Lists records in a table, paging through the Airtable API | Read |
search_records | Searches records in a table by field value | Read |
list_bases | Lists accessible Airtable bases | Read |
list_tables | Lists tables in a base, with a detailLevel parameter to control schema verbosity | Read |
describe_table | Describes a single table's schema, also gated by detailLevel | Read |
get_record | Fetches a single record by ID | Read |
create_record | Creates a record in a table | Write |
update_records | Updates one or more existing records | Write |
delete_records | Deletes one or more records | Write |
create_table | Creates a new table in a base | Write (schema) |
update_table | Updates an existing table's properties | Write (schema) |
create_field | Adds a new field to a table | Write (schema) |
update_field | Updates an existing field's properties | Write (schema) |
create_comment | Registered per src/tools/index.ts:22-38 | — |
list_comments | Registered per src/tools/index.ts:22-38 | — |
upload_attachment | Registered 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:
npx airtable-mcp-serverAuthentication is an Airtable personal access token, created at Airtable's token page and supplied through an environment variable you configure when starting the server.
{
"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 default —
list_recordswithoutmaxRecordsreturns 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 door —
create_table,update_table,create_fieldandupdate_fieldexist, but nodelete_fieldordelete_tabletool 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. createdTimeis silently dropped — every record-returning tool passes results through the two-keyAirtableRecordSchema(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/mcpcovers 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).