ArangoDB
Um servidor para interagir com o ArangoDB, um sistema de banco de dados nativo multi-modelo.
Documentação
Servidor MCP para ArangoDB
Um servidor Model Context Protocol para ArangoDB
Este é um servidor MCP baseado em TypeScript que fornece capacidades de interação com banco de dados através do ArangoDB. Ele implementa operações básicas de banco de dados e permite integração perfeita com o ArangoDB através de ferramentas MCP. Você pode usá-lo com o aplicativo Claude e também com a extensão para VSCode que funciona com MCP, como o Cline!
Recursos
Ferramentas
| Ferramenta | Categoria | Somente leitura | Modifica dados/esquema | Propósito |
|---|---|---|---|---|
arango_query | Consulta | Não | Talvez | Executar AQL geral com variáveis de ligação, resultados limitados e proteções de consulta. |
arango_read_query | Consulta | Sim | Não | Executar AQL somente leitura e rejeitar palavras-chave de escrita/DDL. |
arango_validate_query | Consulta | Sim | Não | Analisar e validar AQL sem executá-lo. |
arango_explain_query | Consulta | Sim | Não | Inspecionar planos de execução AQL, uso de índices e saída do otimizador. |
arango_describe_database | Descoberta | Sim | Não | Resumir coleções, contagens, índices e campos de amostra. |
arango_list_collections | Descoberta | Sim | Não | Listar coleções no banco de dados configurado. |
arango_get_collection | Descoberta | Sim | Não | Retornar propriedades da coleção, contagem e índices. |
arango_create_collection | Coleção | Não | Sim | Criar coleções de documentos ou arestas. |
arango_drop_collection | Coleção | Não | Sim | Remover uma coleção, exigindo confirm: true. |
arango_get_document | Documento | Sim | Não | Buscar um documento por coleção e _key. |
arango_list_documents | Documento | Sim | Não | Listar documentos com paginação limit e offset. |
arango_count_documents | Documento | Sim | Não | Contar documentos em uma coleção. |
arango_sample_documents | Documento | Sim | Não | Retornar uma pequena amostra aleatória para descoberta de esquema. |
arango_insert | Documento | Não | Sim | Inserir um documento em uma coleção. |
arango_bulk_insert | Documento | Não | Sim | Inserir até 1000 documentos em uma única solicitação. |
arango_update | Documento | Não | Sim | Atualizar parcialmente um documento por _key. |
arango_bulk_update | Documento | Não | Sim | Aplicar patch em até 1000 documentos por _key ou _id. |
arango_remove | Documento | Não | Sim | Remover um documento por _key. |
arango_list_indexes | Índice | Sim | Não | Listar índices de uma coleção. |
arango_create_index | Índice | Não | Sim | Criar índices persistentes, geo, TTL ou invertidos. |
arango_list_views | ArangoSearch | Sim | Não | Listar Views ArangoSearch e de alias de busca. |
arango_create_search_view | ArangoSearch | Não | Sim | Criar uma View ArangoSearch vinculada a uma coleção. |
arango_search | ArangoSearch | Sim | Não | Pesquisar em uma View ArangoSearch com classificação BM25 ciente de analisador. |
arango_list_analyzers | Analisador | Sim | Não | Listar Analisadores ArangoSearch. |
arango_create_analyzer | Analisador | Não | Sim | Criar um Analisador ArangoSearch. |
arango_list_graphs | Grafo | Sim | Não | Listar grafos nomeados. |
arango_create_graph | Grafo | Não | Sim | Criar um grafo nomeado com uma definição de aresta. |
arango_insert_edge | Grafo | Não | Sim | Inserir um documento de aresta com _from e _to. |
arango_traverse | Grafo | Sim | Não | Percorrer arestas a partir de um vértice inicial usando uma coleção de arestas ou grafo nomeado. |
arango_shortest_path | Grafo | Sim | Não | Encontrar o caminho mais curto entre dois vértices usando uma coleção de arestas ou grafo nomeado. |
arango_backup | Backup | Não | Sistema de arquivos | Fazer backup de coleções em arquivos JSON em ARANGO_BACKUP_ROOT. |
Todas as ferramentas retornam texto JSON e structuredContent quando bem-sucedidas. Ferramentas com muita leitura expõem parâmetros limit limitados para manter as respostas amigáveis ao agente. Ferramentas de consulta também suportam proteções como memoryLimit, maxRuntime e failOnWarning quando aplicável.
Instalação
Instalando via NPM
Para instalar arango-server globalmente via NPM, execute o seguinte comando:
npm install -g arango-server
Executando via NPX
Para executar arango-server diretamente sem instalação, use o seguinte comando:
npx -y arango-server
Configurando para o Agente VSCode
Para usar arango-server com o agente Copilot do VSCode, você deve ter pelo menos VSCode 1.99.0 instalado e seguir estes passos:
-
Crie ou edite o arquivo de configuração MCP:
-
Configuração específica do workspace: Crie ou edite o arquivo
.vscode/mcp.jsonno seu workspace. -
Configuração específica do usuário: Opcionalmente, especifique o servidor na configuração(mcp) das configurações do usuário do VS Code para habilitar o servidor MCP em todos os workspaces.
Dica: Você pode consultar aqui a documentação de configuração MCP do VSCode para mais detalhes sobre como configurar o arquivo de configuração.
-
-
Adicione a seguinte configuração:
{ "servers": { "arango-mcp": { "type": "stdio", "command": "npx", "args": ["-y", "arango-server"], "env": { "ARANGO_URL": "http://localhost:8529", "ARANGO_DB": "your_database_name", "ARANGO_USERNAME": "your_username", "ARANGO_PASSWORD": "your_password" } } } } -
Inicie o servidor MCP:
- Abra a Paleta de Comandos no VSCode (
Ctrl+Shift+PouCmd+Shift+Pno Mac). - Execute o comando
MCP: Start Servere selecionearango-mcpna lista.
- Abra a Paleta de Comandos no VSCode (
-
Verifique o servidor:
- Abra a visualização de Chat no VSCode e mude para o modo Agente.
- Use o botão
Toolspara verificar se as ferramentasarango-serverestão disponíveis.
Para usar com Claude Desktop
Vá para: Settings > Developer > Edit Config ou
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
Você também pode consultar a documentação do mcp para configurá-lo.
Para usar com OpenCode
Adicione a seguinte configuração ao seu arquivo de configuração do OpenCode, como opencode.json ou opencode.jsonc:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"arango": {
"type": "local",
"command": ["npx", "-y", "arango-server"],
"enabled": true,
"environment": {
"ARANGO_URL": "your_database_url",
"ARANGO_DB": "your_database_name",
"ARANGO_USERNAME": "your_username",
"ARANGO_PASSWORD": "your_password"
}
}
}
}
Após reiniciar o OpenCode, peça para ele usar as ferramentas MCP arango para tarefas do ArangoDB.
Para usar com a Extensão Cline do VSCode
Vá para: Cline Extension > MCP Servers > Edit Configuration ou
- MacOS:
~/Library/Application Support/Code/User/globalStorage/cline.cline/config.json - Windows:
%APPDATA%/Code/User/globalStorage/cline.cline/config.json
Adicione a seguinte configuração à seção mcpServers:
{
"mcpServers": {
"arango": {
"command": "npx",
"args": ["-y", "arango-server"],
"env": {
"ARANGO_URL": "your_database_url",
"ARANGO_DB": "your_database_name",
"ARANGO_USERNAME": "your_username",
"ARANGO_PASSWORD": "your_password"
}
}
}
}
Você também pode usar a configuração acima para fazer este servidor funcionar com WARP
Variáveis de Ambiente
O servidor requer as seguintes variáveis de ambiente:
ARANGO_URL- URL do servidor ArangoDB (nota: 8529 é a porta padrão do ArangoDB para desenvolvimento local)ARANGO_DB- Nome do banco de dadosARANGO_USERNAME- Usuário do banco de dadosARANGO_PASSWORD- Senha do banco de dadosARANGO_BACKUP_ROOT- Diretório raiz opcional para saída dearango_backup. O padrão é./backups.
Uso
Você pode fornecer praticamente qualquer prompt significativo e o Claude tentará executar a função apropriada.
Alguns exemplos de prompts:
- "Listar todas as coleções no banco de dados"
- "Consultar todos os usuários"
- "Inserir um novo documento com nome 'John Doe' e email "john@example.com' na coleção 'users'"
- "Atualizar o documento com chave '123456' ou nome 'Jane Doe' para mudar a idade para 48"
- "Criar uma nova coleção chamada 'products'"
Uso com o Aplicativo Claude

