使用说明
ArangoDB的MCP服务器
一个模型上下文协议服务器 阿兰戈数据库
这是一个基于TypeScript的MCP服务器,通过ArangoDB提供数据库交互功能。它实现了核心数据库操作,并允许通过MCP工具与ArangoDB无缝集成。你可以在Claude应用程序中使用它,也可以在像Cline这样的mcp上使用VSCode的扩展!
特性
工具
| 工具 | 类别 | 只读 | 修改数据/模式 | 目的 |
|---|---|---|---|---|
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 |
文档 | 否 | 是 | 按以下方式修补最多1000个文档 _key 或 _id. |
arango_remove |
文档 | 否 | 是 | 删除一个文档 _key. |
arango_list_indexes |
索引 | 是 | 否 | 列出集合的索引。 |
arango_create_index |
索引 | 否 | 是 | 创建持久索引、地理索引、TTL索引或倒排索引。 |
arango_list_views |
Arango搜索 | 是 | 否 | 列出Arango搜索和搜索别名视图。 |
arango_create_search_view |
Arango搜索 | 否 | 是 | 创建链接到集合的Arango搜索视图。 |
arango_search |
Arango搜索 | 是 | 否 | 使用分析器感知的BM25排名搜索Arango搜索视图。 |
arango_list_analyzers |
分析器 | 是 | 否 | 列出ArangoSearch分析器。 |
arango_create_analyzer |
分析器 | 否 | 是 | 创建ArangoSearch分析器。 |
arango_list_graphs |
图表 | 是 | 否 | 列出命名图表。 |
arango_create_graph |
图形 | 否 | 是 | 创建一个具有一条边定义的命名图形。 |
arango_insert_edge |
图表 | 否 | 是 | 插入带有 _from 和 _to. |
arango_traverse |
图 | 是 | 否 | 使用边集合或命名图从起始顶点遍历边。 |
arango_shortest_path |
Graph | Yes | No | 使用边集合或命名图查找两个顶点之间的最短路径。 |
arango_backup |
备份 | 否 | 文件系统 | 将集合备份到JSON文件 ARANGO_BACKUP_ROOT. |
所有工具都返回JSON文本和 structuredContent 当成功时。阅读重型工具暴露边界 limit 保持响应代理友好的参数。查询工具还支持护栏,例如 memoryLimit, maxRuntime,以及 failOnWarning 在适用的情况下。
安装
通过NPM安装
安装 arango-server 通过NPM全局运行以下命令:
npm install -g arango-server
通过NPX运行
跑 arango-server 直接使用以下命令,无需安装:
npx -y arango-server
配置VSCode代理
使用 arango-server 使用VSCode Copilot代理,您必须至少拥有 VSCode 1.99.0已安装 并按照以下步骤操作:
-
创建或编辑MCP配置文件:
-
添加以下配置:
{ "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" } } } } -
启动MCP服务器:
- 在VSCode中打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P在Mac上)。 - 运行命令
MCP: Start Server并选择arango-mcp从列表中。
- 在VSCode中打开命令面板(
-
验证服务器:
- 在VSCode中打开聊天视图并切换到代理模式。
- 使用
Tools按钮以验证arango-server工具可用。
与Claude Desktop一起使用
首选 Settings > Developer > Edit Config 或
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%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后,让它使用 arango 用于ArangoDB任务的MCP工具。
与Cline VSCode扩展一起使用
首选 Cline Extension > MCP Servers > Edit Configuration 或
- MacOS:
~/Library/Application Support/Code/User/globalStorage/cline.cline/config.json - 窗户:
%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"
}
}
}
}
您还可以使用上述配置使此服务器与 弯曲
环境变量
服务器需要以下环境变量:
ARANGO_URL-ArangoDB服务器URL(注意:8529是ArangoDA用于本地开发的默认端口)ARANGO_DB-数据库名称ARANGO_USERNAME-数据库用户ARANGO_PASSWORD-数据库密码ARANGO_BACKUP_ROOT-可选的根目录arango_backup输出。默认为./backups.
用法
您几乎可以提供任何有意义的提示,Claude将尝试执行相应的函数。
一些示例属性:
- “列出数据库中的所有集合”
- “查询所有用户”
- “插入一个名为'John Doe'和电子邮件的新文档”john@example.com'到'用户'集合”
- “使用密钥'123456'或姓名'Jane Doe'更新文档,将年龄更改为48岁”
- “创建一个名为“products”的新集合”
使用Claude App
带Cline VSCode扩展的Uasge
查询所有用户:
{
"query": "FOR user IN users RETURN user",
"limit": 100
}
插入新文档:
{
"collection": "users",
"document": {
"name": "John Doe",
"email": "john@example.com"
}
}
更新文档:
{
"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的文档和边缘集合模型。
免责声明
仅供开发使用
此工具仅适用于本地开发环境。虽然从技术上讲,它可以连接到生产数据库,但这会带来重大的安全风险,并且是明确不鼓励的。我们仅将其与我们的开发数据库一起使用,以保持关注点分离并保护生产数据。
发展
欢迎捐款。请阅读 贡献.md 在打开pull请求之前。
-
克隆存储库
-
安装依赖项:
npm run build -
对于自动重建的开发:
npm run watch
调试
由于MCP服务器通过stdio进行通信,调试可能具有挑战性。推荐的调试可以通过使用 MCP检查员 发展:
npm run inspector
检查器将提供一个URL,用于访问浏览器中的调试工具。
测试
npm test
测试套件包括以下内容的回归覆盖率 arango_backup 防止绝对路径、遍历和符号链接转义的路径处理。
要使用本地Docker ArangoDB实例运行集成冒烟测试:
npm run test:integration
集成测试启动一个临时的Docker ArangoDB实例,通过stdio启动MCP服务器,列出工具,验证 outputSchema,创建临时集合,插入文档,查询 limit,验证备份输出是否处于以下状态 ARANGO_BACKUP_ROOT,拒绝绝对备份路径,清理集合,并停止容器。
测试容器使用主机端口 18529 默认情况下,为了避免与上的本地ArangoDB发生冲突 8529.用以下命令覆盖它 ARANGO_PORT 如果需要的话。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
