Airtable MCP Server

Airtable MCP Server

Enables AI assistants to retrieve records from Airtable bases by providing record ID, base ID, and table name.

Category
Visit Server

README

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

  1. Clone and setup the project:

    git clone <repository-url>
    cd airtable-mcp-server
    npm install
    
  2. Get your Airtable Personal Access Token:

    • Visit https://airtable.com/create/tokens
    • Create a new token with read permissions for your target bases
    • Copy the token (format: patXXXXXXXXXXXXXX.xxxxxxxxxx...)
  3. Configure environment:

    cp .env.example .env
    # Edit .env and set your AIRTABLE_PERSONAL_ACCESS_TOKEN
    
  4. Build and test:

    npm run build
    npm start
    

๐Ÿ”ง Usage

The server provides one tool: getAirtableRecord

Tool Parameters

Parameter Type Required Description
recordId string Yes Airtable record ID (format: recXXXXXXXXXXXXXX)
baseId string Yes Airtable base ID (format: appXXXXXXXXXXXXXX)
tableName 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
npm run dev Development mode with hot reload
npm run build Compile TypeScript to JavaScript
npm start Run compiled server
npm run clean Remove build artifacts
npm test Run unit tests
npm run test:integration Run integration tests
npm run test:all 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
AIRTABLE_PERSONAL_ACCESS_TOKEN Yes - Your Airtable PAT
AIRTABLE_TIMEOUT No 30000 Request timeout (ms)
AIRTABLE_RETRY_ATTEMPTS No 3 Number of retry attempts
AIRTABLE_RETRY_DELAY 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

  1. Valid Record Retrieval:

    # Replace with your actual IDs
    echo '{"recordId":"recYourRecordId","baseId":"appYourBaseId","tableName":"YourTable"}' | node dist/index.js
    
  2. Error 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_TOKEN is set
  • Verify 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: recXXXXXXXXXXXXXX
  • Check 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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. 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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured