Airtable MCP
About
Airtable integration for AI-powered applications via Anthropic's Model Context Protocol (MCP)
Details
- License
- MIT
Explore
- 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 whoami tool
- 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
---
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Airtable MCPCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
- Node.js 18 or later
- An Airtable account with a Personal Access Token
- Your Airtable Base ID (optional — can be discovered via the list_bases tool)
---
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 use list_bases to discover bases dynamically).
---
curl -fsSL https://raw.githubusercontent.com/rashidazarang/airtable-mcp/main/setup.sh | bash
The 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_TOKEN
Add 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? npx can fail to resolve the binary when run from a directory that contains a package.json with the same package name. The cd /tmp && prefix avoids this edge case.
---
| 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 |
---
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
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
upsert
Update or create records based on merge fields
batch_upsert_records
Batch upsert with merge-on fields
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
create_table
Create tables with custom field definitions
update_table
Modify table names and descriptions
delete_table
Remove tables (requires confirmation)
create_field
Add fields to existing tables
update_field
Modify field properties and options
delete_field
Remove fields (requires confirmation)
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
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
create_view
Create views (grid, form, calendar, etc.)
get_view_metadata
Get view details including filters
upload_attachment
Attach files from URLs
create_base
Create new bases with initial structure
list_collaborators
View collaborators and permissions
list_shares
List shared views and configurations
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
whoami
Get current user identity and scopes
list_governance
Return governance allow-lists and PII masking policies
list_exceptions
List recent exceptions and remediation proposals
| 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 |
---
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"airtable mcp": {
"airtable": {
"command": "npx",
"args": [
"-y",
"@rashidazarang/airtable-mcp"
],
"env": {
"AIRTABLE_TOKEN": "YOUR_AIRTABLE_TOKEN",
"AIRTABLE_BASE_ID": "YOUR_BASE_ID"
}
}
}
}
}
McpServers
{
"airtable": {
"command": "npx",
"args": [
"-y",
"@rashidazarang/airtable-mcp"
],
"env": {
"AIRTABLE_TOKEN": "YOUR_AIRTABLE_TOKEN",
"AIRTABLE_BASE_ID": "YOUR_BASE_ID"
}
}
}
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 |
---
Quick Start (Claude Desktop)
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 use list_bases to discover bases dynamically).
---
Quick Start (Claude Code)
One-command install
curl -fsSL https://raw.githubusercontent.com/rashidazarang/airtable-mcp/main/setup.sh | bash
The 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_TOKEN
Manual config
Add 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? npx can fail to resolve the binary when run from a directory that contains a package.json with the same package name. The cd /tmp && prefix avoids this edge case.
---
Overview
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.
Key Features
- 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 whoami tool
- 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
---
Prerequisites
- Node.js 18 or later
- An Airtable account with a Personal Access Token
- Your Airtable Base ID (optional — can be discovered via the list_bases tool)
---
Token Scopes
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) |
---
Usage
Once configured, interact with your Airtable data using natural language:
Basic Operations
- "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'"
Schema Management
- "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"
Record Comments
- "Show me all comments on record rec123"
- "Add a comment to this record: 'Reviewed and approved'"
- "Update my comment to say 'Needs revision'"
Batch Operations
- "Create 5 new records at once in the Tasks table"
- "Update multiple records with new status values"
- "Delete these 3 records in one operation"
Webhooks
- "List all active webhooks in my base"
- "Create a webhook for changes to my Projects table"
---
Available Tools (42)
Core Operations (4 tools)
| 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 |
Record CRUD (5 tools)
| 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 |
Upsert (2 tools)
| Tool | Description |
|------|-------------|
| upsert | Update or create records based on merge fields |
| batch_upsert_records | Batch upsert with merge-on fields |
Schema Discovery (4 tools)
| 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 |
Table Management (3 tools)
| Tool | Description |
|------|-------------|
| create_table | Create tables with custom field definitions |
| update_table | Modify table names and descriptions |
| delete_table | Remove tables (requires confirmation) |
Field Management (3 tools)
| Tool | Description |
|------|-------------|
| create_field | Add fields to existing tables |
| update_field | Modify field properties and options |
| delete_field | Remove fields (requires confirmation) |
Batch Operations (3 tools)
| 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 |
Webhook Management (5 tools)
| 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 |
Views & Attachments (3 tools)
| Tool | Description |
|------|-------------|
| create_view | Create views (grid, form, calendar, etc.) |
| get_view_metadata | Get view details including filters |
| upload_attachment | Attach files from URLs |
Base Management (3 tools)
| Tool | Description |
|------|-------------|
| create_base | Create new bases with initial structure |
| list_collaborators | View collaborators and permissions |
| list_shares | List shared views and configurations |
Record Comments (4 tools)
| 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 |
User Info (1 tool)
| Tool | Description |
|------|-------------|
| whoami | Get current user identity and scopes |
Governance & Administration (2 tools)
| Tool | Description |
|------|-------------|
| list_governance | Return governance allow-lists and PII masking policies |
| list_exceptions | List recent exceptions and remediation proposals |
---
AI Intelligence Suite
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 |
---
Advanced Configuration
Smithery Cloud
{
"mcpServers": {
"airtable": {
"command": "npx",
"args": [
"@smithery/cli",
"run",
"@rashidazarang/airtable-mcp"
],
"env": {
"AIRTABLE_TOKEN": "YOUR_TOKEN",
"AIRTABLE_BASE_ID": "YOUR_BASE_ID"
}
}
}
}
Environment Variables
| 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 |
---
Development
> Not required for users. Clone the repo only if you want to contribute or modify the server. End users should use npx as shown in the Quick Start sections above.
git clone https://github.com/rashidazarang/airtable-mcp.git
cd airtable-mcp
npm install
npm run build
Testing
npm run test:types # Type checking
npm test # Run test suite
Project Structure
airtable-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
---
Troubleshooting
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_bases to discover accessible bases
---
Documentation
---
Contributing
Contributions are welcome. Please open an issue first to discuss major changes.
---
License
MIT License — see LICENSE for details.
---
Support
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



