DataStore Bridge for Airtable Interfaces
This service functions as a Model Context Protocol intermediary, facilitating structured read and write operations with Airtable environments. Airtable, fundamentally a cloud-based spreadsheet and database system, allows data organization into 'bases' and 'tables'. This tool enables large language models to query metadata, examine data structures, and manipulate records within these organized collections, similar to how a Database Management System (DBMS) manages core data interactions.
Author

domdomegg
Quick Info
Actions
Tags
Introduction
This component establishes programmatic connectivity to Airtable datasets via the Model Context Protocol. It acts as the necessary software layer, mediating between the analytical environment and the structured data stores managed by Airtable. This arrangement permits automated inspection of schemas and subsequent data retrieval or modification, echoing the principles of a complete database system.
Related Topics
- Database Management System (DBMS) principles
- Relational data models (tables, rows, columns)
- NoSQL data structures and querying alternatives
- Data modeling and efficient data representation
Setup
To initiate operation, you must first generate a valid Airtable personal access token. This is accomplished by visiting the specified link and configuring the necessary permissions.
Step 1: Create an Airtable personal access token by clicking here. Details:
- Name: Choose any appropriate label, perhaps 'Airtable MCP Server Token'.
- Scopes: Ensure you select at least schema.bases:read, data.records:read. Write access requires schema.bases:write and data.records:write.
- Access: Specify access permissions for the required bases. Selecting 'Add all resources' is advisable if initial scope is uncertain.
Secure this token, as it is crucial for the subsequent connection steps. The format resembles pat123.abc123 but is typically longer.
Step 2: Select the appropriate instructions based on your consuming client application:
Claude Desktop
(Recommended) Via the extensions browser
- Navigate to Settings and locate the Extensions section within Claude Desktop.
- Select 'Browse Extensions' and search for 'Airtable MCP Server'.
- Click 'Install' and input your generated API key when prompted.
(Advanced) Alternative: Via manual .mcpb installation
- Retrieve the most recent compiled build artifact from the GitHub Actions history (the topmost run).
- In the 'Artifacts' section of that page, download the file named
airtable-mcp-server-mcpb. - Rename the downloaded file extension from
.zipto.mcpb. - Execute the
.mcpbfile to launch the installation process within Claude Desktop. - Confirm the installation and supply your necessary API key.
(Advanced) Alternative: Via JSON configuration
- Ensure that Node.js is installed on your system.
- Open Claude Desktop settings and navigate to the Developer area.
- Open the configuration file by selecting 'Edit Config', which accesses
claude_desktop_config.json. - Integrate the subsequent configuration snippet into the existing
mcpServersobject. Substitute the placeholder key with your actual token:
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": [
"-y",
"airtable-mcp-server"
],
"env": {
"AIRTABLE_API_KEY": "pat123.abc123",
}
}
}
}
- Save the file and then restart the Claude Desktop application to apply changes.
Cursor
(Recommended) Via one-click install
- Select the provided installation link
.
- Modify your local
mcp.jsonfile to integrate your specific API key credential.
(Advanced) Alternative: Via JSON configuration
Establish a configuration file either globally in ~/.cursor/mcp.json or locally within the project directory as .cursor/mcp.json. Replace pat123.abc123 with your token in the following structure:
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": ["-y", "airtable-mcp-server"],
"env": {
"AIRTABLE_API_KEY": "pat123.abc123"
}
}
}
}
Cline
(Recommended) Via marketplace
- Access the Cline extension interface and click the 'MCP Servers' icon.
- Perform a search for 'Airtable' and initiate the 'Install' procedure.
- Follow the subsequent on-screen instructions for server deployment.
(Advanced) Alternative: Via JSON configuration
- Open the Cline extension and locate the 'MCP Servers' visual element.
- Select the 'Installed' tab, then utilize the 'Configure MCP Servers' button located at the bottom.
- Insert this configuration object into the
mcpServerssection, updatingpat123.abc123with your valid access key:
{
"mcpServers": {
"airtable": {
"type": "stdio",
"command": "npx",
"args": ["-y", "airtable-mcp-server"],
"env": {
"AIRTABLE_API_KEY": "pat123.abc123"
}
}
}
}
Components
Tools
- list_records
- Retrieves a collection of entries from a designated Airtable table.
-
Input parameters:
baseId(string, mandatory): Identifier for the specific Airtable base.tableId(string, mandatory): Identifier for the targeted table within the base.maxRecords(number, optional): Limits the total returned entries; defaults to 100.filterByFormula(string, optional): Applies an Airtable-specific formula condition to filter results.
-
search_records
- Locates records matching specified text criteria across fields.
-
Input parameters:
baseId(string, mandatory): The identifier for the Airtable base.tableId(string, mandatory): The identifier for the table to be searched.searchTerm(string, mandatory): The exact text string sought within the records.fieldIds(array, optional): An array specifying which field identifiers to restrict the search against. If omitted, all text-type fields are scanned.maxRecords(number, optional): Sets the maximum quantity of matching records returned; defaults to 100.
-
list_bases
- Returns metadata for all accessible Airtable workspace containers.
- No input parameters are necessary for this function.
-
Output provides the base identifier, its designated name, and the current access permission level.
-
list_tables
- Enumerates every table residing within a given base identifier.
- Input parameters:
baseId(string, mandatory): Identifier specifying the relevant Airtable base.detailLevel(string, optional): Controls the extent of detail retrieved for each table (tableIdentifiersOnly,identifiersOnly, orfull).
-
Yields table identifiers, names, descriptions, field definitions, and associated view structures according to the specified
detailLevel. -
describe_table
- Fetches comprehensive structural information for a single table entity.
- Input parameters:
baseId(string, mandatory): The identifier of the containing Airtable base.tableId(string, mandatory): The specific table identifier under examination.detailLevel(string, optional): Governs the level of detail included (tableIdentifiersOnly,identifiersOnly, orfull).
-
Generates output matching the format of
list_tablesbut focused solely on the singular requested table. This is useful for detailed schema inspection without broad base metadata retrieval. -
get_record
- Retrieves an individual data entry using its unique identifier.
-
Input parameters:
baseId(string, mandatory): The ID of the parent base.tableId(string, mandatory): The ID of the table containing the entry.recordId(string, mandatory): The unique ID assigned to the specific record.
-
create_record
- Inserts a brand new data entry into the specified table.
-
Input parameters:
baseId(string, mandatory): The ID of the parent base.tableId(string, mandatory): The ID of the target table.fields(object, mandatory): A mapping of field names to their corresponding new values.
-
update_records
- Modifies the content of one or more existing records within a table.
-
Input parameters:
baseId(string, mandatory): The ID of the parent base.tableId(string, mandatory): The ID of the table holding the records.records(array, mandatory): A list of objects, each containing arecordIdand thefieldsto be modified.
-
delete_records
- Permanently removes specified data entries from a table.
-
Input parameters:
baseId(string, mandatory): The ID of the parent base.tableId(string, mandatory): The ID of the target table.recordIds(array, mandatory): A list containing the unique identifiers of the records slated for deletion.
-
create_table
- Establishes a new table structure within a specified base.
-
Input parameters:
baseId(string, mandatory): The ID of the containing base.name(string, mandatory): The desired name for the newly constructed table.description(string, optional): A summary describing the table's purpose.fields(array, mandatory): Definitions detailing the initial schema fields (including name, type, description, and options).
-
update_table
- Modifies the descriptive metadata (name or description) of an existing table.
-
Input parameters:
baseId(string, mandatory): The ID of the parent base.tableId(string, mandatory): The ID of the table to be altered.name(string, optional): The proposed new name for the table.description(string, optional): The proposed new descriptive text for the table.
-
create_field
- Adds a new column definition to an established table structure.
-
Input parameters:
baseId(string, mandatory): The ID of the parent base.tableId(string, mandatory): The ID of the table receiving the new field.name(string, mandatory): The label for the forthcoming field.type(string, mandatory): The data type classification for the field contents.description(string, optional): Explanatory text for the field's purpose.options(object, optional): Any specialized parameters relevant to the field type.
-
update_field
- Adjusts the designation or summary of an existing field.
- Input parameters:
baseId(string, mandatory): The ID of the parent base.tableId(string, mandatory): The ID of the table containing the field.fieldId(string, mandatory): The unique identifier for the field being modified.name(string, optional): The intended new name for the field.description(string, optional): The revised description for the field.
Resources
The server automatically exposes structural metadata for all accessible Airtable bases and their constituent tables. This metadata originates from Airtable's internal schema API.
- Table Schemas (
airtable://<baseId>/<tableId>/schema) - This endpoint delivers a JSON schema representation detailing a single table's structure.
- Information included comprises:
- Base and table identifiers.
- Table's designated name and accompanying summary.
- Identifier of the primary field.
- Detailed definitions for every field (ID, name, type, description, specific options).
- Definitions for all defined views (ID, name, type).
- This schema information is dynamically inferred from the Airtable metadata service.
Extra Details
This protocol implementation abstracts away the underlying complexities of data transport and security inherent in web APIs. While earlier methods relied on physical means like index cards for small-scale organization, modern systems like Airtable require robust DBMS interaction. The component manages connections, ensuring that LLMs interface with data structures efficiently, regardless of whether the underlying implementation favors traditional relational (row/column) organization or more flexible NoSQL patterns.
Contributing
Contributions via pull requests on GitHub are warmly encouraged for development enhancement. To begin contributing, adhere to these foundational steps:
- Secure installations of Git and Node.js on your development environment.
- Obtain a local copy of the repository through cloning.
- Install necessary external dependencies using the command
npm install. - Execute
npm run testto validate existing functionality. - Compile the production build artifacts using
npm run build. - For iterative development, employ
npm run build:watch. This command automatically recompiles source files following any modification tosrc/index.ts. This allows instant testing of edits by simply reloading the connected desktop client (using Ctrl/Cmd+R).
Releases
Version numbering strictly follows the established semantic versioning specification [https://semver.org/].
To initiate a new formal release cycle, perform the following actions:
- Use the command
npm version <major | minor | patch>to advance the version number accordingly. - Push the changes, including the new version tag, using
git push --follow-tags. - Await the automated publication process managed by GitHub Actions to the NPM registry.
Conclusion
This server component provides a structured bridge, allowing advanced computational models to interact reliably with data organized within the Airtable ecosystem. By correctly handling schema retrieval and data manipulation commands, it helps realize the potential of using organized data stores for complex inferential tasks, moving beyond simple file-based organization into integrated database system interactions.