Uso com a extensão Cline do VSCode

Consultar todos os usuários:
{
"query": "FOR user IN users RETURN user",
"limit": 100
}
Inserir um novo documento:
{
"collection": "users",
"document": {
"name": "John Doe",
"email": "john@example.com"
}
}
Atualizar um documento:
{
"collection": "users",
"key": "123456",
"update": {
"name": "Jane Doe"
}
}
Remover um documento:
{
"collection": "users",
"key": "123456"
}
Listar todas as coleções:
{
} // No parameters required
Fazer backup das coleções do banco de dados:
{
"outputDir": "nightly_1", // Safe subdirectory name under ARANGO_BACKUP_ROOT. Absolute paths and slashes are rejected.
"collection": "users", // Optional. If omitted, all collections are backed up.
"docLimit": 1000 // Optional. Maximum documents per collection. Defaults to 1000 and is capped at 10000.
}
Defina ARANGO_BACKUP_ROOT para escolher onde os backups são armazenados. O servidor rejeita travessia de caminho, caminhos absolutos, escapes de symlink e arquivos de saída existentes para mitigar riscos de escrita arbitrária de arquivos.
Criar uma nova coleção:
{
"name": "products",
"type": "document", // "document" or "edge" (optional, defaults to "document")
"waitForSync": false // Optional, defaults to false
}
Remover uma coleção:
{
"name": "products",
"confirm": true
}
Nota: O servidor é agnóstico em relação à estrutura do banco de dados e pode trabalhar com qualquer nome ou estrutura de coleção, desde que sigam os modelos de coleção de documentos e arestas do ArangoDB.
Aviso Legal
Apenas para Uso em Desenvolvimento
Esta ferramenta é projetada apenas para ambientes de desenvolvimento local. Embora tecnicamente possa se conectar a um banco de dados de produção, isso criaria riscos significativos de segurança e é explicitamente desencorajado. Nós a usamos exclusivamente com nossos bancos de dados de desenvolvimento para manter a separação de preocupações e proteger os dados de produção.
Desenvolvimento
Contribuições são bem-vindas. Por favor, leia CONTRIBUTING.md antes de abrir um pull request.
-
Clone o repositório
-
Instale as dependências:
npm run build -
Para desenvolvimento com recompilação automática:
npm run watch
Depuração
Como os servidores MCP se comunicam via stdio, a depuração pode ser desafiadora. A depuração recomendada pode ser feita usando o MCP Inspector para desenvolvimento:
npm run inspector
O Inspector fornecerá uma URL para acessar as ferramentas de depuração no seu navegador.
Testes
npm test
A suíte de testes inclui cobertura de regressão para o tratamento de caminho arango_backup que previne caminhos absolutos, travessia e escapes de symlink.
Para executar o teste de fumaça de integração com uma instância local do ArangoDB via Docker:
npm run test:integration
O teste de integração inicia uma instância temporária do ArangoDB via Docker, inicia o servidor MCP via stdio, lista ferramentas, verifica outputSchema, cria uma coleção temporária, insere documentos, consulta com limit, verifica se a saída do backup permanece em ARANGO_BACKUP_ROOT, rejeita um caminho de backup absoluto, limpa a coleção e para o contêiner.
O contêiner de teste usa a porta do host 18529 por padrão para evitar conflito com um ArangoDB local na porta 8529. Substitua com ARANGO_PORT se necessário.
Licença
Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
