Skip to main content
Glama
desarrollo032

Airtable MCP Server

🧠 Airtable Brain MCP

Servidor Model Context Protocol (MCP) para conectar asistentes de IA con Airtable de forma segura, extensible y orientada a automatización.

MCP FastMCP Python Node.js TypeScript License: MIT


📌 ¿Qué es este proyecto?

Airtable Brain MCP es una copia evolucionada y una base de experimentación del servidor airtable-mcp, adaptada para mejorar sus capacidades y facilitar su ejecución en entornos locales, Replit, Docker y Railway.

Expone Airtable como herramientas MCP para que clientes como Claude, ChatGPT, Cursor, Windsurf u otros agentes compatibles puedan:

  • 🔎 Descubrir bases, tablas y registros.

  • ✍️ Crear y actualizar datos desde lenguaje natural.

  • 🧩 Consultar esquemas y metadatos.

  • 🔐 Aplicar reglas de gobernanza, listas permitidas y políticas PII.

  • 🌐 Ejecutar el servidor mediante STDIO o HTTP.

  • 🔌 Integrar OAuth, webhooks y almacenamiento auxiliar.

Importante: este repositorio no es una copia oficial de Airtable ni del protocolo MCP. Se mantiene como una base mejorada para adaptar, probar y ampliar funcionalidades sobre el proyecto MCP original.

Related MCP server: Airtable MCP Pro

✨ Capacidades principales

Área

Capacidades

🧠 MCP

Herramientas, recursos, prompts y transporte HTTP/STDIO según la implementación.

🗂️ Airtable

Descubrimiento de bases, tablas, lectura y escritura de registros.

🛡️ Gobernanza

Allowlist de bases/tablas, operaciones permitidas y redacción de PII en TypeScript.

Rendimiento

Cliente asíncrono httpx, operaciones por lotes y límites de solicitudes.

🔁 Integraciones

OAuth 2.0, ChatGPT, webhooks, Redis y Back4App/Mongo opcionales.

🧰 Calidad

TypeScript, Zod, ESLint, Prettier, Jest, CLI y ejemplos para clientes MCP.

🚀 Despliegue

Replit, Docker Compose, Railway y ejecución local con PORT.

🧱 Implementaciones disponibles

Las variantes comparten el objetivo, pero no exponen exactamente las mismas herramientas.

✅ FastMCP Python — recomendada

Entrada principal: src/python/inspector_server.py

Es la ruta usada por npm run dev y por app.py. Utiliza FastMCP 2.x, httpx y transporte HTTP.

Herramienta

Función

list_bases

Lista las bases accesibles con el token configurado.

list_tables

Lista las tablas de una base.

list_records

Consulta registros con límite y filtro por fórmula.

create_records

Crea uno o varios registros desde JSON.

update_records

Actualiza registros desde JSON o TOON.

set_base_id

Cambia la base activa durante la sesión.

🔐 MCP Python extendido

Entrada: src/python/auth/src/server.py

Añade get_record, delete_records, recursos airtable://, roots MCP para exportaciones, prompts guiados, completions y parseo JSON/TOON. También contiene puntos de integración para autenticación y OAuth.

🔷 TypeScript — gobernanza y operaciones estructuradas

Entrada: src/typescript/airtable-mcp-server.ts

Herramientas registradas:

list_bases · describe · query · list_governance · list_exceptions · create · update · upsert · list_webhooks · create_webhook · refresh_webhook

Incluye:

  • ✅ Validación estricta con Zod.

  • dryRun para revisar cambios antes de escribir.

  • ✅ Idempotency keys y chunking según límites de Airtable.

  • ✅ Allowlist de bases y tablas.

  • ✅ Políticas PII mask, hash y drop.

  • ✅ Rate limiting y registro de excepciones.

  • ✅ Transporte STDIO y HTTP/SSE.

📦 JavaScript y OAuth — compatibilidad

  • src/javascript/airtable_simple_production.js: servidor JavaScript con validación, rate limiting y compatibilidad HTTP histórica.

  • src/javascript/airtable_simple.js: implementación JavaScript simple/legacy.

  • src/oauth_server.js: servidor OAuth separado para autorización y callbacks.

Estas variantes se conservan para compatibilidad y migración. Para nuevos cambios, prioriza FastMCP Python o TypeScript.

🗺️ Arquitectura

┌─────────────────────────────────────────────────────────────────┐
│ Cliente MCP: Claude · ChatGPT · Cursor · Windsurf · Inspector   │
└───────────────────────────────┬─────────────────────────────────┘
                                │ MCP / STDIO / HTTP
