mcpField
M
MCP Server for ArangoDB

MCP Server for ArangoDB

本地服务
github.com/ravenwits数据库4621 周前更新

关于 MCP Server for ArangoDB

MCP Server for ArangoDB 是基于 TypeScript 的 MCP 服务,通过 MCP 工具对 ArangoDB 数据库进行查询与管理。它面向在 Claude、VSCode 或 Cline 等客户端中操作数据库的开发者,并提供只读与变更类工具的区分。

主要功能

  1. 01覆盖集合、文档、索引的数据库操作工具
  2. 02AQL 查询与只读查询工具
  3. 03AQL 校验与执行计划查看
  4. 04ArangoSearch 视图与分析器管理
  5. 05图遍历与最短路径查询
  6. 06带路径限制的备份工具

适用场景

  1. 01在 AI 客户端中查询与探索 ArangoDB 数据
  2. 02在开发环境中批量插入或更新文档
  3. 03检查 AQL 查询的执行计划与索引使用情况

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 ArangoDB 相关工具,返回 JSON 文本与 structuredContent。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"arangodb": {
"command": "npx",
"args": [
"-y",
"arango-server"
]
}
}
}
启动命令npx -y arango-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmarango-server

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

ArangoDB 的 MCP 服务

ArangoDB MCP 服务

适用于 ArangoDB 的模型上下文协议服务

这是一个基于 TypeScript 的 MCP 服务,可通过 ArangoDB 提供数据库交互能力。它实现了核心数据库操作,并支持通过 MCP 工具与 ArangoDB 无缝集成。你可以将它与 Claude 应用以及支持 MCP 的 VSCode 扩展(例如 Cline)搭配使用!

功能

工具
工具类别只读修改数据/架构用途
arango_query查询否可能执行通用 AQL,支持绑定变量、结果数量上限和查询保护措施。
arango_read_query查询是否执行只读 AQL,并拒绝写入/DDL 关键字。
arango_validate_query查询是否解析并验证 AQL,但不执行。
arango_explain_query查询是否检查 AQL 执行计划、索引使用情况和优化器输出。
arango_describe_database发现是否概述集合、计数、索引和样本字段。
arango_list_collections发现是否列出已配置数据库中的集合。
arango_get_collection发现是否返回集合属性、计数和索引。
arango_create_collection集合否是创建文档集合或边集合。
arango_drop_collection集合否是删除集合,需提供 confirm: true。
arango_get_document文档是否根据集合和 _key 获取一份文档。
arango_list_documents文档是否使用 limit 和 offset 分页列出文档。
arango_count_documents文档是否统计集合中的文档数量。
arango_sample_documents文档是否返回少量随机样本,用于发现架构。
arango_insert文档否是向集合中插入一份文档。
arango_bulk_insert文档否是在一个请求中最多插入 1000 份文档。
arango_update文档否是根据 _key 对一份文档进行部分更新。
arango_bulk_update文档否是根据 _key 或 _id 更新最多 1000 份文档。
arango_remove文档否是根据 _key 删除一份文档。
arango_list_indexes索引是否列出集合的索引。
arango_create_index索引否是创建持久索引、地理索引、TTL 索引或倒排索引。
arango_list_viewsArangoSearch是否列出 ArangoSearch 和搜索别名视图。
arango_create_search_viewArangoSearch否是创建与集合关联的 ArangoSearch 视图。
arango_searchArangoSearch是否使用支持分析器的 BM25 排序搜索 ArangoSearch 视图。
arango_list_analyzers分析器是否列出 ArangoSearch 分析器。
arango_create_analyzer分析器否是创建 ArangoSearch 分析器。
arango_list_graphs图是否列出命名图。
arango_create_graph图否是创建包含一个边定义的命名图。
arango_insert_edge图否是插入包含 _from 和 _to 的边文档。
arango_traverse图是否使用边集合或命名图,从起始顶点遍历边。
arango_shortest_path图是否使用边集合或命名图,查找两个顶点之间的最短路径。
arango_backup备份否文件系统将集合备份为 ARANGO_BACKUP_ROOT 下的 JSON 文件。

所有工具成功时都会返回 JSON 文本和 structuredContent。读取密集型工具提供有上限的 limit 参数,使响应更适合 Agent 使用。查询工具还支持适用情况下的保护措施,例如 memoryLimit、maxRuntime 和 failOnWarning。

安装

通过 NPM 安装

要通过 NPM 全局安装 arango-server,请运行以下命令:

npm install -g arango-server
通过 NPX 运行

若要直接运行 arango-server 而无需安装,请使用以下命令:

npx -y arango-server
配置 VSCode Agent

