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 AirtabletableId(cadena, obligatorio): El ID de la tabla a consultarmaxRecords(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 AirtabletableId(cadena, obligatorio): El ID de la tabla a consultarsearchTerm(cadena, obligatorio): Texto a buscar en los registrosfieldIds(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 AirtabledetailLevel(cadena, opcional): La cantidad de detalle a obtener sobre las tablas (tableIdentifiersOnly,identifiersOnlyofull)
- Devuelve el ID de la tabla, nombre, descripción, campos y vistas (hasta el
detailLeveldado)
-
describe_table
- Obtiene información detallada sobre una tabla específica
- Parámetros de entrada:
baseId(cadena, obligatorio): El ID de la base de AirtabletableId(cadena, obligatorio): El ID de la tabla a describirdetailLevel(cadena, opcional): La cantidad de detalle a obtener sobre la tabla (tableIdentifiersOnly,identifiersOnlyofull)
- 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 AirtabletableId(cadena, obligatorio): El ID de la tablarecordId(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 AirtabletableId(cadena, obligatorio): El ID de la tablafields(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 AirtabletableId(cadena, obligatorio): El ID de la tablarecords(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 AirtabletableId(cadena, obligatorio): El ID de la tablarecordIds(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 Airtablename(cadena, obligatorio): Nombre de la nueva tabladescription(cadena, opcional): Descripción de la tablafields(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 AirtabletableId(cadena, obligatorio): El ID de la tablaname(cadena, opcional): Nuevo nombre para la tabladescription(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 AirtabletableId(cadena, obligatorio): El ID de la tablaname(cadena, obligatorio): Nombre del nuevo campotype(cadena, obligatorio): Tipo del campodescription(cadena, opcional): Descripción del campooptions(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 AirtabletableId(cadena, obligatorio): El ID de la tablafieldId(cadena, obligatorio): El ID del camponame(cadena, opcional): Nuevo nombre para el campodescription(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 AirtabletableId(cadena, obligatorio): El ID de la tablarecordId(cadena, obligatorio): El ID del registrotext(cadena, obligatorio): El texto del comentarioparentCommentId(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 AirtabletableId(cadena, obligatorio): El ID de la tablarecordId(cadena, obligatorio): El ID del registropageSize(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/mcpe 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
/mcpsin 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 encabezadoAuthorization.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:
- Instala Git y Node.js
- Clona el repositorio
- Instala las dependencias con
npm install - Ejecuta
npm run testpara ejecutar las pruebas - Compila con
npm run build
- Puedes usar
npm run build:watchpara compilar automáticamente después de editarsrc/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:
- Usa
npm version <major | minor | patch>para aumentar la versión - Ejecuta
git push --follow-tagspara enviar con etiquetas - Espera a que GitHub Actions publique en el registro de NPM.