┌───────────────────────────────▼─────────────────────────────────┐
│ FastMCP Python · MCP SDK TypeScript · JavaScript legacy          │
└───────────────────────────────┬─────────────────────────────────┘
                                │ Validación · gobernanza · auth
┌───────────────────────────────▼─────────────────────────────────┐
│ Airtable Metadata API · Records API · Webhooks · OAuth           │
└─────────────────────────────────────────────────────────────────┘

🧰 Stack tecnológico

Backend y protocolo

  • Python 3.10+ y FastMCP 2.x para la ruta principal.

  • MCP Python SDK para la variante extendida.

  • Node.js 18+ para JavaScript, TypeScript y OAuth.

  • TypeScript 5.3 con @modelcontextprotocol/sdk.

  • Zod para validar entradas y salidas estructuradas.

Integración y operación

  • Airtable Web API para metadata, registros y webhooks.

  • httpx, requests y aiohttp para comunicación HTTP.

  • Redis y Back4App/Parse como almacenamiento opcional.

  • Jest, ts-jest, ESLint y Prettier.

  • Docker, Docker Compose, Railway y Replit.

📁 Estructura del proyecto

.
├── app.py                         # Entrada web para Railway/Nixpacks
├── main.py                        # Entrada Python alternativa
├── package.json                   # Scripts y dependencias Node/TypeScript
├── requirements.txt               # Dependencias Python/FastMCP
├── fastmcp.json                   # Configuración FastMCP
├── src/
│   ├── python/
│   │   ├── inspector_server.py    # FastMCP recomendado
│   │   ├── server.py              # Variante FastMCP base
│   │   └── auth/                  # Recursos, prompts y OAuth
│   ├── typescript/                # Servidor tipado y gobernado
│   ├── javascript/                # Servidores JavaScript
│   └── oauth_server.js            # Servicio OAuth
├── routes/                        # Rutas HTTP auxiliares
├── services/                      # Airtable, auth y almacenamiento
├── middleware/                    # Seguridad y formato TOON
├── tests/                         # Smoke tests e integración
├── examples/                      # Configuraciones de clientes
├── docs/                          # Guías ampliadas
├── docker/                        # Dockerfiles alternativos
└── bin/                           # CLI de servidor y CRUD

🚀 Inicio rápido

1. Requisitos

  • Python 3.10+.

  • Node.js 18+.

  • Cuenta de Airtable.

  • Personal Access Token con data.records:read, data.records:write y schema.bases:read.

  • webhook:manage si utilizarás webhooks.

2. Instalar dependencias

git clone <URL_DEL_REPOSITORIO>
cd airtable-mcp

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

npm install

En Windows:

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
npm install

3. Configurar el entorno

cp .env.example .env

Configuración mínima:

AIRTABLE_PERSONAL_ACCESS_TOKEN=patXXXXXXXXXXXXXX
AIRTABLE_BASE_ID=appXXXXXXXXXXXXXX
PORT=8000
HOST=0.0.0.0
LOG_LEVEL=INFO

AIRTABLE_BASE_ID puede omitirse para comenzar con list_bases; las operaciones sobre tablas y registros necesitarán una base activa. También se aceptan AIRTABLE_PAT, AIRTABLE_TOKEN y AIRTABLE_API_TOKEN en las variantes que los implementan.

🔒 Nunca guardes tokens en Git. Usa secretos del entorno en Replit, Railway o tu proveedor de despliegue.

4. Ejecutar

Desarrollo recomendado

npm run dev

Equivale a:

python3 src/python/inspector_server.py

FastMCP mediante configuración

source .venv/bin/activate
fastmcp run

La configuración se encuentra en fastmcp.json. Para producción, npm start configura HTTP, 0.0.0.0 y el puerto proporcionado por PORT.

TypeScript

npm run build
npm run start:http

JavaScript legacy

npm run start:js

🤖 Configurar un cliente MCP

Ejemplo genérico para Claude Desktop, Cursor u otro cliente que soporte comandos MCP:

{
  "mcpServers": {
    "airtable-brain": {
      "command": "fastmcp",
      "args": ["run"],
      "env": {
        "AIRTABLE_PERSONAL_ACCESS_TOKEN": "TU_TOKEN",
        "AIRTABLE_BASE_ID": "appXXXXXXXXXXXXXX"
      }
    }
  }
}

Para un servidor remoto, despliega la variante HTTP y configura la URL MCP entregada por FastMCP o tu plataforma. No expongas producción sin autenticación, proxy o allowlist.

💬 Ejemplos de interacción