要将 arango-server 与 VSCode Copilot Agent 搭配使用,必须至少安装 VSCode 1.99.0,并按以下步骤操作:

  1. 创建或编辑 MCP 配置文件:

    • 工作区专属配置:在工作区中创建或编辑 .vscode/mcp.json 文件。

    • 用户专属配置:也可以在 setting(mcp) VS Code 用户设置中指定该服务,以便在所有工作区中启用 MCP 服务。

      提示:有关如何设置配置文件的详细信息,请参阅 VSCode 的 MCP 配置文档。

  2. 添加以下配置:

    {
      "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"
          }
        }
      }
    }
    
  3. 启动 MCP 服务:

    • 在 VSCode 中打开命令面板(Mac 上按 Ctrl+Shift+P 或 Cmd+Shift+P)。
    • 运行命令 MCP: Start Server,然后从列表中选择 arango-mcp。
  4. 验证服务:

    • 在 VSCode 中打开聊天视图并切换到 Agent 模式。
    • 使用 Tools 按钮,确认可以使用 arango-server 工具。
与 Claude Desktop 搭配使用

前往:Settings > Developer > Edit Config,或

  • MacOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%/Claude/claude_desktop_config.json

也可以查看 MCP 文档进行设置。

与 OpenCode 搭配使用

在 OpenCode 配置文件中添加以下配置,例如 opencode.json 或 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"
      }
    }
  }
}

重启 OpenCode 后,请让它在处理 ArangoDB 任务时使用 arango MCP 工具。

与 Cline VSCode 扩展搭配使用

前往:Cline Extension > MCP Servers > Edit Configuration,或

  • MacOS:~/Library/Application Support/Code/User/globalStorage/cline.cline/config.json
  • Windows:%APPDATA%/Code/User/globalStorage/cline.cline/config.json

在 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"
      }
    }
  }
}

也可以使用上述配置,在 WARP 中启用此服务。

环境变量

此服务需要以下环境变量:

  • ARANGO_URL - ArangoDB 服务 URL(注意:本地开发时 ArangoDB 的默认端口为 8529)
  • ARANGO_DB - 数据库名称
  • ARANGO_USERNAME - 数据库用户
  • ARANGO_PASSWORD - 数据库密码
  • ARANGO_BACKUP_ROOT - arango_backup 输出的可选根目录。默认为 ./backups。

用法

你几乎可以提供任何有意义的提示词,Claude 都会尝试执行相应的函数。

一些提示词示例:

  • “列出数据库中的所有集合”
  • “查询所有用户”
  • “在 users 集合中插入一条新文档,名称为 'John Doe',邮箱为 "[email protected]'”
  • “将键为 '123456' 或名称为 'Jane Doe' 的文档年龄改为 48”
  • “创建名为 'products' 的新集合”
在 Claude App 中使用

使用 Claude App 演示 ArangoDB MCP 服务

与 Cline VSCode 扩展搭配使用

使用 Cline VSCode 扩展搭配 ArangoDB MCP 服务的演示

查询所有用户:

{
  "query": "FOR user IN users RETURN user",
  "limit": 100
}

插入新文档:

{
  "collection": "users",
  "document": {
    "name": "John Doe",
    "email": "[email protected]"
  }
}

更新文档:

{
  "collection": "users",
  "key": "123456",
  "update": {
    "name": "Jane Doe"
  }
}

删除文档:

{
  "collection": "users",
  "key": "123456"
}

列出所有集合:

{
} // No parameters required

备份数据库集合:

{
  "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.
}

设置 ARANGO_BACKUP_ROOT,以选择备份存储位置。为降低任意文件写入风险,服务会拒绝路径遍历、绝对路径、符号链接逃逸以及已存在的输出文件。

创建新集合:

{
  "name": "products",
  "type": "document", // "document" or "edge" (optional, defaults to "document")
  "waitForSync": false // Optional, defaults to false
}

删除集合:

{
  "name": "products",
  "confirm": true
}

注意:该服务不依赖数据库结构,只要遵循 ArangoDB 的文档集合和边集合模型,就能与任意集合名称或结构配合使用。

免责声明

仅供开发使用

此工具仅面向本地开发环境。虽然从技术上讲它可以连接到生产数据库,但这会带来重大的安全风险,因此明确不建议这样做。我们仅将它用于开发数据库,以保持职责分离并保护生产数据。

开发

欢迎贡献。提交拉取请求前,请阅读 CONTRIBUTING.md。

  1. 克隆仓库

  2. 安装依赖:

    npm run build
    
  3. 自动重建模式下进行开发:

    npm run watch
    
调试

由于 MCP 服务通过标准输入输出进行通信,调试可能颇具挑战。推荐在开发时使用 MCP Inspector 进行调试:

npm run inspector

Inspector 会提供一个 URL,供你在浏览器中访问调试工具。

测试
npm test

测试套件包含对 arango_backup 路径处理的回归测试,以防止绝对路径、路径遍历和符号链接逃逸。

要使用本地 Docker ArangoDB 实例运行集成冒烟测试:

npm run test:integration

集成测试会启动一个临时 Docker ArangoDB 实例,通过标准输入输出启动 MCP 服务,列出工具,验证 outputSchema,创建临时集合,插入文档,使用 limit 执行查询,验证备份输出位于 ARANGO_BACKUP_ROOT 下,拒绝绝对备份路径,清理集合,并停止容器。

测试容器默认使用主机端口 18529,以避免与本地运行在 8529 上的 ArangoDB 冲突。如有需要,可通过 ARANGO_PORT 覆盖该端口。

许可证

本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。