by domdomegg
Provides read and write access to Airtable bases for AI systems, enabling inspection of schemas and manipulation of records.
Enables AI models to interact directly with Airtable databases, offering both schema discovery and full CRUD operations on records. The server acts as a bridge, exposing Airtable data through the Model Context Protocol so that LLMs can query structures, retrieve, create, update, and delete records programmatically.
schema.bases:read, data.records:read and optionally schema.bases:write, data.records:write.AIRTABLE_API_KEY=your_token npx -y airtable-mcp-server
(or configure the environment variable in a client‑side MCP JSON as shown in the serverConfig section).list_bases, list_tables, describe_table provide detailed metadata, including field types and view definitions.list_records, search_records, get_record, create_record, update_records, delete_records cover the full CRUD lifecycle.create_table, update_table, create_field, update_field allow programmatic schema changes.airtable://<baseId>/<tableId>/schema.AIRTABLE_API_KEY is the expected variable; it can be set directly in the shell or via the MCP JSON configuration.npx -y airtable-mcp-server command downloads and runs the package on‑the‑fly.maxRecords to control payload size.AIRTABLE_API_KEY, and the server logs any HTTP errors to the console.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
Step 1: Create an Airtable personal access token by clicking here. Details:
schema.bases:read, data.records:read, and optionally schema.bases:write and data.records:write.Keep the token handy, you'll need it in the next step. It should look something like pat123.abc123 (but longer).
Step 2: Follow the instructions below for your preferred client:
airtable-mcp-server-dxt file.zip file to .dxt.dxt file to open with Claude Desktopclaude_desktop_config.json filepat123.abc123 with your API key:{
"mcpServers": {
"airtable": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
],
"env": {
"AIRTABLE_API_KEY": "pat123.abc123",
}
}
}
}
Create either a global (~/.cursor/mcp.json) or project-specific (.cursor/mcp.json) configuration file, replacing pat123.abc123 with your API key:
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": ["-y", "airtable-mcp-server"],
"env": {
"AIRTABLE_API_KEY": "pat123.abc123"
}
}
}
}
pat123.abc123 with your API key:{
"mcpServers": {
"airtable": {
"type": "stdio",
"command": "npx",
"args": ["-y", "airtable-mcp-server"],
"env": {
"AIRTABLE_API_KEY": "pat123.abc123"
}
}
}
}
list_records
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 recordssearch_records
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
list_tables
baseId (string, required): The ID of the Airtable basedetailLevel (string, optional): The amount of detail to get about the tables (tableIdentifiersOnly, identifiersOnly, or full)detailLevel)describe_table
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, or full)get_record
baseId (string, required): The ID of the Airtable basetableId (string, required): The ID of the tablerecordId (string, required): The ID of the record to retrievecreate_record
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 recordupdate_records
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 updatedelete_records
baseId (string, required): The ID of the Airtable basetableId (string, required): The ID of the tablerecordIds (array, required): Array of record IDs to deletecreate_table
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
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 tablecreate_field
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 optionsupdate_field
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 fieldThe server provides schema information for Airtable bases and tables:
airtable://<baseId>/<tableId>/schema)
Pull requests are welcomed on GitHub! To get started:
npm installnpm run test to run testsnpm run buildnpm run build:watch to automatically build after editing src/index.ts. This means you can hit save, reload Claude Desktop (with Ctrl/Cmd+R), and the changes apply.Versions follow the semantic versioning spec.
To release:
npm version <major | minor | patch> to bump the versiongit push --follow-tags to push with tagsPlease log in to share your review and rating for this MCP.
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
],
"env": {
"AIRTABLE_API_KEY": "<YOUR_API_KEY>"
}
}
}
}claude mcp add airtable npx -y airtable-mcp-serverExplore related MCPs that share similar capabilities and solve comparable challenges
by googleapis
An MCP server that streamlines database tool development by handling connection pooling, authentication, observability, and secure access, allowing agents to interact with databases via natural language.
by bytebase
Provides a universal gateway that lets MCP‑compatible clients explore and query MySQL, PostgreSQL, SQL Server, MariaDB, and SQLite databases through a single standardized interface.
by designcomputer
Enables secure interaction with MySQL databases via the Model Context Protocol, allowing AI applications to list tables, read contents, and execute queries safely.
by benborla
Provides read‑only access to MySQL databases for large language models, allowing schema inspection and safe execution of SQL queries.
by neo4j-contrib
Enables natural‑language interaction with Neo4j databases, allowing large language models to query, modify, and manage graph data through multiple transport modes.
by mongodb-js
Provides a Model Context Protocol server that enables interaction with MongoDB databases and MongoDB Atlas clusters through a unified API.
by ClickHouse
Enables AI assistants to run read‑only ClickHouse queries, list databases and tables, and execute embedded chDB queries through an MCP interface.
by neondatabase
Interact with Neon Postgres databases using natural language commands through the Model Context Protocol, enabling conversational database creation, migration, and query execution.
by motherduckdb
Enables SQL analytics on DuckDB and MotherDuck databases via a Model Context Protocol server, allowing AI assistants and IDEs to query data directly.