README
🚀 MCP Neo4j 记忆体服务器
MCP Neo4j 记忆体服务器是一款基于 Neo4j 图数据库的知识图谱存储与检索工具,专为 Model Context Protocol (MCP) 设计了记忆增强功能。它能够处理实体创建、关系建立以及观察信息的存储,还支持复杂的图数据查询,为知识图谱的管理提供了强大的支持。
🚀 快速开始
MCP Neo4j 记忆体服务器是为满足知识图谱存储与检索需求而设计的工具。它借助 Neo4j 图数据库的强大功能,为 MCP 提供了记忆增强能力,可高效处理各类知识图谱相关操作。
✨ 主要特性
- 知识图谱存储:能将实体及其关系高效地存储在 Neo4j 图数据库中。
- 复杂查询能力:可利用 Cypher 查询语言进行高效的图遍历和模式匹配。
- 模糊搜索:结合 Fuse.js 和 Neo4j 全文索引,提供灵活的实体搜索功能。
- 扩展性:支持集群部署,可处理大规模知识图谱。
📦 安装指南
通过 npm 安装:
npm install @jovanhsu/mcp-neo4j-memory-server
💻 使用示例
基础用法
创建实体及其关系:
import { McpClient } from '@modelcontextprotocol/sdk/client/mcp.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
// 创建客户端运输
const transport = new StdioClientTransport({
command: 'npx',
args: ['-y', '@jovanhsu/mcp-neo4j-memory-server'],
env: {
NEO4J_URI: 'bolt://localhost:7687',
NEO4J_USER: 'neo4j',
NEO4J_PASSWORD: 'password'
}
});
const client = new McpClient();
await client.connect(transport);
// 创建实体
const createResult = await client.callTool('create_entities', {
entities: [
{
name: '李明',
entityType: '人物',
observations: ['喜欢编程', '使用TypeScript']
},
{
name: 'Google',
entityType: '公司',
observations: ['总部位于美国', '业务范围包括搜索、云计算等']
}
]
});
console.log('创建实体结果:', createResult);
// 建立关系
const relationResult = await client.callTool('create_relation', {
sourceEntityName: '李明',
targetEntityName: 'Google',
relationType: '工作于'
});
console.log('建立关系结果:', relationResult);
🔧 技术细节
数据模型
知识图谱在 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
为什么选择 Neo4j?
相比原始版本使用的 JSON 文件存储和 DuckDB 版本,Neo4j 具有以下优势:
- 原生图数据库:Neo4j 是专为图数据设计的数据库,非常适合知识图谱的存储与查询。
- 高性能查询:使用 Cypher 查询语言可以高效地进行复杂的图遍历和模式匹配。
- 关系优先:Neo4j 将关系作为一等公民,使得实体间的关系查询更加高效。
- 可视化能力:Neo4j 提供了内置的可视化工具,方便调试和理解知识图谱。
- 扩展性:支持集群部署,可以处理大规模知识图谱。
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
Scan to contact