NocoDB MCP Server
Um servidor MCP para NocoDB, a alternativa open-source ao Airtable. Ele permite interação com sua instância NocoDB via API.
Documentação
Servidor MCP NocoDB
Um servidor Model Context Protocol (MCP) que fornece uma interface abrangente para o NocoDB - a alternativa open source ao Airtable. Este servidor permite que agentes de IA interajam com bancos de dados NocoDB, tornando-o perfeito para armazenar e gerenciar dados operacionais em múltiplas equipes de IA.
Recursos
- Operações de Banco de Dados: Listar e gerenciar bases/projetos NocoDB
- Gerenciamento de Tabelas: Criar, listar e excluir tabelas com esquemas personalizados
- Gerenciamento de Colunas: Adicionar colunas a tabelas existentes com suporte completo a tipos
- CRUD de Registros: Operações completas de criar, ler, atualizar e excluir registros
- Consultas Avançadas: Filtrar, ordenar, pesquisar e agregar dados
- Gerenciamento de Visualizações: Criar e usar diferentes visualizações (Grade, Galeria, Formulário, etc.)
- Operações em Lote: Inserir múltiplos registros de uma vez
- Anexos de Arquivos: Enviar arquivos localmente ou de URLs, anexar a registros
Instalação
Via NPM (Global)
npm install -g @andrewlwn77/nocodb-mcp
Via NPX (Sem instalação)
npx @andrewlwn77/nocodb-mcp
Configuração
Variáveis de Ambiente
Crie um arquivo .env na raiz do seu projeto:
# Required
NOCODB_BASE_URL=http://localhost:8080
NOCODB_API_TOKEN=your_api_token_here
# Optional
NOCODB_DEFAULT_BASE=your_default_base_id
Obtendo seu Token de API
- Faça login na sua instância NocoDB
- Clique no ícone do seu perfil
- Selecione "API Tokens"
- Crie um novo token com as permissões apropriadas
Configuração MCP
Adicione ao seu arquivo de configuração do Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"nocodb": {
"command": "npx",
"args": ["@andrewlwn77/nocodb-mcp"],
"env": {
"NOCODB_BASE_URL": "http://localhost:8080",
"NOCODB_API_TOKEN": "your_api_token_here"
}
}
}
}
Ou se instalado globalmente:
{
"mcpServers": {
"nocodb": {
"command": "nocodb-mcp",
"env": {
"NOCODB_BASE_URL": "http://localhost:8080",
"NOCODB_API_TOKEN": "your_api_token_here"
}
}
}
}
Ferramentas Disponíveis
Operações de Banco de Dados
list_bases- Listar todos os bancos de dados/projetos disponíveisget_base_info- Obter informações detalhadas sobre uma base específica
Gerenciamento de Tabelas
list_tables- Listar todas as tabelas em uma baseget_table_info- Obter esquema da tabela e informações das colunascreate_table- Criar uma nova tabela com esquema personalizadodelete_table- Excluir uma tabelaadd_column- Adicionar uma nova coluna a uma tabela existentedelete_column- Excluir uma coluna de uma tabela
Operações de Registros
insert_record- Inserir um único registrobulk_insert- Inserir múltiplos registros de uma vezget_record- Recuperar um registro específico por IDlist_records- Listar registros com filtragem e paginaçãoupdate_record- Atualizar um registro existentedelete_record- Excluir um registrosearch_records- Pesquisa de texto completo entre registros
Operações de Consulta
query- Filtragem avançada com múltiplas condiçõesaggregate- Executar operações SUM, COUNT, AVG, MIN, MAXgroup_by- Agrupar registros por uma coluna
Gerenciamento de Visualizações
list_views- Listar todas as visualizações de uma tabelacreate_view- Criar uma nova visualizaçãoget_view_data- Obter registros de uma visualização específica
Anexos de Arquivos
upload_attachment- Enviar um arquivo local para o armazenamento NocoDBupload_attachment_by_url- Enviar arquivos de URLsattach_file_to_record- Enviar e anexar um arquivo a um registroget_attachment_info- Obter informações de anexo de um registro
Exemplos de Uso
Criando uma Tabela
{
"tool": "create_table",
"arguments": {
"base_id": "p_abc123",
"table_name": "customers",
"columns": [
{
"title": "Name",
"uidt": "SingleLineText",
"rqd": true
},
{
"title": "Email",
"uidt": "Email",
"unique": true
},
{
"title": "Revenue",
"uidt": "Number",
"dt": "decimal"
},
{
"title": "Status",
"uidt": "SingleSelect",
"dtxp": "'active','inactive','pending'"
}
]
}
}
Adicionando Colunas a Tabelas Existentes
A ferramenta add_column permite adicionar colunas dinamicamente a tabelas existentes. Aqui estão alguns exemplos:
Tipos Básicos de Colunas
{
"tool": "add_column",
"arguments": {
"table_id": "table_id_here",
"title": "Description",
"uidt": "LongText"
}
}
Coluna com Restrições
{
"tool": "add_column",
"arguments": {
"table_id": "table_id_here",
"title": "Product Code",
"uidt": "SingleLineText",
"unique": true,
"rqd": true
}
}
Coluna de Seleção com Opções
{
"tool": "add_column",
"arguments": {
"table_id": "table_id_here",
"title": "Priority",
"uidt": "SingleSelect",
"meta": {
"options": [
{"title": "Low", "color": "#059669"},
{"title": "Medium", "color": "#d97706"},
{"title": "High", "color": "#dc2626"},
{"title": "Critical", "color": "#7c3aed"}
]
}
}
}
Coluna de Moeda
{
"tool": "add_column",
"arguments": {
"table_id": "table_id_here",
"title": "Price",
"uidt": "Currency",
"meta": {
"currency_code": "USD"
}
}
}
Para mais exemplos de tipos de colunas, veja Exemplos de Tipos de Colunas.
Excluindo Colunas
A ferramenta delete_column permite remover colunas de tabelas existentes. Você pode identificar a coluna a ser excluída pelo ID ou nome.
Excluir por ID da Coluna
{
"tool": "delete_column",
"arguments": {
"table_id": "table_id_here",
"column_id": "column_id_to_delete"
}
}
Excluir por Nome da Coluna
{
"tool": "delete_column",
"arguments": {
"table_id": "table_id_here",
"column_name": "ColumnToDelete"
}
}
Nota: A ferramenta buscará colunas que correspondam ao campo column_name ou title, tornando-a flexível para diferentes convenções de nomenclatura.
Inserindo Registros
{
"tool": "insert_record",
"arguments": {
"base_id": "p_abc123",
"table_name": "customers",
"data": {
"Name": "Acme Corp",
"Email": "contact@acme.com",
"Revenue": 50000,
"Status": "active"
}
}
}
Consultando com Filtros
{
"tool": "query",
"arguments": {
"base_id": "p_abc123",
"table_name": "customers",
"where": "(Status,eq,active)~and(Revenue,gt,10000)",
"sort": ["-Revenue", "Name"],
"fields": ["Name", "Email", "Revenue"],
"limit": 10
}
}
Agregando Dados
{
"tool": "aggregate",
"arguments": {
"base_id": "p_abc123",
"table_name": "customers",
"column_name": "Revenue",
"function": "sum",
"where": "(Status,eq,active)"
}
}
Exemplos de Upload de Arquivos
Enviar um Arquivo Local
{
"tool": "upload_attachment",
"arguments": {
"file_path": "/path/to/document.pdf",
"storage_path": "documents/2024"
}
}
Enviar de URL
{
"tool": "upload_attachment_by_url",
"arguments": {
"urls": [
"https://example.com/image1.png",
"https://example.com/image2.jpg"
],
"storage_path": "images"
}
}
Anexar Arquivo a Registro
{
"tool": "attach_file_to_record",
"arguments": {
"base_id": "p_abc123",
"table_name": "products",
"record_id": "42",
"attachment_field": "ProductImages",
"file_path": "/path/to/product-photo.jpg"
}
}
Obter Informações de Anexo
{
"tool": "get_attachment_info",
"arguments": {
"base_id": "p_abc123",
"table_name": "products",
"record_id": "42",
"attachment_field": "ProductImages"
}
}
Tipos de Campos NocoDB
Tipos de dados de interface suportados (uidt) para colunas:
Tipos Básicos
SingleLineText- Campo de texto curtoLongText- Texto multilinhaNumber- Valores numéricos inteirosDecimal- Números decimais com precisãoCheckbox- Booleano verdadeiro/falso
Data e Hora
Date- Data sem horaDateTime- Data com horaTime- Somente horaDuration- Duração de tempo
Texto Especializado
Email- Endereços de e-mail com validaçãoURL- Links da webPhoneNumber- Números de telefone (nota: use "PhoneNumber" não "Phone")
Tipos Numéricos
Currency- Valores monetários (requermeta.currency_code)Percent- Valores percentuaisRating- Classificação por estrelas
Tipos de Seleção
SingleSelect- Menu suspenso com seleção única (requermeta.options)MultiSelect- Múltiplas seleções (requermeta.options)
Tipos Avançados
Attachment- Uploads de arquivosJSON- Armazenamento de dados JSON
Colunas Virtuais/Calculadas
Formula- Campos calculadosRollup- Agregar registros relacionadosLookup- Valores de consulta de registros relacionadosQrCode- Gerar códigos QR (requermeta.fk_qr_value_column_id)Barcode- Gerar códigos de barras (requermeta.fk_barcode_value_column_id)
Relacional
LinkToAnotherRecord- Relacionamentos entre tabelasLinks- Relacionamentos muitos-para-muitos
Parâmetros Especiais para Tipos de Colunas
Alguns tipos de colunas requerem parâmetros adicionais no campo meta:
- SingleSelect/MultiSelect: Array
meta.optionscom objetos{title, color} - Currency:
meta.currency_code(ex.: "USD", "EUR") - QrCode:
meta.fk_qr_value_column_id- ID da coluna a codificar - Barcode:
meta.fk_barcode_value_column_id- ID da coluna a codificar,meta.barcode_formatopcional
Sintaxe de Filtro
NocoDB usa uma sintaxe específica para filtragem:
(field,operator,value)- Condição básica~and- Operador AND~or- Operador OR~not- Operador NOT
Operadores
eq- Igual aneq- Diferente degt- Maior quege- Maior ou igual alt- Menor quele- Menor ou igual alike- Contém (use % para curingas)nlike- Não contémnull- É nulonotnull- Não é nulo
Exemplos
(Status,eq,active)- Status igual a "ativo"(Revenue,gt,1000)~and(Status,eq,active)- Receita > 1000 E Status = "ativo"(Name,like,%Corp%)- Nome contém "Corp"
Desenvolvimento
Compilando a partir do Código Fonte
# Clone the repository
git clone https://github.com/your-org/nocodb-mcp.git
cd nocodb-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run dev
Executando Testes
npm test
Tratamento de Erros
O servidor fornece mensagens de erro detalhadas para problemas comuns:
- Token de API inválido
- Base/tabela não encontrada
- Tipos de colunas inválidos
- Problemas de conectividade de rede
- Limitação de taxa
Melhores Práticas
- Use Visualizações: Crie visualizações para subconjuntos de dados acessados com frequência
- Operações em Lote: Use
bulk_insertpara múltiplos registros - Seleção de Campos: Especifique apenas os campos necessários para reduzir o tamanho do payload
- Paginação: Use limite/deslocamento para grandes conjuntos de dados
- Cache: Considere armazenar em cache dados acessados com frequência no lado do cliente
Limitações
- Alguns recursos avançados do NocoDB podem não estar expostos através desta interface
- Os limites de taxa dependem da configuração da sua instância NocoDB
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
Licença
MIT
Suporte
Para problemas e solicitações de recursos, por favor crie uma issue no repositório do GitHub.