Airtable User MCP
Extensión de VS Code y servidor MCP para Airtable, editor de fórmulas, herramientas de esquema y más de 30 utilidades de automatización para bases, vistas y campos.
Documentación
Fórmulas, Scripts, Automatización, MCP y LSP de Airtable
Editor de fórmulas, scripts y automatización · Servidor MCP (72 herramientas + manage_tools) · Servidor de lenguaje · Habilidades de IA
| VS Code | Open VSX | npm · MCP | npm · LSP | Registro MCP |
|---|---|---|---|---|
|
|
|
|
|
|
No está afiliado con Airtable Inc. Este es un proyecto mantenido por la comunidad.
Desarrollo activo — Pueden aparecer cambios incompatibles entre versiones menores. Fija una versión si necesitas estabilidad.
Características principales
| Característica | Qué hace | Tipos de archivo |
|---|---|---|
| Editor de fórmulas | Resaltado de sintaxis, IntelliSense, embellecer / minimizar | .formula, .min.formula |
| Editor de scripts | Autocompletado, documentación al pasar el cursor, diagnósticos | .ats, .script |
| Editor de automatizaciones | Autocompletado, documentación al pasar el cursor, diagnósticos | .ata, .automation |
Servidor MCP (72 herramientas + manage_tools) | API interna completa de Airtable — esquema, vistas, campos, registros, extensiones, plantillas | — |
| Servidor de lenguaje (LSP) | Soporte multieditor independiente — Neovim, Zed, Helix, OpenCode | Todo lo anterior |
| Configuración automática del IDE | Configuración MCP con un clic para Cursor, Windsurf, Claude Desktop, Cline, Amp | — |
| Habilidades de IA | Reglas y flujos de trabajo predefinidos específicos de Airtable para asistentes de codificación con IA | — |
| Demonio + Túnel | Servidor de fondo persistente; acceso remoto opcional mediante Cloudflare o ngrok | — |
| Perfiles de herramientas | read-only (12 herramientas) / safe-write (54 herramientas) / full (72 herramientas) / custom ámbitos de permisos | — |
| Autenticación con llavero del sistema | Inicio de sesión de Airtable basado en navegador con SSO/2FA — credenciales en el llavero de tu sistema operativo | — |
Por qué existe esto
La API web pública de Airtable nunca ha expuesto algunas de las tareas más comunes que los desarrolladores realmente necesitan: crear un campo de fórmula, ajustar el conjunto de filtros de una vista, instalar una extensión o validar una fórmula antes de que rompa producción. El servidor MCP oficial de Airtable es un envoltorio delgado sobre esa misma API REST, por lo que hereda todas esas carencias.
airtable-user-mcp es un complemento al MCP oficial de Airtable, no un reemplazo. Utiliza la propia API interna de Airtable (la que usa la interfaz web) para cubrir exactamente la superficie que la API REST no puede alcanzar. Registra ambos servidores en tu cliente de IA y tu asistente obtendrá la experiencia completa de automatización de Airtable: registros vía HTTP mediante el MCP oficial, más esquema, fórmulas, vistas y extensiones a través de este.
Qué añade airtable-user-mcp además del MCP oficial de Airtable
Este es un mapa de cobertura, no una decisión de "elige uno" — los dos servidores son complementarios y están diseñados para funcionar lado a lado.
| Capacidad | MCP oficial de Airtable | airtable-user-mcp |
|---|---|---|
| Total de herramientas | ~17 | 73 (72 + manage_tools) |
| Modelo de autenticación | Token de acceso personal o OAuth, configuración por ámbito | Inicia sesión una vez con tu cuenta normal de Airtable (SSO/2FA compatible) |
| Transporte | HTTP (remoto) | stdio (local, privado) |
| Los datos nunca salen de tu máquina | ❌ Las solicitudes pasan por mcp.airtable.com | ✅ Se ejecuta localmente contra la API de Airtable |
| Lectura de esquema (bases, tablas, campos, vistas) | Parcial (sin configuración de vistas) | Completa — filtros, ordenaciones, agrupaciones, visibilidad, altura de fila, descripciones |
| Lectura de registros con valores de campo resueltos | Parcial | ✅ query_records — devuelve campos de búsqueda/acumulación/fórmula completamente resueltos |
| Búsqueda de registros por texto (incl. campos de búsqueda) | ❌ filterByFormula con FIND()/SEARCH() falla silenciosamente en campos de búsqueda | ✅ query_records.search — coincidencia de subcadena en todos los valores resueltos |
| Duplicar registros | ❌ | ✅ duplicate_records |
| Crear campos de fórmula | ❌ UNSUPPORTED_FIELD_TYPE_FOR_CREATE | ✅ |
| Crear campos de acumulación | ❌ | ✅ |
| Crear campos de búsqueda / multipleLookupValues | ❌ | ✅ |
| Crear campos de conteo | ❌ | ✅ |
| Actualizar el texto de fórmula de un campo existente | ❌ | ✅ |
| Validar una fórmula antes de aplicarla | ❌ | ✅ |
| Renombrar / duplicar / eliminar campos de forma segura | Parcial (sin duplicado, sin resumen de dependencias) | ✅ con protección expectedName + vista previa de dependencias |
| Crear vistas (cuadrícula/formulario/kanban/calendario/galería/gantt/lista) | ❌ (la API no tiene endpoint de creación de vistas) | ✅ |
| Establecer/añadir filtros de vistas (AND/OR anidados) | ❌ | ✅ |
| Establecer ordenaciones de vistas | ❌ | ✅ |
| Establecer agrupación de vistas | ❌ | ✅ |
| Cambiar el orden de columnas | ❌ | ✅ |
| Mostrar/ocultar columnas en una vista | ❌ | ✅ |
| Cambiar la altura de fila | ❌ | ✅ |
| Duplicar una vista con su configuración completa | ❌ | ✅ |
| Descripciones de vistas, ajuste de celdas, portadas, configuración de colores, fechas de calendario, columnas congeladas | ❌ | ✅ |
| Secciones de la barra lateral (crear, renombrar, mover, eliminar) | ❌ | ✅ |
| Plantillas de registros (crear, rellenar previamente, duplicar, aplicar, eliminar) | ❌ | ✅ |
| Metadatos de formularios (descripción, redirección, atribución, marca) | ❌ | ✅ |
| Gestión de extensiones / bloques (instalar, habilitar, renombrar, duplicar, eliminar) | ❌ | ✅ |
| Crear páginas de panel | ❌ | ✅ |
| Autodiagnóstico del demonio (¿sesión muerta? ¿navegador ocupado? ¿demonio desaparecido?) | ❌ | ✅ manage_daemon action=status, además de iniciar / reiniciar / detener / túnel / rotación de tokens |
| Perfiles de herramientas y activadores por herramienta | ❌ | ✅ solo lectura (12) / escritura segura (54) / completo (72) / personalizado |
| Protecciones de seguridad para acciones destructivas | Depende de los ámbitos de token | ✅ coincidencia expectedName, resumen de dependencias, indicador force |
| Límite de creación de registros en lote | 10 / solicitud | Usa el mismo límite de Airtable; sin restricción adicional |
| Instalación con un clic en VS Code / Cursor / Windsurf / Cline / Amp | Edición manual de JSON por IDE | ✅ Un clic mediante la extensión complementaria |
| Editor de fórmulas con IntelliSense | ❌ | ✅ (extensión de VS Code) |
| Almacenamiento de credenciales | Tú gestionas el PAT | Llavero del sistema, actualización automática |
| Requisito de plan | Plan de Airtable con acceso a API + ámbitos de token | Cualquier plan al que puedas iniciar sesión |
| Precio | Gratis | Gratis, MIT |
Fuentes: Documentación oficial del MCP de Airtable, Referencia de la API web de Airtable y el hilo de recopilación UNSUPPORTED_FIELD_TYPE_FOR_CREATE.
Usa ambos MCP juntos
npx -y airtable-user-mcp login # one-time browser login
claude mcp add airtable --scope user -- npx -y airtable-user-mcp # Claude Code
airtable-user-mcp es aditivo. Registra el MCP oficial de Airtable siguiendo la guía de configuración de Airtable y luego añade este junto a él en el mismo bloque mcpServers:
{
"mcpServers": {
"airtable-user-mcp": {
"command": "npx",
"args": ["-y", "airtable-user-mcp"]
}
}
}
Tu cliente MCP expondrá todas las herramientas de ambos servidores. Las dos entradas son independientes — renombra las claves (airtable, airtable-official, airtable-user-mcp, etc.) como tenga sentido para tu flujo de trabajo.
Qué hay en este repositorio
Este monorepo incluye tres productos desde un único árbol de código fuente:
| Producto | Instalación | |
|---|---|---|
| Fórmulas, Scripts, Automatización, MCP y LSP de Airtable — extensión de VS Code | Marketplace | |
| airtable-user-mcp — servidor MCP independiente | npx airtable-user-mcp | |
| airtable-user-lsp — servidor de lenguaje de Airtable | npx airtable-user-lsp |
Demostración
Características
Servidor MCP (72 herramientas + manage_tools)
Gestiona bases de Airtable con capacidades no disponibles a través de la API REST oficial:
| Categoría | Herramientas | Destacados |
|---|---|---|
| Lectura de esquema | 11 | Inspección completa del esquema — bases, tablas, campos, vistas, secciones de la barra lateral, plantillas de registros; descarga de todos los campos de fórmula a archivos locales |
| Lectura de registros | 1 | query_records — hasta 1 000 registros/llamada con valores de campo resueltos; el parámetro search funciona en campos de búsqueda/acumulación (la API REST filterByFormula no) |
| Escritura de registros | 4 | create_records / update_records / duplicate_records / upload_attachment (la única forma de escribir celdas multipleAttachments por URL) |
| Registros destructivos | 1 | delete_records — eliminación en lote de registros de una tabla |
| Gestión de tablas | 3 | crear / renombrar / eliminar tablas |
| Gestión de campos | 9 | Crear campos de fórmula / acumulación / búsqueda / conteo, validar fórmulas, actualizar descripciones, eliminar uno o varios |
| Configuración de vistas | 20 | Filtros, ordenaciones, agrupaciones, columnas, congelación, altura de fila, portadas, reglas de color, fechas de calendario, crear / duplicar / renombrar / eliminar |
| Secciones de la barra lateral | 4 | Crear, renombrar, mover a sección, eliminar (promueve automáticamente las vistas contenidas a no agrupadas) |
| Plantillas de registros | 8 | Crear / renombrar / describir / establecer celdas / establecer columnas / duplicar / aplicar / eliminar andamios de fila guardados |
| Metadatos de formularios | 2 | Descripción, URL de redirección, atribución, copia para el encuestado, marca (vistas de formulario heredadas) |
| Gestión de extensiones | 7 | Crear, instalar, habilitar/deshabilitar, renombrar, duplicar, eliminar extensiones |
| Gestión de herramientas | 1 | Listar perfiles, cambiar de perfil, activar/desactivar herramientas/categorías (meta-herramienta, siempre habilitada — no forma parte de ningún perfil) |
| Sincronización de bases | 1 | sync_base — copia el esquema, las vistas y los registros de una base a otra. mode=plan/diff/status son de solo lectura; mode=apply modifica el destino y, con policy=mirror más los indicadores de confirmación, puede eliminar tablas, campos, vistas, secciones y registros; mode=reconcile actualiza el estado de mapeo local. Protegido contra desviaciones y reanudable mediante diario. |
| Control del demonio | 1 | manage_daemon — action=status es autodiagnóstico de solo lectura: estado activo del demonio, transporte, tiempo de funcionamiento, URL del túnel y el estado de la sesión en vivo (sesión muerta, último disparo del interruptor con el cuerpo de respuesta propio de Airtable, cola de navegador ocupado) que distingue "demonio desaparecido" de "sesión muerta" de "navegador ocupado". También start / restart / stop / tunnel_enable / tunnel_disable / token_rotate. Solo perfil full. |
Consulta la referencia completa de herramientas en packages/mcp-server/README.md.
Un demonio compartido
La extensión inicia el demonio MCP compartido siempre que una llamada de herramienta lo necesite, de modo que cada ventana de VS Code usa una sesión de navegador de Airtable en lugar de una por ventana — esa duplicación era lo que producía la mayoría de los errores de "sesión muerta". Un demonio que detengas desde el panel permanece detenido y, si no puede iniciarse, la extensión recurre a un servidor por ventana para que tus herramientas sigan funcionando.
Debido a que normalmente hay un daemon en ejecución, otros clientes MCP en la misma máquina (Claude Desktop, Cursor, Cline, Amp) se conectan a él y, por lo tanto, se ejecutan bajo su modo de autenticación y cliente HTTP en lugar de los suyos propios — deliberadamente, ya que dos navegadores en un perfil de Airtable se bloquean. Cada uno de estos clientes imprime una línea de stderr indicándolo. Ver Compartir un daemon entre clientes.
Servidor LSP
airtable-user-lsp es un servidor de lenguaje independiente para archivos de fórmula, script y automatización de Airtable: funciona en cualquier editor compatible con LSP, no solo en VS Code.
# stdio mode — works standalone, no daemon needed
npx airtable-user-lsp --stdio
Características: diagnósticos, autocompletado, documentación al pasar el cursor y ayuda de firmas para archivos .formula, .ats y .ata.
Cuando el daemon está en ejecución, genera automáticamente airtable-user-lsp --tcp para que varios editores compartan una instancia del servidor de lenguaje. El puerto TCP se escribe en ~/.airtable-user-mcp/daemon.lock como port_lsp.
Ver packages/lsp-server/README.md para la configuración por editor (Neovim, Zed, OpenCode, Helix).
IDEs compatibles
La extensión configura automáticamente MCP para todos los principales editores con IA:
| Claude Desktop | Claude Code | Cursor | Windsurf | Cline | Amp |
¿No usas VS Code? Usa el servidor MCP independiente directamente:
npx airtable-user-mcp
Encuéntranos
| Registro | Enlace |
|---|---|
| VS Code Marketplace | Nskha.airtable-formula |
| npm | airtable-user-mcp |
| Open VSX | Nskha.airtable-formula |
| MCP Registry | io.github.automations-project/airtable-user-mcp |
| Glama | glama.ai/mcp/servers |
| PulseMCP | pulsemcp.com |
| MCP.so | mcp.so |
| Video demo — gestión de vistas, campos calculados y extensiones con Claude Code |
Requisitos
- VS Code ^1.100.0 (o cualquier fork que exponga la API
McpServerDefinitionProvider) - Node.js — incluido a través del runtime de VS Code; no se necesita instalación adicional
- Google Chrome (o Edge / Chromium) — el flujo de inicio de sesión de Airtable usa Patchright en modo headless. Se recurre a
msedgeen Windows y achromiumen Linux. La extensión muestra una advertencia accionable si no se detecta un navegador compatible.
Desarrollo
Este es un monorepo de pnpm.
| Paquete | Descripción |
|---|---|
packages/extension | Host de extensión de VS Code (TypeScript + tsup) |
packages/webview | Webview de panel de React (Vite + Tailwind v4) |
packages/shared | Tipos compartidos y protocolo de mensajes |
packages/mcp-server | airtable-user-mcp — Servidor MCP de Node ESM |
packages/lsp-server | airtable-user-lsp — Servidor LSP para archivos de fórmula / script / automatización |
scripts/ | Herramientas de compilación (bundler esbuild, venta de dependencias) |
pnpm install # install all packages
pnpm build # build shared → webview → mcp bundle → extension
pnpm package # build + create airtable-formula-X.Y.Z.vsix
pnpm test # run all unit tests
pnpm dev # start webview dev server (browser preview)
Cómo se empaqueta el servidor MCP: scripts/bundle-mcp.mjs compila con esbuild packages/mcp-server/src/ en packages/extension/dist/mcp/. Luego scripts/prepare-package-deps.mjs vende patchright, patchright-core, otpauth, impit y @ngrok/ngrok en dist/node_modules/ antes de que se ejecute vsce package, por lo que una extensión instalada no necesita npm install en tiempo de ejecución.
VSIX específicos por plataforma. impit (el cliente HTTP Chrome-TLS) y @ngrok/ngrok (el proveedor de túnel ngrok) mantienen su binario nativo compilado en paquetes npm separados por plataforma, y solo se instala el que coincide con la máquina de compilación. Por lo tanto, un solo VSIX no puede incluir binarios nativos funcionales para todas las plataformas. En su lugar, publicamos un VSIX por plataforma, cada uno con solo sus propios binarios: VS Code y Open VSX entregan a cada usuario la compilación que coincide con su máquina. Objetivos compatibles:
| Objetivo | impit | @ngrok/ngrok |
|---|---|---|
win32-x64 | impit-win32-x64-msvc | @ngrok/ngrok-win32-x64-msvc |
win32-arm64 | impit-win32-arm64-msvc | @ngrok/ngrok-win32-arm64-msvc |
darwin-x64 | impit-darwin-x64 | @ngrok/ngrok-darwin-x64 |
darwin-arm64 | impit-darwin-arm64 | @ngrok/ngrok-darwin-arm64 |
linux-x64 | impit-linux-x64-gnu | @ngrok/ngrok-linux-x64-gnu |
linux-arm64 | impit-linux-arm64-gnu | @ngrok/ngrok-linux-arm64-gnu |
alpine-x64 | impit-linux-x64-musl | @ngrok/ngrok-linux-x64-musl |
alpine-arm64 | impit-linux-arm64-musl | @ngrok/ngrok-linux-arm64-musl |
linux-armhf (ARM de 32 bits) no se publica: impit no incluye una compilación arm-gnueabihf, por lo que un VSIX armhf anunciaría airtableFormula.mcp.httpClient: "impit" y luego fallaría con "Cannot find native binding". Tampoco se publica un respaldo sin objetivo, por la misma razón.
La matriz se define una vez en scripts/vsix-targets.mjs; las versiones y los hashes de los tarballs están fijados a pnpm-lock.yaml. scripts/package-targets.mjs compila cada objetivo y scripts/assert-vsix-binaries.mjs verifica que cada artefacto contenga exactamente los archivos .node de su propia plataforma y no los de otra — byte por byte, contra los resúmenes SHA-256 en scripts/native-binary-digests.json, que se registran a partir de tarballs verificados contra los hashes de integridad de pnpm-lock.yaml. Los nombres de archivo, package.json os/cpu y un número mágico son etiquetas que un artefacto lleva sobre sí mismo y no pueden distinguir un binario x64 de uno ARM64, ni una compilación glibc de una musl; un resumen exacto sí puede.
En conjunto, estos son ocho smokes de empaquetado/afirmación de artefactos objetivo — ocho archivos .vsix compilados y sus contenidos verificados en una máquina. No son smokes de ejecución de ocho enlaces nativos: cualquier host individual solo puede cargar el enlace compilado para sí mismo, por lo que solo el enlace del objetivo del host recibe una carga de ejecución genuina. Verificar los otros siete por contenido exacto es la afirmación más fuerte que una compilación de un solo host puede hacer sobre ellos.
El paquete npm independiente airtable-user-mcp no se ve afectado y sigue siendo universal: npm resuelve la dependencia opcional correcta en tu propia máquina en el momento de la instalación.
Apoya este proyecto
Este proyecto se construye y mantiene con la ayuda de herramientas de codificación con IA. Si te resulta útil y quieres apoyar el desarrollo continuo (nuevas herramientas, actualizaciones, correcciones de errores), puedes contribuir regalando créditos de Claude Code, la herramienta principal utilizada para construir este proyecto.
¿Interesado? Abre un issue o contacta para discutir solicitudes de funciones y patrocinio.