by domdomegg
airtable-mcp-server is a Model Context Protocol (MCP) server that enables AI systems, specifically Large Language Models (LLMs), to interact with Airtable databases. It provides comprehensive read and write access to Airtable bases, allowing LLMs to manage data and schema programmatically.
airtable-mcp-server is a Model Context Protocol (MCP) server that enables AI systems, specifically Large Language Models (LLMs), to interact with Airtable databases. It provides read and write access to Airtable bases, allowing LLMs to inspect database schemas, and then read and write records programmatically.
To use airtable-mcp-server, you need to configure it within an application that supports the Model Context Protocol, such as the Claude Desktop app. You would add a configuration similar to the following in your claude_desktop_config.json
:
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
],
"env": {
"AIRTABLE_API_KEY": "pat123.abc123"
}
}
}
}
Replace pat123.abc123
with your Airtable personal access token, ensuring it has the necessary schema.bases:read
and data.records:read
permissions, and optionally write permissions.
For development and contribution, you can clone the repository, install dependencies with npm install
, run tests with npm run test
, and build the project with npm run build
.
airtable-mcp-server offers a comprehensive set of tools for interacting with Airtable:
Q: What is the Model Context Protocol (MCP)? A: The Model Context Protocol is a standard that allows AI systems to interact with external services and data sources, providing them with context and enabling them to perform actions.
Q: What permissions are required for the Airtable API key?
A: Your Airtable personal access token should have at least schema.bases:read
and data.records:read
permissions. For write operations, you will need the corresponding write permissions.
Q: Can I contribute to airtable-mcp-server? A: Yes, pull requests are welcomed on GitHub. The project follows semantic versioning for releases.
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
To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your claude_desktop_config.json
:
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
],
"env": {
"AIRTABLE_API_KEY": "pat123.abc123"
}
}
}
}
Replace pat123.abc123
with your Airtable personal access token. Your token should have at least schema.bases:read
and data.records:read
, and optionally the corresponding write permissions.
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 tagsPlease log in to share your review and rating for this MCP.