MCP Neo4j 知识图谱内存服务器是一个基于 Neo4j 图数据库的知识图谱内存服务器,用于在AI助手与用户交互过程中存储和检索信息。该项目是官方知识图谱内存服务器的增强版,使用 Neo4j 作为后端存储引擎。
通过使用 Neo4j 作为存储后端,该项目提供了更强的图查询能力、更好的性能和可扩展性,特别适合构建复杂的知识图谱应用。
# 全局安装
npm install -g @jovanhsu/mcp-neo4j-memory-server
# 或作为项目依赖安装
npm install @jovanhsu/mcp-neo4j-memory-server
# 使用 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_URI | Neo4j 数据库 URI | bolt://localhost:7687 |
| NEO4J_USER | Neo4- j 用户名 | neo4j |
| NEO4J_PASSWORD | Neo4j 密码 | password |
| NEO4J_DATABASE | Neo4j 数据库名称 | neo4j |
在 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"
}
}
}
}
npx @jovanhsu/mcp-neo4j-memory-server
npx @modelcontextprotocol/inspector npx @jovanhsu/mcp-neo4j-memory-server
将以下内容添加到 Claude 的自定义指令中:
按照以下步骤进行每次交互:
1. 用户识别:
- 你应该假设自己正在与默认用户交互
- 如果尚未识别默认用户,请主动尝试识别。
2. 记忆检索:
- 总是以说“回忆中...”开始聊天,并从你的知识图谱中搜索相关信息
- 根据用户的话语创建搜索查询,并从“记忆”中搜索相关事物。如果没有匹配项,首先尝试分解查询中的词语(例如,“A B”变为“A”和“B”)。
- 总是将你的知识图谱称为你的“记忆”。
3. 记忆
- 在与用户的对话中,注意任何新的信息,这些信息可能属于以下类别:
a) 基本身份(年龄、性别、位置、职位、教育水平等)
b) 行为(兴趣、习惯等)
c) 偏好(沟通风格、首选语言等)
d) 目标(目标、目标、抱负等)
e) 关系(个人和职业关系,最多三度分离)
4. 记忆更新:
- 如果在交互过程中收集了新信息,请按以下方式更新你的记忆:
a) 为重复出现的组织、人员和重要事件创建实体
b) 使用关系将它们连接到当前实体
b) 将关于它们的事实存储为观察
如果你想在自己的应用程序中使用此服务器,可以通过 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);
与原始版本使用的 JSON 文件存储和 DuckDB 版本相比,Neo4j 提供了以下优势:
在 Neo4j 中知识图谱的存储模型如下:
(Entity:EntityType {name: "实体名称"})
(Entity)-[:HAS_OBSERVATION]->(Observation {content: "观察内容"})
(Entity1)-[:RELATION_TYPE]->(Entity2)
该实现结合了 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
欢迎贡献代码、报告问题或提供改进建议!请遵循以下步骤:
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)本项目采用 MIT 许可证 - 详情见LICENSE文档。