A Model Context Protocol server that provides tools for interacting with Airtable's API. This server enables programmatic management of Airtable bases, tables, fields, and records through Claude Desktop.
This MCP server has an special implementation that allows it to build tables in stages, leveraging the agentic capabilities of Claude and minimizing the failure rate present in other MCP servers for Airtable when building complex tables, also comes with system prompts to create projects inside Claude Desktop with even further guidance for the LLM.
- Clone the repository:
git clone https://github.com/felores/airtable-mcp.git
cd airtable-mcp
- Install dependencies:
npm install
- Build the server:
npm run build
- Log in to your Airtable account at airtable.com
- Create a personal access token at Airtable's Builder Hub
- In the Personal access token section select these scopes:
- data.records:read
- data.records:write
- schema.bases:read
- schema.bases:write
- Select the workspace or bases you want to give access to the personal access token
- Keep this key secure - you'll need it for configuration
- Open File Explorer and navigate to:
%APPDATA%\Roaming\Claude
- Create or edit
claude_desktop_config.json
:
{
"mcpServers": {
"airtable": {
"command": "node",
"args": ["C:/path/to/airtable-mcp/build/index.js"],
"env": {
"AIRTABLE_API_KEY": "your_api_key_here"
}
}
}
}
- Open Terminal and navigate to:
~/Library/Application Support/Claude/
- Create or edit
claude_desktop_config.json
:
{
"mcpServers": {
"airtable": {
"command": "node",
"args": ["/path/to/airtable-mcp/build/index.js"],
"env": {
"AIRTABLE_API_KEY": "your_api_key_here"
}
}
}
}
- Start Claude Desktop
- The Airtable MCP server should be listed in the "Connected MCP Servers" section
- Test with a simple command:
List all bases
- List Bases
Lists all accessible Airtable bases with their IDs and permission levels.
{ "name": "list_bases" }
-
List Tables
{ "name": "list_tables", "arguments": { "base_id": "your_base_id" } }
Returns complete schema including tables, fields, and views.
-
Create Table
{ "name": "create_table", "arguments": { "base_id": "your_base_id", "table_name": "Projects", "description": "Track project progress", "fields": [ { "name": "Project Name", "type": "singleLineText", "description": "Name of the project" }, { "name": "Status", "type": "singleSelect", "description": "Project status", "options": { "choices": [ {"name": "Planning", "color": "blueBright"}, {"name": "In Progress", "color": "yellowBright"}, {"name": "Completed", "color": "greenBright"} ] } } ] } }
-
Update Table
{ "name": "update_table", "arguments": { "base_id": "your_base_id", "table_id": "your_table_id", "name": "Updated Name", "description": "Updated description" } }
-
Create Field
{ "name": "create_field", "arguments": { "base_id": "your_base_id", "table_id": "your_table_id", "field": { "name": "Due Date", "type": "date", "description": "Project deadline", "options": { "dateFormat": { "name": "local" } } } } }
-
Update Field
{ "name": "update_field", "arguments": { "base_id": "your_base_id", "table_id": "your_table_id", "field_id": "your_field_id", "updates": { "name": "Updated Field Name", "description": "Updated description" } } }
-
List Records
{ "name": "list_records", "arguments": { "base_id": "your_base_id", "table_name": "Your Table", "max_records": 100 } }
-
Create Record
{ "name": "create_record", "arguments": { "base_id": "your_base_id", "table_name": "Projects", "fields": { "Project Name": "New Website", "Status": "Planning", "Due Date": "2024-03-01" } } }
-
Update Record
{ "name": "update_record", "arguments": { "base_id": "your_base_id", "table_name": "Projects", "record_id": "rec123abc", "fields": { "Status": "In Progress", "Last Updated": "2024-01-15" } } }
-
Delete Record
{ "name": "delete_record", "arguments": { "base_id": "your_base_id", "table_name": "Projects", "record_id": "rec123abc" } }
-
Search Records
{ "name": "search_records", "arguments": { "base_id": "your_base_id", "table_name": "Projects", "field_name": "Status", "value": "In Progress" } }
singleLineText
: Single line text fieldmultilineText
: Multi-line text areaemail
: Email address fieldphoneNumber
: Phone number field
{
"name": "Quantity",
"type": "number",
"description": "Item quantity",
"options": {
"precision": 0
}
}
{
"name": "Budget",
"type": "currency",
"description": "Project budget",
"options": {
"precision": 2,
"symbol": "$"
}
}
{
"name": "Due Date",
"type": "date",
"description": "Project deadline",
"options": {
"dateFormat": {
"name": "local"
}
}
}
-
Single Select
{ "name": "Category", "type": "singleSelect", "description": "Project category", "options": { "choices": [ {"name": "Development", "color": "blueBright"}, {"name": "Design", "color": "purpleBright"}, {"name": "Marketing", "color": "greenBright"} ] } }
-
Multi Select
{ "name": "Tags", "type": "multiSelect", "description": "Project tags", "options": { "choices": [ {"name": "Urgent", "color": "redBright"}, {"name": "Bug Fix", "color": "orangeBright"}, {"name": "Feature", "color": "blueBright"} ] } }
Available colors for select fields:
blueBright
redBright
greenBright
yellowBright
purpleBright
pinkBright
grayBright
cyanBright
orangeBright
blueDark1
greenDark1
We welcome contributions to improve the Airtable MCP server! Here's how you can contribute:
-
Fork the Repository
- Visit https://github.com/felores/airtable-mcp
- Click the "Fork" button in the top right
- Clone your fork locally:
git clone https://github.com/your-username/airtable-mcp.git
-
Create a Feature Branch
git checkout -b feature/your-feature-name
-
Make Your Changes
- Follow the existing code style
- Add tests if applicable
- Update documentation as needed
-
Commit Your Changes
git add . git commit -m "feat: add your feature description"
-
Push to Your Fork
git push origin feature/your-feature-name
-
Create a Pull Request
- Go to your fork on GitHub
- Click "New Pull Request"
- Select your feature branch
- Describe your changes in detail
- Use TypeScript for new code
- Follow semantic commit messages
- Update documentation for new features
- Add examples for new functionality
- Test your changes thoroughly
- Open an issue for bugs or feature requests
- Join discussions in existing issues
- Ask questions in pull requests
Your contributions help make this tool better for everyone. Whether it's:
- Adding new features
- Fixing bugs
- Improving documentation
- Suggesting enhancements
We appreciate your help in making the Airtable MCP server more powerful and user-friendly!
MIT
Made with ❤️ by the Airtable MCP community