Airtable

Acesso de leitura e escrita a bancos de dados do Airtable.

Documentação

airtable-mcp-server

Um servidor Model Context Protocol que fornece acesso de leitura e escrita a bancos de dados Airtable. Este servidor permite que LLMs inspecionem esquemas de banco de dados e, em seguida, leiam e escrevam registros.

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

Instalação

Siga as instruções em install-mcp, que gera a configuração correta para o seu cliente MCP (Claude Code, Claude Desktop, Cursor, Cline, VS Code e outros).

Você precisará de um token de acesso pessoal do Airtable — crie um aqui com os escopos schema.bases:read e data.records:read (e opcionalmente schema.bases:write, data.records:write, data.recordComments:read, data.recordComments:write) e acesso às bases que deseja usar. Ele se parece com algo como pat123.abc123 (mas mais longo). Defina-o como AIRTABLE_API_KEY (substituindo o espaço reservado na configuração gerada).

Componentes

Ferramentas

  • list_records

    • Lista registros de uma tabela Airtable especificada
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela a ser consultada
      • maxRecords (number, opcional): Número máximo de registros a retornar. O padrão é 100.
      • filterByFormula (string, opcional): Fórmula Airtable para filtrar registros
  • search_records

    • Pesquisa registros que contenham texto específico
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela a ser consultada
      • searchTerm (string, obrigatório): Texto a ser pesquisado nos registros
      • fieldIds (array, opcional): IDs de campos específicos para pesquisar. Se não for fornecido, pesquisa todos os campos baseados em texto.
      • maxRecords (number, opcional): Número máximo de registros a retornar. O padrão é 100.
  • list_bases

    • Lista todas as bases Airtable acessíveis
    • Nenhum parâmetro de entrada necessário
    • Retorna o ID da base, o nome e o nível de permissão
  • list_tables

    • Lista todas as tabelas em uma base específica
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • detailLevel (string, opcional): A quantidade de detalhes a obter sobre as tabelas (tableIdentifiersOnly, identifiersOnly ou full)
    • Retorna o ID da tabela, nome, descrição, campos e visualizações (até o detailLevel fornecido)
  • describe_table

    • Obtém informações detalhadas sobre uma tabela específica
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela a ser descrita
      • detailLevel (string, opcional): A quantidade de detalhes a obter sobre a tabela (tableIdentifiersOnly, identifiersOnly ou full)
    • Retorna o mesmo formato que list_tables, mas para uma única tabela
    • Útil para obter detalhes sobre uma tabela específica sem buscar informações sobre todas as tabelas na base
  • get_record

    • Obtém um registro específico pelo ID
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela
      • recordId (string, obrigatório): O ID do registro a ser recuperado
  • create_record

    • Cria um novo registro em uma tabela
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela
      • fields (object, obrigatório): Os campos e valores para o novo registro
  • update_records

    • Atualiza um ou mais registros em uma tabela
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela
      • records (array, obrigatório): Matriz de objetos contendo o ID do registro e os campos a atualizar
  • delete_records

    • Exclui um ou mais registros de uma tabela
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela
      • recordIds (array, obrigatório): Matriz de IDs de registros a excluir
  • create_table

    • Cria uma nova tabela em uma base
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • name (string, obrigatório): Nome da nova tabela
      • description (string, opcional): Descrição da tabela
      • fields (array, obrigatório): Matriz de definições de campo (nome, tipo, descrição, opções)
  • update_table

    • Atualiza o nome ou a descrição de uma tabela
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela
      • name (string, opcional): Novo nome para a tabela
      • description (string, opcional): Nova descrição para a tabela
  • create_field

    • Cria um novo campo em uma tabela
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela
      • name (string, obrigatório): Nome do novo campo
      • type (string, obrigatório): Tipo do campo
      • description (string, opcional): Descrição do campo
      • options (object, opcional): Opções específicas do campo
  • update_field

    • Atualiza o nome ou a descrição de um campo
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela
      • fieldId (string, obrigatório): O ID do campo
      • name (string, opcional): Novo nome para o campo
      • description (string, opcional): Nova descrição para o campo
  • create_comment

    • Cria um comentário em um registro
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela
      • recordId (string, obrigatório): O ID do registro
      • text (string, obrigatório): O texto do comentário
      • parentCommentId (string, opcional): ID do comentário pai para respostas em thread
    • Retorna o comentário criado com ID, autor, hora de criação e texto
  • list_comments

    • Lista comentários em um registro
    • Parâmetros de entrada:
      • baseId (string, obrigatório): O ID da base Airtable
      • tableId (string, obrigatório): O ID da tabela
      • recordId (string, obrigatório): O ID do registro
      • pageSize (number, opcional): Número de comentários a retornar (máx. 100, padrão 100)
      • offset (string, opcional): Deslocamento de paginação para recuperar comentários adicionais
    • Retorna uma matriz de comentários com autor, texto, carimbos de data/hora, reações e menções
    • Os comentários são retornados do mais novo para o mais antigo

Transporte HTTP

O servidor também pode ser executado em modo HTTP para uso com clientes MCP remotos:

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

Isso inicia um servidor HTTP sem estado em http://localhost:3000/mcp.

[!WARNING] O transporte HTTP não possui autenticação integrada, e a vinculação a localhost ou a uma rede privada não é uma fronteira de segurança contra navegadores: um site malicioso pode usar DNS rebinding para fazer o navegador de um visitante enviar solicitações para http://localhost:3000/mcp e invocar ferramentas — incluindo leitura, escrita e exclusão de registros — usando o token Airtable deste servidor.

Execute o modo HTTP apenas onde chamadores não confiáveis (incluindo navegadores na mesma máquina ou rede) não possam alcançar /mcp sem autenticação. Na prática, isso significa colocá-lo atrás de um proxy reverso ou gateway que exija uma credencial que um navegador não anexará entre origens, como um cabeçalho Authorization.

Se você apenas deseja usar este servidor com um cliente MCP na mesma máquina, use o transporte stdio padrão — ele não abre uma porta.

Contribuindo

Pull requests são bem-vindos no GitHub! Para começar:

  1. Instale Git e Node.js
  2. Clone o repositório
  3. Instale as dependências com npm install
  4. Execute npm run test para executar os testes
  5. Compile com npm run build
  • Você pode usar npm run build:watch para compilar automaticamente após editar src/index.ts. Isso significa que você pode salvar, recarregar o Claude Desktop (com Ctrl/Cmd+R) e as alterações serão aplicadas.

Lançamentos

As versões seguem a especificação de versionamento semântico.

Para lançar:

  1. Use npm version <major | minor | patch> para aumentar a versão
  2. Execute git push --follow-tags para enviar com tags
  3. Aguarde o GitHub Actions publicar no registro NPM.