Airtable MCP Server
Create a powerful Model Context Protocol (MCP) server for Airtable in minutes with our AI Gateway. This guide walks you through setting up seamless database integration with spreadsheet-like ease and instant API authentication.
About Airtable API
Airtable is a cloud-based platform that combines the simplicity of a spreadsheet with the power of a database. The API enables programmatic access to your bases, tables, records, and views, allowing for powerful integrations and automations.
Key Capabilities
- Database Management: Create, read, update, and delete records
- Schema Operations: Manage tables, fields, and views
- Collaboration: Share bases and manage permissions
- Attachments: Upload and manage file attachments
- Formulas: Leverage Airtable's formula engine
- Automations: Trigger workflows and integrations
- Real-time Updates: Subscribe to changes via webhooks
- Enterprise Features: Advanced security and audit logs
API Features
- RESTful API: Standard HTTP methods
- Personal Access Tokens: Secure authentication
- Rate Limiting: 5 requests per second per base
- Pagination: Handle large datasets efficiently
- Field Types: Support for 20+ field types
- Filtering: Complex queries with filterByFormula
- Sorting: Multi-field sorting capabilities
- Batch Operations: Create/update multiple records
What You Can Do with Airtable MCP Server
The MCP server transforms Airtable API into a natural language interface, enabling AI agents to:
Database Operations
-
Record Management
- "Create new customer record"
- "Update project status to completed"
- "Delete old inventory items"
- "Find all active clients"
-
Table Operations
- "List all tables in Sales base"
- "Get table schema"
- "Count records in Orders table"
- "Export table to CSV"
-
View Management
- "Show records from 'This Week' view"
- "Apply filters from saved view"
- "Create custom filtered view"
- "Sort by priority and date"
Search and Filter
-
Basic Queries
- "Find products under $50"
- "Search for customers in California"
- "Get overdue tasks"
- "Show high-priority items"
-
Complex Filtering
- "Find orders from last month over $1000"
- "Get tasks assigned to John due this week"
- "Show products with low inventory"
- "Filter by multiple conditions"
-
Formula-based Queries
- "Calculate total revenue by month"
- "Find records matching formula"
- "Apply complex business logic"
- "Use Airtable functions"
File Management
-
Attachments
- "Upload invoice PDF"
- "Add product images"
- "Download all attachments"
- "Replace existing files"
-
Media Handling
- "Process image thumbnails"
- "Get file metadata"
- "Validate file types"
- "Manage storage limits"
Data Synchronization
-
Import/Export
- "Import CSV data"
- "Export to Excel format"
- "Sync with external systems"
- "Bulk data operations"
-
Integration Support
- "Sync with CRM"
- "Update from webhooks"
- "Push to analytics"
- "Real-time updates"
Collaboration Features
-
Base Sharing
- "Share base with team"
- "Set view permissions"
- "Manage collaborators"
- "Control access levels"
-
Comments & Activity
- "Add comment to record"
- "View revision history"
- "Track changes"
- "Get activity feed"
Analytics and Reporting
-
Aggregations
- "Sum sales by region"
- "Count tasks by status"
- "Average project duration"
- "Group by categories"
-
Custom Reports
- "Generate monthly summary"
- "Create pivot tables"
- "Build dashboards"
- "Export visualizations"
Prerequisites
- Access to Cequence AI Gateway
- Airtable account (Free tier or higher)
- Base ID and table names
- Personal Access Token or API key
Step 1: Configure Airtable API Access
1.1 Get Your API Key
- Log in to Airtable
- Go to Account Overview
- Click on "API" in the left sidebar
- Generate a Personal Access Token with required scopes
1.2 Find Your Base ID
- Open your Airtable base
- Click "Help" "API documentation"
- Copy the Base ID (starts with 'app')
- Note your table names
1.3 Set Token Scopes
Configure your token with these scopes:
data.records:read
- Read recordsdata.records:write
- Create/update recordsdata.recordComments:read
- Read commentsdata.recordComments:write
- Write commentsschema.bases:read
- Read base schemaschema.bases:write
- Modify schema (if needed)
Step 2-4: Standard Setup
Follow standard steps to access AI Gateway, find Airtable API, and create MCP server.
Step 5: Configure API Endpoints
- Base URL:
https://api.airtable.com/v0/{baseId}
- Table Selection: Choose tables to expose
- View Configuration: Select default views
- Click Next
Step 6: MCP Server Configuration
- Name: "Airtable Database"
- Description: "Spreadsheet database integration"
- Rate Limits: Configure based on your plan
- Click Next
Step 7: Configure Authentication
- Authentication Type: Bearer Token
- Token Format: Personal Access Token
- Header:
Authorization: Bearer YOUR_TOKEN
- Test connection with sample request
Available Airtable API Operations
Record Operations
-
List Records
- Get all records from table
- Apply filters and sorting
- Paginate through results
- Select specific fields
-
Create Records
- Single record creation
- Batch create (up to 10)
- Set field values
- Return created data
-
Update Records
- Update specific fields
- Replace entire record
- Batch updates
- Conditional updates
-
Delete Records
- Single deletion
- Batch delete
- Soft delete options
- Cascade handling
Schema Operations
-
Get Base Schema
- List all tables
- Field configurations
- View definitions
- Relationships
-
Table Management
- Create new tables
- Modify field types
- Add/remove fields
- Set validations
Advanced Features
-
Webhooks
- Subscribe to changes
- Real-time notifications
- Event filtering
- Payload customization
-
Metadata API
- Base information
- Collaborator details
- Permission levels
- Usage statistics
Step 8-10: Complete Setup
Configure security settings, choose deployment options, and deploy your server.
Using Your Airtable MCP Server
With Claude Desktop
{
"servers": {
"airtable": {
"url": "your-mcp-server-url",
"auth": {
"type": "bearer",
"token": "your-personal-access-token"
},
"config": {
"baseId": "appXXXXXXXXXXXXXX",
"tables": ["Customers", "Orders", "Products"]
}
}
}
}
Natural Language Commands
- "Show all customers from the West region"
- "Create a new order for John Doe"
- "Update product inventory after sale"
- "Find overdue invoices from this month"
- "Calculate total revenue by product category"
API Integration Example
// Initialize MCP client
const mcpClient = new MCPClient({
serverUrl: 'your-mcp-server-url',
auth: {
type: 'bearer',
token: 'your-personal-access-token'
}
});
// List records with filtering
const customers = await mcpClient.airtable.listRecords({
tableName: 'Customers',
filterByFormula: "AND({Status} = 'Active', {Region} = 'West')",
sort: [
{ field: 'Company Name', direction: 'asc' }
],
maxRecords: 100,
fields: ['Company Name', 'Contact', 'Email', 'Status']
});
console.log(`Found ${customers.records.length} active customers in West region`);
// Create a new record
const newOrder = await mcpClient.airtable.createRecord({
tableName: 'Orders',
fields: {
'Order Number': 'ORD-2025-001',
'Customer': ['recXXXXXXXXXXXXXX'], // Link to customer record
'Products': ['recYYYYYYYYYYYYYY', 'recZZZZZZZZZZZZZZ'], // Multiple products
'Order Date': '2025-01-30',
'Status': 'Pending',
'Total Amount': 1500.00,
'Notes': 'Rush delivery requested'
}
});
console.log(`Created order: ${newOrder.id}`);
// Update multiple records
const updates = await mcpClient.airtable.updateRecords({
tableName: 'Products',
records: [
{
id: 'recYYYYYYYYYYYYYY',
fields: {
'Inventory': 45,
'Last Updated': new Date().toISOString()
}
},
{
id: 'recZZZZZZZZZZZZZZ',
fields: {
'Inventory': 120,
'Last Updated': new Date().toISOString()
}
}
]
});
// Complex query with formula
const overdueInvoices = await mcpClient.airtable.listRecords({
tableName: 'Invoices',
filterByFormula: `AND(
{Status} != 'Paid',
IS_BEFORE({Due Date}, TODAY()),
{Amount} > 1000
)`,
sort: [
{ field: 'Due Date', direction: 'asc' },
{ field: 'Amount', direction: 'desc' }
]
});
console.log(`${overdueInvoices.records.length} overdue invoices over $1000`);
// Upload attachment
const attachment = await mcpClient.airtable.uploadAttachment({
tableName: 'Documents',
recordId: 'recAAAAAAAAAAAAAA',
fieldName: 'Files',
file: {
url: 'https://example.com/invoice.pdf',
filename: 'Invoice-2025-001.pdf'
}
});
// Get base schema
const schema = await mcpClient.airtable.getBaseSchema();
console.log(`Base contains ${schema.tables.length} tables`);
schema.tables.forEach(table => {
console.log(`\nTable: ${table.name}`);
console.log(`Fields: ${table.fields.map(f => f.name).join(', ')}`);
console.log(`Views: ${table.views.map(v => v.name).join(', ')}`);
});
// Aggregate data
const salesSummary = await mcpClient.airtable.aggregate({
tableName: 'Sales',
groupBy: ['Product Category', 'Region'],
aggregations: [
{ field: 'Amount', function: 'sum' },
{ field: 'Amount', function: 'avg' },
{ field: 'Order ID', function: 'count' }
],
filterByFormula: "IS_AFTER({Date}, '2025-01-01')"
});
// Watch for changes (webhook)
const webhook = await mcpClient.airtable.createWebhook({
baseId: 'appXXXXXXXXXXXXXX',
tables: ['Orders', 'Customers'],
events: ['record.created', 'record.updated'],
callbackUrl: 'https://your-app.com/webhooks/airtable'
});
// Handle webhook events
app.post('/webhooks/airtable', (req, res) => {
const { baseId, tableId, recordId, event, fields } = req.body;
if (event === 'record.created' && tableId === 'Orders') {
console.log(`New order created: ${recordId}`);
// Process new order...
}
res.status(200).send('OK');
});
Common Use Cases
CRM Integration
- Customer database management
- Sales pipeline tracking
- Contact relationship mapping
- Activity logging
Project Management
- Task tracking and assignment
- Timeline and deadline management
- Resource allocation
- Progress reporting
Inventory Management
- Stock level tracking
- Order fulfillment
- Supplier management
- Reorder automation
Content Calendar
- Editorial planning
- Publishing schedule
- Asset management
- Team collaboration
Best Practices
-
Rate Limit Management:
- Implement request queuing
- Use batch operations
- Cache frequently accessed data
- Monitor API usage
-
Data Modeling:
- Design efficient table relationships
- Use appropriate field types
- Implement data validation
- Plan for scalability
-
Performance Optimization:
- Select only needed fields
- Use view filters
- Implement pagination
- Optimize formulas
Troubleshooting
Common Issues
-
Authentication Errors
- Verify Personal Access Token
- Check token scopes
- Ensure base access permissions
- Validate token expiration
-
Rate Limiting
- Implement exponential backoff
- Use batch operations
- Queue requests appropriately
- Monitor usage patterns
-
Data Sync Issues
- Verify field mappings
- Check data types
- Handle relationship fields
- Validate formula syntax
Getting Help
- Documentation: AI Gateway Docs
- Support: support@cequence.ai
- Airtable API Docs: airtable.com/api