Airtable
io.github.domdomeggPublished by GitHub account domdomeggv1.14.0Updated Oct 24, 2026
Read and write access to Airtable database schemas, tables, and records.
The publisher's own server: Airtable
Overview
Airtable MCP server that lets an assistant inspect Airtable bases, tables and fields, and read, create, update or delete records and comments.
- What you can do
- List accessible bases and inspect tables, fields and views, with configurable detail levels
- Read records by ID, list records with formula filters, and search records by text
- Create, update and delete records in a table
- Create tables and fields, and rename or re-describe existing tables and fields
- List and create comments on records, including threaded replies
- When to use it
- Useful when you keep structured data in Airtable and want an assistant to look up records, answer questions about a base's schema, or make bulk edits and additions without manual copy-paste.
- Requirements
- Runs locally over stdio via npx, Docker or an MCPB bundle; Node.js needed for the npm route. Requires an Airtable personal access token in AIRTABLE_API_KEY, created with schema.bases:read and data.records:read scopes plus optional write and comment scopes, and access to the target bases. Network access to Airtable is required.
Installation
In SourceWeft
- Open Airtable in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
airtable-mcp-server
A Model Context Protocol server that provides read and write access to Airtable databases. This server enables LLMs to inspect database schemas, then read and write records.
https://github.com/user-attachments/assets/c8285e76-d0ed-4018-94c7-20535db6c944
Installation
Follow the instructions on install-mcp, which generates the right config for your MCP client (Claude Code, Claude Desktop, Cursor, Cline, VS Code, and more).
You'll need an Airtable personal access token — create one here with scopes schema.bases:read and data.records:read (and optionally schema.bases:write, data.records:write, data.recordComments:read, data.recordComments:write), and access to the bases you want to use. It looks something like pat123.abc123 (but longer). Set it as AIRTABLE_API_KEY (replacing the placeholder in the generated config).
Components
Tools
-
list_records
- Lists records from a specified Airtable table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the table to querymaxRecords(number, optional): Maximum number of records to return. Defaults to 100.filterByFormula(string, optional): Airtable formula to filter records
-
search_records
- Search for records containing specific text
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the table to querysearchTerm(string, required): Text to search for in recordsfieldIds(array, optional): Specific field IDs to search in. If not provided, searches all text-based fields.maxRecords(number, optional): Maximum number of records to return. Defaults to 100.
-
list_bases
- Lists all accessible Airtable bases
- No input parameters required
- Returns base ID, name, and permission level
-
list_tables
- Lists all tables in a specific base
- Input parameters:
baseId(string, required): The ID of the Airtable basedetailLevel(string, optional): The amount of detail to get about the tables (tableIdentifiersOnly,identifiersOnly, orfull)
- Returns table ID, name, description, fields, and views (to the given
detailLevel)
-
describe_table
- Gets detailed information about a specific table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the table to describedetailLevel(string, optional): The amount of detail to get about the table (tableIdentifiersOnly,identifiersOnly, orfull)
- Returns the same format as list_tables but for a single table
- Useful for getting details about a specific table without fetching information about all tables in the base
-
get_record
- Gets a specific record by ID
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecordId(string, required): The ID of the record to retrieve
-
create_record
- Creates a new record in a table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablefields(object, required): The fields and values for the new record
-
update_records
- Updates one or more records in a table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecords(array, required): Array of objects containing record ID and fields to update
-
delete_records
- Deletes one or more records from a table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecordIds(array, required): Array of record IDs to delete
-
create_table
- Creates a new table in a base
- Input parameters:
baseId(string, required): The ID of the Airtable basename(string, required): Name of the new tabledescription(string, optional): Description of the tablefields(array, required): Array of field definitions (name, type, description, options)
-
update_table
- Updates a table's name or description
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablename(string, optional): New name for the tabledescription(string, optional): New description for the table
-
create_field
- Creates a new field in a table
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablename(string, required): Name of the new fieldtype(string, required): Type of the fielddescription(string, optional): Description of the fieldoptions(object, optional): Field-specific options
-
update_field
- Updates a field's name or description
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablefieldId(string, required): The ID of the fieldname(string, optional): New name for the fielddescription(string, optional): New description for the field
-
create_comment
- Creates a comment on a record
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecordId(string, required): The ID of the recordtext(string, required): The comment textparentCommentId(string, optional): Parent comment ID for threaded replies
- Returns the created comment with ID, author, creation time, and text
-
list_comments
- Lists comments on a record
- Input parameters:
baseId(string, required): The ID of the Airtable basetableId(string, required): The ID of the tablerecordId(string, required): The ID of the recordpageSize(number, optional): Number of comments to return (max 100, default 100)offset(string, optional): Pagination offset for retrieving additional comments
- Returns comments array with author, text, timestamps, reactions, and mentions
- Comments are returned from newest to oldest
HTTP Transport
The server can also run in HTTP mode for use with remote MCP clients:
This starts a stateless HTTP server at http://localhost:3000/mcp.
[!WARNING] The HTTP transport has no built-in authentication, and binding to localhost or a private network is not a security boundary against browsers: a malicious website can use DNS rebinding to make a visitor's browser send requests to
http://localhost:3000/mcpand invoke tools — including reading, writing and deleting records — using this server's Airtable token.Only run HTTP mode where untrusted callers (including browsers on the same machine or network) cannot reach
/mcpwithout authenticating. In practice that means putting it behind a reverse proxy or gateway that requires a credential a browser won't attach cross-origin, such as anAuthorizationheader.If you just want to use this server with an MCP client on the same machine, use the default stdio transport instead — it doesn't open a port at all.
Contributing
Pull requests are welcomed on GitHub! To get started:
- Install Git and Node.js
- Clone the repository
- Install dependencies with
npm install - Run
npm run testto run tests - Build with
npm run build
- You can use
npm run build:watchto automatically build after editingsrc/index.ts. This means you can hit save, reload Claude Desktop (with Ctrl/Cmd+R), and the changes apply.
Releases
Versions follow the semantic versioning spec.
To release:
- Use
npm version <major | minor | patch>to bump the version - Run
git push --follow-tagsto push with tags - Wait for GitHub Actions to publish to the NPM registry.
Source: README.md at commit 80d3f18
Tools
0Version history
1- v1.14.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Airtable integrations
Airtable
com.airtableOfficial publisher
Official Airtable MCP server that gives an assistant a database and operations layer for Airtable bases.

Airtable MCP by InsightfulPipe
com.insightfulpipe
Hosted Airtable MCP server that lets an assistant list bases, tables and fields, read and search records, and create or edit records and comments.

Airtable Mcp
Published by GitHub account mrfentmen
Query the Airtable API (PAT; set AIRTABLE_TOKEN, Bearer): bases, tables, records.

Airtable
Published by GitHub account pipeworx-io
Pipeworx Airtable pack that lets an assistant list bases, inspect schemas, and read or create records in Airtable tables.
Airtable User MCP
Published by GitHub account Automations-Project
A local MCP server that lets an assistant manage Airtable bases through Airtable's internal web API: schema, fields, views, records, templates and extensions.