返回市场
MCP-Neo4j内存服务器

MCP-Neo4j内存服务器

作者:JovanHsu20 星标更新:2025-03-15

项目介绍

MCP Neo4j 知识图谱内存服务器

npm 版本 许可证: MIT TypeScript Neo4j

简介

MCP Neo4j 知识图谱内存服务器是一个基于 Neo4j 图数据库的知识图谱内存服务器,用于在AI助手与用户交互过程中存储和检索信息。该项目是官方知识图谱内存服务器的增强版,使用 Neo4j 作为后端存储引擎。

通过使用 Neo4j 作为存储后端,该项目提供了更强的图查询能力、更好的性能和可扩展性,特别适合构建复杂的知识图谱应用。

功能

  • 🚀 基于 Neo4j 的高性能图数据库存储
  • 🔍 强大的模糊搜索和精确匹配能力
  • 🔄 实体、关系和观察的完整 CRUD 操作
  • 🌐 完全兼容 MCP 协议
  • 📊 支持复杂的图查询和遍历
  • 🐳 支持 Docker,易于部署

安装

预备条件

  • Node.js >= 22.0.0
  • Neo4j 数据库(本地或远程)

通过 npm 安装

# 全局安装
npm install -g @jovanhsu/mcp-neo4j-memory-server

# 或作为项目依赖安装
npm install @jovanhsu/mcp-neo4j-memory-server

使用 Docker

# 使用 docker-compose 启动 Neo4j 和 Memory Server
git clone https://github.com/JovanHsu/mcp-neo4j-memory-server.git
cd mcp-neo4j-memory-server
docker-compose up -d

环境变量配置

服务器通过以下环境变量进行配置:

环境变量描述默认值
NEO4J_URINeo4j 数据库 URIbolt://localhost:7687
NEO4J_USERNeo4- j 用户名neo4j
NEO4J_PASSWORDNeo4j 密码password
NEO4J_DATABASENeo4j 数据库名称neo4j

与 Claude 集成

在 Claude Desktop 中配置

claude_desktop_config.json 添加以下配置:

{
  "mcpServers": {
    "graph-memory": {
      "command": "npx",
      "args": [
        "-y",
        "@izumisy/mcp-neo4j-memory-server"
      ],
      "env": {
        "NEO4J_URI": "neo4j://localhost:7687",
        "NEO4J_USER": "neo4j",
        "NEO4J_PASSWORD": "password",
        "NEO4J_DATABASE": "memory"
      }
    }
  }
}

在 Claude Web 中使用 MCP Inspector

  1. 安装MCP Inspector
  2. 启动 Neo4j Memory Server:
    npx @jovanhsu/mcp-neo4j-memory-server
    
  3. 在另一个终端启动 MCP Inspector:
    npx @modelcontextprotocol/inspector npx @jovanhsu/mcp-neo4j-memory-server
    
  4. 在浏览器中访问 MCP Inspector 接口

使用说明

Claude 自定义指令

将以下内容添加到 Claude 的自定义指令中:

按照以下步骤进行每次交互:

1. 用户识别:
   - 你应该假设自己正在与默认用户交互
   - 如果尚未识别默认用户,请主动尝试识别。

2. 记忆检索:
   - 总是以说“回忆中...”开始聊天,并从你的知识图谱中搜索相关信息
   - 根据用户的话语创建搜索查询,并从“记忆”中搜索相关事物。如果没有匹配项,首先尝试分解查询中的词语(例如,“A B”变为“A”和“B”)。
   - 总是将你的知识图谱称为你的“记忆”。

3. 记忆
   - 在与用户的对话中,注意任何新的信息,这些信息可能属于以下类别:
     a) 基本身份(年龄、性别、位置、职位、教育水平等)
     b) 行为(兴趣、习惯等)
     c) 偏好(沟通风格、首选语言等)
     d) 目标(目标、目标、抱负等)
     e) 关系(个人和职业关系,最多三度分离)

4. 记忆更新:
   - 如果在交互过程中收集了新信息,请按以下方式更新你的记忆:
     a) 为重复出现的组织、人员和重要事件创建实体
     b) 使用关系将它们连接到当前实体
     b) 将关于它们的事实存储为观察

API 示例

如果你想在自己的应用程序中使用此服务器,可以通过 MCP 协议与其通信:

import { McpClient } from '@modelcontextprotocol/sdk/client/mcp.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';

// 创建客户端
const transport = new StdioClientTransport({
  command: 'npx',
  args: ['-y', '@izumisy/mcp-neo4j-memory-server'],
  env: {
    NEO4J_URI: 'bolt://localhost:7687',
    NEO4J_USER: 'neo4j',
    NEO4J_PASSWORD: 'password',
    NEO4J_DATABASE: 'neo4j'
  }
});

const client = new McpClient();
await client.connect(transport);

// 创建实体
const result = await client.callTool('create_entities', {
  entities: [
    {
      name: '用户',
      entityType: '人物',
      observations: ['喜欢编程', '使用TypeScript']
    }
  ]
});

console.log(result);

为什么选择 Neo4j?

与原始版本使用的 JSON 文件存储和 DuckDB 版本相比,Neo4j 提供了以下优势:

  1. 原生图数据库Neo4j 是一个专门为图数据设计的数据库,非常适合存储和查询知识图谱
  2. 高性能查询使用 Cypher 查询语言可以高效地执行复杂的图遍历和模式匹配
  3. 优先处理关系Neo4j 将关系视为一等公民,使得实体之间的关系查询更高效
  4. 可视化能力Neo4j 提供内置的可视化工具,便于调试和理解知识图谱
  5. 可扩展性支持集群部署,能够处理大规模知识图谱

实现细节

数据模型

在 Neo4j 中知识图谱的存储模型如下:

(Entity:EntityType {name: "实体名称"})
(Entity)-[:HAS_OBSERVATION]->(Observation {content: "观察内容"})
(Entity1)-[:RELATION_TYPE]->(Entity2)

模糊搜索实现

该实现结合了 Neo4j 的全文搜索功能和 Fuse.js,以灵活地搜索实体:

  • 初步搜索使用 Neo4j 的全文索引
  • Fuse.js 提供额外的模糊匹配能力
  • 搜索结果包括精确匹配和部分匹配,按相关性排序

开发

环境设置

# 克隆仓库
git clone https://github.com/JovanHsu/mcp-neo4j-memory-server.git
cd mcp-neo4j-memory-server

# 安装依赖
pnpm install

# 构建项目
pnpm build

# 开发模式(使用MCP Inspector)
pnpm dev

测试

# 运行测试
pnpm test

发布

# 准备发布
npm version [patch|minor|major]

# 发布到NPM
npm publish

贡献指南

欢迎贡献代码、报告问题或提供改进建议!请遵循以下步骤:

  1. 分叉本仓库
  2. 创建你的功能分支(git checkout -b feature/amazing-feature
  3. 提交更改(git commit -m 'Add some amazing feature'
  4. 推送到分支(git push origin feature/amazing-feature
  5. 创建 Pull Request

相关项目

许可证

本项目采用 MIT 许可证 - 详情见LICENSE文档。

联系信息