ArangoDB协议服务器

一个基于TypeScript的MCP服务器,提供与ArangoDB数据库交互的能力,支持多种数据库操作和工具集成。

  • by ravenwits
  • TypeScript
  • 本地部署
  • 46 星标
  • 更新于
在 GitHub 查看 ravenwits/mcp-server-arangodb

使用说明

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已安装 并按照以下步骤操作:

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

    • 工作区特定配置:创建或编辑 .vscode/mcp.json 您工作区中的文件。

    • 用户特定配置:(可选)在中指定服务器 设置(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中打开命令面板(Ctrl+Shift+P 或 Cmd+Shift+P 在Mac上)。
    • 运行命令 MCP: Start Server 并选择 arango-mcp 从列表中。
  4. 验证服务器:

    • 在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请求之前。

  1. 克隆存储库

  2. 安装依赖项:

    npm run build
    
  3. 对于自动重建的开发:

    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许可证获得许可-请参阅 许可证 文件以获取详细信息。