Airtable MCP Server
Allows retrieving records from Airtable bases using the getAirtableRecord tool, with support for validation, error handling, and rate limiting.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Airtable MCP ServerGet record recABC123DEF456 from Artists table in base appXYZ789ABC123"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Airtable MCP Server
A Model Context Protocol (MCP) server for Airtable integration that allows AI assistants to retrieve records from Airtable bases.
๐ Quick Start
Prerequisites
Node.js 18+
Airtable Personal Access Token
Airtable base with accessible tables
Installation
Clone and setup the project:
git clone <repository-url> cd airtable-mcp-server npm installGet your Airtable Personal Access Token:
Create a new token with read permissions for your target bases
Copy the token (format:
patXXXXXXXXXXXXXX.xxxxxxxxxx...)
Configure environment:
cp .env.example .env # Edit .env and set your AIRTABLE_PERSONAL_ACCESS_TOKENBuild and test:
npm run build npm start
Related MCP server: Airtable MCP Server
๐ง Usage
The server provides one tool: getAirtableRecord
Tool Parameters
Parameter | Type | Required | Description |
| string | Yes | Airtable record ID (format: |
| string | Yes | Airtable base ID (format: |
| string | Yes | Name of the table containing the record |
Example Usage
Input:
{
"recordId": "recABC123DEF456",
"baseId": "appXYZ789ABC123",
"tableName": "Artists"
}Output:
{
"content": [
{
"type": "text",
"text": "{\"id\":\"recABC123DEF456\",\"fields\":{\"Name\":\"Vincent van Gogh\",\"Bio\":\"Dutch painter...\",\"Genre\":[\"Post-Impressionism\"]},\"createdTime\":\"2024-01-15T10:30:00.000Z\"}"
}
]
}๐ MCP Client Integration
Claude Desktop
Add to your ~/.claude/mcp.json (see examples/claude-desktop.json):
{
"mcpServers": {
"airtable": {
"command": "node",
"args": ["/path/to/airtable-mcp-server/dist/index.js"],
"env": {
"AIRTABLE_PERSONAL_ACCESS_TOKEN": "your_token_here"
}
}
}
}Cursor IDE
Add to your .cursor/mcp.json (see examples/cursor-ide.json):
{
"mcpServers": {
"airtable": {
"command": "node",
"args": ["./dist/index.js"],
"env": {
"AIRTABLE_PERSONAL_ACCESS_TOKEN": "your_token_here"
}
}
}
}VS Code
Add to your MCP configuration (see examples/vscode.json):
{
"mcpServers": {
"airtable": {
"command": "node",
"args": ["./dist/index.js"],
"env": {
"AIRTABLE_PERSONAL_ACCESS_TOKEN": "your_token_here"
},
"transport": "stdio"
}
}
}Global Installation (NPM)
npm install -g airtable-mcp-server
# Then in your MCP client config:
{
"command": "npx",
"args": ["-y", "airtable-mcp-server@latest"]
}๐ ๏ธ Development
Scripts
Command | Description |
| Development mode with hot reload |
| Compile TypeScript to JavaScript |
| Run compiled server |
| Remove build artifacts |
| Run unit tests |
| Run integration tests |
| Run all tests |
Project Structure
airtable-mcp-server/
โโโ src/
โ โโโ index.ts # Server entry point
โ โโโ config/
โ โ โโโ index.ts # Configuration management
โ โ โโโ validation.ts # Config validation
โ โโโ tools/
โ โ โโโ index.ts # Tool registry
โ โ โโโ getRecord.ts # Record retrieval tool
โ โโโ types/
โ โ โโโ index.ts # Type definitions
โ โโโ utils/
โ โโโ error.ts # Error handling
โ โโโ validation.ts # Input validation
โโโ tests/
โ โโโ integration.test.ts # Integration tests
โ โโโ unit/
โ โ โโโ tools.test.ts # Unit tests
โ โโโ fixtures/
โ โโโ sample-record.json # Test data
โโโ examples/
โ โโโ claude-desktop.json # Claude Desktop config
โ โโโ cursor-ide.json # Cursor IDE config
โ โโโ vscode.json # VS Code config
โ โโโ usage.md # Usage examples
โโโ docs/
โ โโโ DEPLOYMENT.md # Deployment guide
โโโ dist/ # Compiled JavaScript (generated)
โโโ PRD.md # Product requirements
โโโ CLAUDE.md # Claude Code guidance
โโโ package.json
โโโ tsconfig.json
โโโ .env.example
โโโ README.md๐ Security
Token Management
Environment Only: Never commit tokens to version control
Minimal Scope: Use read-only permissions for target bases only
Token Rotation: Support for refreshing tokens when needed
Input Validation
Record IDs must match pattern:
rec[A-Za-z0-9]{14}Base IDs must match pattern:
app[A-Za-z0-9]{14}Table names are sanitized for safe usage
Rate Limiting
Respects Airtable's 5 requests/second per base limit
Implements exponential backoff for rate limit errors
Configurable retry attempts and delays
โ๏ธ Configuration
Environment variables:
Variable | Required | Default | Description |
| Yes | - | Your Airtable PAT |
| No | 30000 | Request timeout (ms) |
| No | 3 | Number of retry attempts |
| No | 1000 | Retry delay (ms) |
๐จ Error Handling
The server handles various error scenarios:
Error Type | HTTP Status | Description |
Invalid Record ID | 404 | Record not found or invalid format |
Authentication Failure | 401 | Invalid or expired token |
Access Forbidden | 403 | Token lacks permissions |
Rate Limit Exceeded | 429 | Too many requests |
Invalid Parameters | 422 | Malformed request data |
Server Error | 500+ | Airtable service issues |
All errors return structured responses with helpful messages.
๐ Performance
Requirements Met
โ Response Time: <2 seconds for record retrieval
โ Memory Usage: <50MB baseline footprint
โ Concurrent Requests: Handles up to Airtable's rate limits
โ Error Recovery: Graceful handling with exponential backoff
Monitoring
Request/response logging to stderr
Configuration validation on startup
Structured error messages for debugging
๐งช Testing
Manual Testing
Valid Record Retrieval:
# Replace with your actual IDs echo '{"recordId":"recYourRecordId","baseId":"appYourBaseId","tableName":"YourTable"}' | node dist/index.jsError Scenarios:
Invalid record ID format
Non-existent record
Invalid base ID
Missing permissions
Rate limiting
Test Cases
The implementation includes comprehensive error handling for:
โ Successful record retrieval
โ Validation errors (invalid ID formats)
โ Authentication failures (401/403)
โ Not found errors (404)
โ Rate limiting (429)
โ Server errors (500+)
๐ Future Enhancements
Planned Features
Additional Tools: Create, update, delete operations
Batch Operations: Multi-record processing
Advanced Queries: Formula-based filtering
Field Selection: Granular field retrieval
HTTP Transport: REST API support
Caching: Redis-based response caching
Production Features
OAuth integration
Multi-base support
Audit logging
High availability deployment
๐ Troubleshooting
Common Issues
Server won't start:
Check that
AIRTABLE_PERSONAL_ACCESS_TOKENis setVerify token has read permissions for target bases
Ensure Node.js 18+ is installed
Authentication errors:
Verify token is valid and not expired
Check token has access to specified base
Confirm base ID format:
appXXXXXXXXXXXXXX
Record not found:
Verify record ID format:
recXXXXXXXXXXXXXXCheck record exists in specified table
Confirm table name is exactly correct (case-sensitive)
Rate limiting:
Reduce request frequency
Implement delays between requests
Monitor Airtable usage limits
Debug Mode
Enable verbose logging:
DEBUG=* npm run dev๐ License
MIT License - see LICENSE file for details.
๐ค Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Submit a pull request
๐ Resources
Version: 1.0.0
Compatible with: Claude Desktop, Cursor IDE, VS Code MCP extensions
Node.js: 18+ required
Airtable API: Personal Access Token authentication
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jakreymyers/airtable-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server