返回市场
mcp-neo4j服务器

mcp-neo4j服务器

作者:da-okazaki56 星标更新:2025-07-03

项目介绍

MCP Neo4j 服务器

smithery 徽章

这是一个 MCP 服务器,提供 Neo4j 图数据库与 Claude Desktop 的集成,通过自然语言交互实现图数据库操作。

<a href="https://glama.ai/mcp/servers/qjpsxn4zlh"><img width="380" height="200" src="https://gips0.baidu.com/it/u=1839134378,3133206722&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Neo4j Server MCP 服务器" /></a>

快速开始

你可以直接使用 npx 运行此 MCP 服务器:

npx @alanse/mcp-neo4j

或者将其添加到你的 Claude Desktop 配置中:

{
  "mcpServers": {
    "neo4j": {
      "command": "npx",
      "args": ["@alanse/mcp-neo4j-server"],
      "env": {
        "NEO4J_URI": "bolt://localhost:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "your-password",
        "NEO4J_DATABASE": "neo4j"
      }
    }
  }
}

功能

此服务器提供了与 Neo4j 数据库交互的工具:

Neo4j 企业版支持

此服务器现在支持连接到 Neo4j 企业版中的特定数据库。默认情况下,它连接到 "neo4j" 数据库,但你可以使用 NEO4J_DATABASE 环境变量指定不同的数据库。

工具

  • execute_query: 在 Neo4j 数据库上执行 Cypher 查询

    • 支持所有类型的 Cypher 查询(读取、创建、更新、删除)
    • 返回结构化的查询结果
    • 可以传递参数以防止注入攻击
  • create_node: 在图数据库中创建一个新的节点

    • 指定节点标签和属性
    • 返回创建的节点及其内部 ID
    • 支持所有 Neo4j 数据类型作为属性
  • create_relationship: 在两个现有节点之间创建关系

    • 定义关系类型和方向
    • 向关系添加属性
    • 需要源节点和目标节点的 ID

安装

通过 Smithery 安装

要通过 Smithery 自动安装 MCP Neo4j 服务器到 Claude Desktop:

npx -y @smithery/cli install @alanse/mcp-neo4j-server --client claude

开发用途

  1. 克隆仓库:
git clone https://github.com/da-okazaki/mcp-neo4j-server.git
cd mcp-neo4j-server
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

配置

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

  • NEO4J_URI: Neo4j 数据库 URI(默认:bolt://localhost:7687)
  • NEO4J_USERNAME: Neo4j 用户名(默认:neo4j)
  • NEO4J_PASSWORD: Neo4j 密码(必需)
  • NEO4J_DATABASE: Neo4j 数据库名称(默认:neo4j)- 使用此变量连接到 Neo4j 企业版中的特定数据库

使用示例

这里有一些如何使用自然语言与 Neo4j 数据库交互的例子:

连接到特定数据库

对于拥有多个数据库的 Neo4j 企业用户,你可以指定要连接的数据库:

{
  "env": {
    "NEO4J_URI": "bolt://localhost:7687",
    "NEO4J_USERNAME": "neo4j",
    "NEO4J_PASSWORD": "your-password",
    "NEO4J_DATABASE": "myCustomDatabase"
  }
}

这将连接到 "myCustomDatabase" 而不是默认的 "neo4j" 数据库。

查询数据

你可以提出如下问题:

  • "显示销售部门的所有员工"
  • "找出年龄最大的前五位客户"
  • "谁在最近一个月购买了超过三种产品?"

示例:

用户: "显示销售部门的所有员工"

Claude: 让我查询数据库中的销售部门员工。

[内部执行查询: MATCH (e:Employee)-[:WORKS_IN]->(d:Department {name: 'Sales'}) RETURN e.name, e.position]

结果:
- John Smith (销售经理)
- Sarah Johnson (销售代表)
- Mike Brown (账户主管)

创建数据

你可以给出如下指令:

  • "添加一个名为 John Doe 的新人员,年龄为 30 岁"
  • "创建一个名为 '高级咖啡' 的产品,价格为 $24.99"
  • "添加一个名为 '研究与发展' 的新部门"

示例:

用户: "添加一个名为 John Doe 的新人员,年龄为 30 岁"

Claude: 我会根据提供的信息创建一个新的 Person 节点。

[内部创建带有标签 'Person' 和属性 {name: 'John Doe', age: 30} 的节点]

结果: 创建了一个新的人员节点,ID 为:123

创建关系

你可以请求如下关系:

  • "让 John Doe 和 Jane Smith 成为朋友"
  • "设置 Product A 是 Product B 的组件"
  • "分配 John Doe 到销售部门"

示例:

用户: "让 John Doe 和 Jane Smith 成为朋友"

Claude: 我会在这两个人员之间创建友谊关系。

[内部创建关系: MATCH (a:Person {name: 'John Doe'}), (b:Person {name: 'Jane Smith'})
CREATE (a)-[:FRIENDS_WITH {since: '2024-01-05'}]->(b)]

结果: 在 John Doe 和 Jane Smith 之间创建了友谊关系

复杂操作

你可以使用自然语言执行更复杂的操作:

  • "找出由居住在纽约的客户购买的所有产品"
  • "显示 John Doe 的朋友的朋友"
  • "计算每个部门员工的平均年龄"

示例:

用户: "找出由居住在纽约的客户购买的所有产品"

Claude: 我会查询数据库以获取这些信息。

[内部执行查询:
MATCH (c:Customer {city: 'New York'})-[:PURCHASED]->(p:Product)
RETURN c.name, collect(p.name) as products]

结果:
- Alice Wilson: [高级咖啡, 茶具, 饼干]
- Bob Miller: [高级咖啡, 水瓶]

测试

运行测试套件:

npm test

许可证

MIT