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 AIRTABLEAPIKEY (replacing the placeholder in the generated config).
Components
Tools
- listrecords
- Lists records from a specified Airtable table
- Input parameters:
- baseId (string, required): The ID of the Airtable base
- tableId (string, required): The ID of the table to query
- maxRecords (number, optional): Maximum number of records to return. Defaults to 100.
- filterByFormula (string, optional): Airtable formula to filter records
- searchrecords
- Search for records containing specific text
- Input parameters:
- baseId (string, required): The ID of the Airtable base
- tableId (string, required): The ID of the table to query
- searchTerm (string, required): Text to search for in records
- fieldIds (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.
- listbases
- Lists all accessible Airtable bases
- No input parameters required
- Returns base ID, name, and permission level
- listtables
- Lists all tables in a specific base
- Input parameters:
- baseId (string, required): The ID of the Airtable base
- detailLevel (string, optional): The amount of detail to get about the tables (tableIdentifiersOnly, identifiersOnly, or full)
- Returns table ID, name, description, fields, and views (to the given detailLevel)
- describetable
- Gets detailed information about a specific table
- Input parameters:
- baseId (string, required): The ID of the Airtable base
- tableId (string, required): The ID of the table to describe
- detailLevel (string, optional): The amount of detail to get about the table (tableIdentifiersOnly, identifiersOnly, or full)
- Returns the same format as listtables but for a single table
- Useful for getting details about a specific table without fetching information about all tables in the base
- getrecord
- Gets a specific record by ID
- Input parameters:
- baseId (string, required): The ID of the Airtable base
- tableId (string, required): The ID of the table
- recordId (string, required): The ID of the record to retrieve
- createrecord
- Creates a new record in a table
- Input parameters:
- baseId (string, required): The ID of the Airtable base
- tableId (string, required): The ID of the table
- fields (object, required): The fields and values for the new record