Lista mis bases de Airtable accesibles.
Muéstrame las tablas de la base appXXXXXXXXXXXXXX.
Consulta los registros activos de Projects usando una fórmula de Airtable.
Prepara una actualización y muéstrame primero el dry run.
Describe el esquema de la base y aplica la política de privacidad definida.

⚙️ Variables de entorno

Variable

Req.

Uso

AIRTABLE_PERSONAL_ACCESS_TOKEN

✅*

Token PAT preferido por FastMCP Python.

AIRTABLE_PAT / AIRTABLE_TOKEN

✅*

Alias aceptados por algunas implementaciones.

AIRTABLE_BASE_ID

Base predeterminada; puede configurarse durante la sesión.

AIRTABLE_DEFAULT_BASE

Base predeterminada para TypeScript.

AIRTABLE_ALLOWED_BASES

Bases permitidas separadas por comas.

AIRTABLE_ALLOWED_TABLES

Allowlist TypeScript: baseId:tableName.

PORT

Puerto HTTP; por defecto 8000.

HOST

Host HTTP; por defecto 0.0.0.0.

LOG_LEVEL

Nivel DEBUG, INFO, WARNING o ERROR.

FASTMCP_TRANSPORT

Transporte de despliegue, normalmente http.

FASTMCP_MASK_ERROR_DETAILS

Oculta detalles sensibles en errores TypeScript.

FASTMCP_STRICT_INPUT_VALIDATION

Validación estricta; activa por defecto.

FASTMCP_SERVER_AUTH

Auth del servidor TypeScript.

REDIS_URL / DATABASE_URL

Integraciones opcionales.

Consulta .env.example para OAuth, Back4App/Parse, TOON y variables adicionales.

🛡️ Seguridad y buenas prácticas

  1. Usa secretos del entorno, nunca tokens en código, commits o ejemplos reales.

  2. Limita bases y tablas con AIRTABLE_ALLOWED_BASES y AIRTABLE_ALLOWED_TABLES.

  3. Activa dryRun antes de escribir desde TypeScript.

  4. Usa idempotency keys cuando una operación pueda repetirse.

  5. Separa tokens y bases de desarrollo y producción.

  6. No expongas HTTP sin autenticación, proxy o red privada.

  7. Otorga solo los scopes Airtable necesarios.

  8. Configura políticas PII si procesas información sensible.

🧪 Calidad y pruebas

npm run build
npm run test:types
npm run lint
npm run format:check
npm test

Las pruebas de integración en tests/ pueden requerir un servidor disponible y acceso real a Airtable. No las ejecutes contra una base con datos críticos.

node tests/test_mcp_comprehensive.js
bash tests/test_all_features.sh

🐳 Docker

cp .env.example .env
docker compose up --build

O con la imagen principal:

docker build -t airtable-brain-mcp:latest .
docker run --rm --env-file .env -p 8000:8000 airtable-brain-mcp:latest

Los Dockerfiles específicos se encuentran en docker/.

🚂 Railway y Replit

Railway

El repositorio incluye railway.json, railway.toml y Procfile. railway.json usa python3 app.py y respeta PORT.

Variables mínimas:

AIRTABLE_PERSONAL_ACCESS_TOKEN
AIRTABLE_BASE_ID       # opcional para descubrimiento inicial
LOG_LEVEL=INFO

Replit

El workflow configurado es Iniciar y combina Fastmcp run con npm run dev. Para una ejecución local simple utiliza npm run dev. Si ejecutas dos servidores HTTP a la vez, usa puertos distintos para evitar colisiones.

📚 Documentación relacionada

🤝 Contribuir

  1. Revisa la implementación que vas a modificar.

  2. Mantén compatibles las rutas y variables existentes cuando sea posible.

  3. Añade o actualiza pruebas para nuevas herramientas.

  4. Ejecuta build, tipos, lint y formato.

  5. Documenta cambios de protocolo, seguridad o configuración.

Consulta CONTRIBUTING.md para el flujo completo.

📄 Licencia y atribución

Este proyecto se distribuye bajo la licencia MIT y utiliza:


Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides tools for AI assistants to interact with Airtable databases, enabling CRUD operations on Airtable bases and tables.
    7 npm
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables comprehensive interaction with Airtable databases through MCP for ChatGPT Business/Projects. Supports full CRUD operations, querying, searching, and database management with pagination, filtering, and per-user authentication.
    -
  • A
    license
    B
    quality
    D
    maintenance
    Provides comprehensive access to the Airtable Web API, enabling AI assistants to create and manage bases, tables, fields, records, views, and webhooks with support for 25+ field types, batch operations, and enterprise features.
    32
    8 npm
    1
    MIT