Read and write access to Airtable databases.
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 install
npm run test
to run testsnpm run build
npm 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 tagsA comprehensive movie database server supporting advanced search, CRUD operations, and image management via a PostgreSQL database.
A read-only MCP server for Pipedrive, enabling LLMs to query live data using the CData JDBC Driver.
Build and access a personal LLM knowledge base from your editor or client without any infrastructure setup.
Exposes Covalent's GoldRush blockchain data APIs as MCP resources and tools.
An MCP server for NocoDB, the open-source Airtable alternative. It allows interaction with your NocoDB instance via API.
Securely query and retrieve data from your ThoughtSpot instance.
A MySQL server with CRUD operations, database anomaly analysis, and support for SSE and STDIO.
Search, Query and interact with data in your Milvus Vector Database.
Connects to and interacts with various database systems like SQLite, PostgreSQL, SQL Server, and MongoDB.
A read-only MCP server for querying live data from Square using the CData JDBC Driver.