Airtable

Acceso de lectura y escritura a bases de datos de Airtable.

Documentación

airtable-mcp-server

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso de lectura y escritura a bases de datos de Airtable. Este servidor permite a los LLMs inspeccionar esquemas de bases de datos y luego leer y escribir registros.

https://github.com/user-attachments/assets/c8285e76-d0ed-4018-94c7-20535db6c944

Instalación

Sigue las instrucciones en install-mcp, que genera la configuración correcta para tu cliente MCP (Claude Code, Claude Desktop, Cursor, Cline, VS Code y más).

Necesitarás un token de acceso personal de Airtable — créalo aquí con los alcances schema.bases:read y data.records:read (y opcionalmente schema.bases:write, data.records:write, data.recordComments:read, data.recordComments:write), y acceso a las bases que quieras usar. Se ve algo como pat123.abc123 (pero más largo). Configúralo como AIRTABLE_API_KEY (reemplazando el marcador de posición en la configuración generada).

Componentes

Herramientas

  • list_records

    • Lista registros de una tabla de Airtable especificada
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla a consultar
      • maxRecords (número, opcional): Número máximo de registros a devolver. El valor predeterminado es 100.
      • filterByFormula (cadena, opcional): Fórmula de Airtable para filtrar registros
  • search_records

    • Busca registros que contengan texto específico
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla a consultar
      • searchTerm (cadena, obligatorio): Texto a buscar en los registros
      • fieldIds (matriz, opcional): IDs de campos específicos para buscar. Si no se proporciona, busca en todos los campos basados en texto.
      • maxRecords (número, opcional): Número máximo de registros a devolver. El valor predeterminado es 100.
  • list_bases

    • Lista todas las bases de Airtable accesibles
    • No se requieren parámetros de entrada
    • Devuelve el ID de la base, el nombre y el nivel de permiso
  • list_tables

    • Lista todas las tablas en una base específica
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • detailLevel (cadena, opcional): La cantidad de detalle a obtener sobre las tablas (tableIdentifiersOnly, identifiersOnly o full)
    • Devuelve el ID de la tabla, nombre, descripción, campos y vistas (hasta el detailLevel dado)
  • describe_table

    • Obtiene información detallada sobre una tabla específica
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla a describir
      • detailLevel (cadena, opcional): La cantidad de detalle a obtener sobre la tabla (tableIdentifiersOnly, identifiersOnly o full)
    • Devuelve el mismo formato que list_tables pero para una sola tabla
    • Útil para obtener detalles sobre una tabla específica sin recuperar información sobre todas las tablas en la base
  • get_record

    • Obtiene un registro específico por ID
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla
      • recordId (cadena, obligatorio): El ID del registro a recuperar
  • create_record

    • Crea un nuevo registro en una tabla
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla
      • fields (objeto, obligatorio): Los campos y valores para el nuevo registro
  • update_records

    • Actualiza uno o más registros en una tabla
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla
      • records (matriz, obligatorio): Matriz de objetos que contienen el ID del registro y los campos a actualizar
  • delete_records

    • Elimina uno o más registros de una tabla
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla
      • recordIds (matriz, obligatorio): Matriz de IDs de registros a eliminar
  • create_table

    • Crea una nueva tabla en una base
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • name (cadena, obligatorio): Nombre de la nueva tabla
      • description (cadena, opcional): Descripción de la tabla
      • fields (matriz, obligatorio): Matriz de definiciones de campos (nombre, tipo, descripción, opciones)
  • update_table

    • Actualiza el nombre o la descripción de una tabla
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla
      • name (cadena, opcional): Nuevo nombre para la tabla
      • description (cadena, opcional): Nueva descripción para la tabla
  • create_field

    • Crea un nuevo campo en una tabla
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla
      • name (cadena, obligatorio): Nombre del nuevo campo
      • type (cadena, obligatorio): Tipo del campo
      • description (cadena, opcional): Descripción del campo
      • options (objeto, opcional): Opciones específicas del campo
  • update_field

    • Actualiza el nombre o la descripción de un campo
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla
      • fieldId (cadena, obligatorio): El ID del campo
      • name (cadena, opcional): Nuevo nombre para el campo
      • description (cadena, opcional): Nueva descripción para el campo
  • create_comment

    • Crea un comentario en un registro
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla
      • recordId (cadena, obligatorio): El ID del registro
      • text (cadena, obligatorio): El texto del comentario
      • parentCommentId (cadena, opcional): ID del comentario padre para respuestas en hilo
    • Devuelve el comentario creado con ID, autor, hora de creación y texto
  • list_comments

    • Lista comentarios en un registro
    • Parámetros de entrada:
      • baseId (cadena, obligatorio): El ID de la base de Airtable
      • tableId (cadena, obligatorio): El ID de la tabla
      • recordId (cadena, obligatorio): El ID del registro
      • pageSize (número, opcional): Número de comentarios a devolver (máximo 100, predeterminado 100)
      • offset (cadena, opcional): Desplazamiento de paginación para recuperar comentarios adicionales
    • Devuelve una matriz de comentarios con autor, texto, marcas de tiempo, reacciones y menciones
    • Los comentarios se devuelven del más nuevo al más antiguo

Transporte HTTP

El servidor también puede ejecutarse en modo HTTP para usarse con clientes MCP remotos:

MCP_TRANSPORT=http PORT=3000 npx airtable-mcp-server

Esto inicia un servidor HTTP sin estado en http://localhost:3000/mcp.

[!WARNING] El transporte HTTP no tiene autenticación incorporada, y vincularse a localhost o a una red privada no es un límite de seguridad contra navegadores: un sitio web malicioso puede usar DNS rebinding para hacer que el navegador de un visitante envíe solicitudes a http://localhost:3000/mcp e invoque herramientas — incluyendo leer, escribir y eliminar registros — usando el token de Airtable de este servidor.

Solo ejecuta el modo HTTP donde llamadores no confiables (incluidos navegadores en la misma máquina o red) no puedan alcanzar /mcp sin autenticarse. En la práctica, eso significa ponerlo detrás de un proxy inverso o puerta de enlace que requiera una credencial que un navegador no adjuntará entre orígenes, como un encabezado Authorization.

Si solo quieres usar este servidor con un cliente MCP en la misma máquina, usa el transporte stdio predeterminado en su lugar — no abre ningún puerto.

Contribuciones

¡Las solicitudes de extracción son bienvenidas en GitHub! Para comenzar:

  1. Instala Git y Node.js
  2. Clona el repositorio
  3. Instala las dependencias con npm install
  4. Ejecuta npm run test para ejecutar las pruebas
  5. Compila con npm run build
  • Puedes usar npm run build:watch para compilar automáticamente después de editar src/index.ts. Esto significa que puedes guardar, recargar Claude Desktop (con Ctrl/Cmd+R), y los cambios se aplican.

Versiones

Las versiones siguen la especificación de versionado semántico.

Para publicar:

  1. Usa npm version <major | minor | patch> para aumentar la versión
  2. Ejecuta git push --follow-tags para enviar con etiquetas
  3. Espera a que GitHub Actions publique en el registro de NPM.