mcp-neo4j-agent-memory
knowall-ai/mcp-neo4j-agent-memory加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

你正在和 Claude 讨论一个复杂项目,Claude 提到了三个月前你们讨论过的某个技术方案。你问 Claude:"上次我们讨论的那个方案,你还记得吗?"Claude 回答:"抱歉,我没有对之前对话的记忆。"
这是每一个 AI Agent 用户都曾遇到的尴尬时刻。AI 模型本身不持久化状态,每次对话都是从零开始。对于需要跨会话积累上下文的企业场景来说,这是致命的限制。
Neo4j Agent Memory MCP Server 正是为了解决这一问题而诞生的。它为 AI Agent 提供了一个基于图数据库的外部记忆系统,让 AI 可以像人类一样,在会话之间持久化存储信息、建立概念之间的关联,并随时检索和推理。
MCP(Model Context Protocol)是 Anthropic 主导推出的 AI Agent 工具交互标准,类似于 USB 接口之于硬件设备——只要设备支持 USB,就能连接任何兼容配件。MCP 的核心理念是:让 AI Agent 通过统一的协议调用外部工具,而不必为每个工具单独适配。
在这个生态中,"记忆"一直是个薄弱环节。传统的解决方案如向量数据库(Vector DB)适合语义检索,但在处理实体间复杂关系时力不从心。而 Neo4j 作为业界领先的图数据库,天生适合表达"谁认识谁"、"什么项目属于哪个公司"这类关系型知识。
KnowAll-AI 团队敏锐地捕捉到了这个技术交叉点,推出了这款 MCP Server,将 Neo4j 图数据库的能力无缝桥接到 AI Agent 的工作流中。项目基于 MIT 协议开源,已获得 71 颗 GitHub Stars,在 MCP 生态中属于记忆管理领域的早期探索者。
这套系统的设计哲学独树一帜:把复杂性交给 LLM,而不是工具本身。 项目只提供简单、原子化的记忆操作工具,而把实体识别、关系推理、歧义消解等智能判断全部交给调用它的 LLM。这种设计的好处是,随着 LLM 能力的提升,记忆系统的能力也会自动水涨船高,不需要修改任何工具代码。
| 工具名称 | 功能描述 |
|---|---|
create_memory | 创建任意类型的记忆节点(人物、地点、项目等) |
search_memories | 词元化搜索,返回包含任意匹配词的结果 |
create_connection | 在两个记忆节点之间建立语义关系(KNOWS、WORKS_AT 等) |
update_memory | 修改已有记忆的属性 |
update_connection | 更新关系上的元数据 |
delete_memory | 删除记忆及其所有关联关系 |
delete_connection | 精确删除特定关系 |
list_memory_labels | 列出系统中所有记忆类型及数量 |
get_guidance | 获取记忆管理的最佳实践指导 |
真正让这套系统区别于简单 KV 存储的,是关系建模能力。来看一个具体例子:
当你告诉 AI "John 在 Google 工作,Sarah 是 John 的经理",传统的 KV 存储只能分别存储两条独立信息。但在这套系统中,AI 会自动:
Person: John 节点(属性:name、occupation)Organization: Google 节点Person: Sarah 节点(属性:name、role、start_year)WORKS_AT 关系连接 John → GoogleMANAGES 关系连接 Sarah → John之后当你问"谁在 Google 工作"或"John 的老板是谁"时,AI 可以通过图遍历(Graph Traversal)给出精确答案,而且可以追溯任意深度的关联路径。
search_memories 工具采用词元化(Word Tokenization)搜索策略:查询 "John Smith" 会同时返回包含 "John" 或 "Smith" 的所有记忆。这种设计是有意为之——它把筛选和排序的工作交给 LLM,让 LLM 从更多候选中选取最相关的。相比精确匹配,这种策略在自然语言查询场景下更加灵活和鲁棒。
npx @knowall-ai/mcp-neo4j-agent-memory
需要配置 4 个环境变量:
| 变量 | 说明 | 示例 |
|---|---|---|
NEO4J_URI | Neo4j 连接地址 | bolt://localhost:7687 |
NEO4J_USERNAME | 用户名 | neo4j |
NEO4J_PASSWORD | 密码 | your-password |
NEO4J_DATABASE | 数据库名(可选) | neo4j |
项目提供了完整的多阶段 Dockerfile:
# 构建镜像
docker build -t mcp-neo4j-agent-memory .
# 运行(需要预先配置 .env 或传入环境变量)
docker run -e NEO4J_URI=bolt://host.docker.internal:7687 \
-e NEO4J_USERNAME=neo4j \
-e NEO4J_PASSWORD=*** \
mcp-neo4j-agent-memory
Smithery 是 MCP 生态的"应用商店",支持一键安装:
npx -y @smithery/cli install @knowall-ai/mcp-neo4j-agent-memory --client claude
安装后只需在 Claude Desktop 配置文件中添加服务端点即可。
无论哪种部署方式,都需要预先准备好 Neo4j 实例:
# 最简方式:Docker 起一个 Neo4j
docker run -p 7474:7474 -p 7687:7687 \
-e NEO4J_AUTH=neo4j/your-password \
neo4j
Neo4j 版本要求:v4.4 及以上(支持 Bolt 协议)。
项目使用 TypeScript 开发,代码结构清晰:
src/
├── index.ts # 入口文件
├── server.ts # MCP Server 核心,定义工具和处理逻辑
├── neo4j-client.ts # Neo4j 驱动封装
├── types.ts # TypeScript 类型定义
├── tools/
│ ├── definitions.ts # 工具 JSON Schema 定义
│ └── guidance-tool.ts # 引导工具实现
└── handlers/
└── index.ts # 工具处理器入口
核心依赖:
@modelcontextprotocol/sdk 0.6.0:MCP 协议官方 SDK,处理工具注册、请求路由、JSON-RPC 通信neo4j-driver 5.27.0:Neo4j 官方 Node.js 驱动,处理 Bolt 协议连接和 Cypher 查询dotenv 17.2.0:环境变量管理uuid 11.0.4:为新创建的节点生成唯一 IDUser Message
↓
LLM(你的 AI 助手,如 Claude)
↓ 调用 MCP 工具(如 create_memory)
↓
MCP Server(本项目)
↓ 执行 Cypher 查询
↓
Neo4j Graph Database
↓ 返回结果
↓
MCP Server → LLM → User
整个链路标准化、可观测,适合集成到企业级 AI Agent 流水线。
没有任何工具是银弹,这套系统也存在明显的局限性:
1. 依赖外部 Neo4j 服务:系统本身是"无状态"的,所有记忆都存在 Neo4j 里。如果 Neo4j 宕机,整个记忆系统即失效。相比之下,本地向量数据库(如 SQLite)方案更轻量。
2. 中文全文检索体验:词元化搜索基于空格分词,对中文支持存在天然短板。如果你的记忆内容以中文为主,需要考虑额外的分词处理层。
3. LLM 的记忆管理能力是上限:工具设计得极简,代价是把所有复杂性都推给了 LLM。如果 LLM 的实体识别或关系推理能力不足,记忆质量会受到影响。这不是一个"开箱即用"的解决方案,而是需要 prompt 工程配合的系统。
4. 安全性考虑:Neo4j 连接信息以明文环境变量传入容器,需要妥善管理 secrets 生产环境中建议通过 Vault 或 Kubernetes Secrets 注入。
随着 GPT-4o、Claude 3.5 等强推理模型的能力跃升,AI Agent 已经成为 2024-2025 年 AI 应用的主战场。而 Agent 的成熟度瓶颈,正在从"能做什么"转移到"记住什么"。
图数据库作为记忆后端的核心优势在于:它天然支持多跳推理。你可以问"谁是那个在 2023 年加入公司、参与了 X 项目的人的经理?"这类多跳查询,而向量数据库往往难以高效处理。
KnowAll-AI 的这个项目代表了 Agent 记忆层的一个有价值的探索方向——用成熟的图数据库基础设施,配合极简的工具接口,构建可解释、可追溯、可推理的 AI 记忆系统。随着 MCP 生态的持续扩张,这类记忆基础设施的重要性只会越来越高。