A Model Context Protocol (MCP) server for Airtable with full CRUD operations, schema management, record comments, webhooks, batch operations, governance controls, and AI-powered analytics.
Version 4.0.0 | MCP Protocol 2024-11-05 |
No installation required — just add this to your Claude Desktop config and restart:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": ["-y", "@rashidazarang/airtable-mcp"],
"env": {
"AIRTABLE_TOKEN": "YOUR_AIRTABLE_TOKEN",
"AIRTABLE_BASE_ID": "YOUR_BASE_ID"
}
}
}
}That's it. npx downloads and runs the server automatically. No git clone, no npm install.
Get your token at airtable.com/create/tokens — grant all scopes listed under Token Scopes below. Get your Base ID from the URL when viewing your base:
https://airtable.com/[BASE_ID]/...(or omit it and uselist_basesto discover bases dynamically).
curl -fsSL https://raw.githubusercontent.com/rashidazarang/airtable-mcp/main/setup.sh | bashThe script checks prerequisites, prompts for your Airtable token, and writes the MCP config to ~/.claude.json. Restart Claude Code (or run /mcp) to connect.
You can also pass your token directly:
curl -fsSL https://raw.githubusercontent.com/rashidazarang/airtable-mcp/main/setup.sh | bash -s -- YOUR_AIRTABLE_TOKENAdd to ~/.claude.json under mcpServers:
{
"airtable": {
"type": "stdio",
"command": "/bin/bash",
"args": ["-c", "cd /tmp && npx -y @rashidazarang/airtable-mcp"],
"env": {
"AIRTABLE_TOKEN": "YOUR_AIRTABLE_TOKEN"
}
}
}Why the bash wrapper?
npxcan fail to resolve the binary when run from a directory that contains apackage.jsonwith the same package name. Thecd /tmp &&prefix avoids this edge case.
This server provides comprehensive Airtable integration through the Model Context Protocol, enabling natural language interactions with your Airtable data. It includes 42 tools covering every Airtable PAT scope and 10 AI prompt templates for intelligent analytics.
- Full CRUD Operations — Create, read, update, and delete records with filtering and pagination
- Record Comments — List, create, update, and delete comments on records
- Schema Management — Create and modify tables, fields, and views programmatically
- Batch Operations — Process up to 10 records per operation for improved performance
- Webhook Management — Set up real-time notifications for data changes
- Governance & Compliance — Allow-list governance, PII masking, and exception tracking
- User Identity — Verify token identity with the
whoamitool - AI Analytics — 10 prompt templates for predictive analytics, natural language queries, and automated insights
- Multi-Base Support — Discover and work with multiple bases dynamically
- Type Safety — Full TypeScript support with comprehensive type definitions
- Node.js 18 or later
- An Airtable account with a Personal Access Token
- Your Airtable Base ID (optional — can be discovered via the
list_basestool)
Create a Personal Access Token at airtable.com/create/tokens with these scopes:
| Scope | Purpose |
|---|---|
data.records:read |
Read records |
data.records:write |
Create, update, delete records |
data.recordComments:read |
Read record comments |
data.recordComments:write |
Create, update, delete comments |
schema.bases:read |
View table schemas |
schema.bases:write |
Create and modify tables and fields |
user.email:read |
Read user identity (whoami) |
webhook:manage |
Manage webhooks (optional) |
Once configured, interact with your Airtable data using natural language:
- "List all my accessible Airtable bases"
- "Show me all records in the Projects table"
- "Create a new task with priority 'High' and due date tomorrow"
- "Update the status of task ID rec123 to 'Completed'"
- "Search for records where Status equals 'Active'"
- "Show me the complete schema for this base"
- "Create a new table called 'Tasks' with Name, Priority, and Due Date fields"
- "Add a Status field to the Projects table"
- "Show me all comments on record rec123"
- "Add a comment to this record: 'Reviewed and approved'"
- "Update my comment to say 'Needs revision'"
- "Create 5 new records at once in the Tasks table"
- "Update multiple records with new status values"
- "Delete these 3 records in one operation"
- "List all active webhooks in my base"
- "Create a webhook for changes to my Projects table"
| Tool | Description |
|---|---|
list_bases |
List all accessible bases with permissions |
describe |
Describe base or table schema (supports detail levels) |
query |
Query records with filtering, sorting, and pagination |
search_records |
Advanced search with Airtable formulas |
| Tool | Description |
|---|---|
list_records |
List records with field selection and pagination |
get_record |
Retrieve a single record by ID |
create |
Create new records (requires dryRun diff review) |
update |
Update existing records (requires dryRun diff review) |
delete_record |
Remove a record from a table |
| Tool | Description |
|---|---|
upsert |
Update or create records based on merge fields |
batch_upsert_records |
Batch upsert with merge-on fields |
| Tool | Description |
|---|---|
list_tables |
Get all tables in a base with schema info |
get_base_schema |
Get complete schema for any base |
list_field_types |
Reference guide for available field types |
get_table_views |
List all views for a table |
| Tool | Description |
|---|---|
create_table |
Create tables with custom field definitions |
update_table |
Modify table names and descriptions |
delete_table |
Remove tables (requires confirmation) |
| Tool | Description |
|---|---|
create_field |
Add fields to existing tables |
update_field |
Modify field properties and options |
delete_field |
Remove fields (requires confirmation) |
| Tool | Description |
|---|---|
batch_create_records |
Create up to 10 records at once |
batch_update_records |
Update up to 10 records simultaneously |
batch_delete_records |
Delete up to 10 records in one operation |
| Tool | Description |
|---|---|
list_webhooks |
View all configured webhooks |
create_webhook |
Set up real-time notifications |
delete_webhook |
Remove webhook configurations |
get_webhook_payloads |
Retrieve notification history |
refresh_webhook |
Extend webhook expiration |
| Tool | Description |
|---|---|
create_view |
Create views (grid, form, calendar, etc.) |
get_view_metadata |
Get view details including filters |
upload_attachment |
Attach files from URLs |
| Tool | Description |
|---|---|
create_base |
Create new bases with initial structure |
list_collaborators |
View collaborators and permissions |
list_shares |
List shared views and configurations |
| Tool | Description |
|---|---|
list_comments |
List comments on a record |
create_comment |
Add a comment to a record |
update_comment |
Edit an existing comment |
delete_comment |
Remove a comment |
| Tool | Description |
|---|---|
whoami |
Get current user identity and scopes |
| Tool | Description |
|---|---|
list_governance |
Return governance allow-lists and PII masking policies |
list_exceptions |
List recent exceptions and remediation proposals |
Ten AI prompt templates for advanced analytics:
| Prompt | Description |
|---|---|
analyze_data |
Statistical analysis with anomaly detection |
create_report |
Intelligent report generation |
data_insights |
Business intelligence and pattern discovery |
optimize_workflow |
Automation recommendations |
smart_schema_design |
Database optimization suggestions |
data_quality_audit |
Quality assessment and remediation |
predictive_analytics |
Forecasting and trend prediction |
natural_language_query |
Process questions with context awareness |
smart_data_transformation |
AI-assisted data processing |
automation_recommendations |
Workflow optimization with cost-benefit analysis |
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": [
"@smithery/cli",
"run",
"@rashidazarang/airtable-mcp"
],
"env": {
"AIRTABLE_TOKEN": "YOUR_TOKEN",
"AIRTABLE_BASE_ID": "YOUR_BASE_ID"
}
}
}
}| Variable | Required | Description |
|---|---|---|
AIRTABLE_TOKEN |
Yes | Personal Access Token |
AIRTABLE_BASE_ID |
No | Default base ID (discoverable via list_bases) |
LOG_LEVEL |
No | Logging level (default: info) |
MCP_HTTP_PORT |
No | Enable HTTP transport for hosted deployments |
Not required for users. Clone the repo only if you want to contribute or modify the server. End users should use
npxas shown in the Quick Start sections above.
git clone https://github.com/rashidazarang/airtable-mcp.git
cd airtable-mcp
npm install
npm run buildnpm run test:types # Type checking
npm test # Run test suiteairtable-mcp/
├── src/typescript/ # TypeScript implementation
│ ├── app/
│ │ ├── tools/ # 42 tool implementations
│ │ ├── prompts/ # 10 AI prompt registrations
│ │ ├── airtable-client.ts
│ │ ├── governance.ts
│ │ └── context.ts
│ └── airtable-mcp-server.ts
├── dist/ # Compiled output
├── docs/ # Documentation
├── types/ # TypeScript definitions
└── bin/ # CLI executables
Connection Issues
- Verify the MCP server is running
- Restart your MCP client
- Check that your token has the required scopes
Invalid Token
- Verify your Personal Access Token is correct
- Confirm the token has the required scopes
- Check for extra whitespace in credentials
Base Not Found
- Confirm your Base ID is correct
- Verify your token has access to the base
- Use
list_basesto discover accessible bases
Contributions are welcome. Please open an issue first to discuss major changes.
MIT License — see LICENSE for details.