Knowledge Graph Memory Server
通过持久记忆系统增强用户互动,该系统可以记住跨聊天的信息,并通过利用本地知识图谱和课程管理从过去的错误中学习。
Tools
create_entities
Create multiple new entities in the knowledge graph
create_relations
Create multiple new relations between entities in the knowledge graph. Relations should be in active voice
add_observations
Add new observations to existing entities in the knowledge graph
delete_entities
Delete multiple entities and their associated relations from the knowledge graph
delete_observations
Delete specific observations from entities in the knowledge graph
delete_relations
Delete multiple relations from the knowledge graph
read_graph
Read the entire knowledge graph
search_nodes
Search for nodes in the knowledge graph based on a query
open_nodes
Open specific nodes in the knowledge graph by their names
create_lesson
Create a new lesson from an error and its solution
find_similar_errors
Find similar errors and their solutions in the knowledge graph
update_lesson_success
Update the success rate of a lesson after applying its solution
get_lesson_recommendations
Get relevant lessons based on the current context
README
知识图谱记忆服务器
一个使用本地知识图谱实现持久化记忆的基础实现。这使得 Claude 能够记住用户在聊天中的信息,并通过课程系统从过去的错误中学习。
<a href="https://glama.ai/mcp/servers/eoinvr1bz0"><img width="380" height="200" src="https://glama.ai/mcp/servers/eoinvr1bz0/badge" alt="Knowledge Graph Memory Server MCP server" /></a>
核心概念
实体
实体是知识图谱中的主要节点。每个实体都有:
- 一个唯一的名称(标识符)
- 一个实体类型(例如,“人”、“组织”、“事件”)
- 一个观察列表
示例:
{
"name": "John_Smith",
"entityType": "person",
"observations": ["Speaks fluent Spanish"]
}
关系
关系定义了实体之间的有向连接。它们总是以主动语态存储,并描述实体如何交互或相互关联。
示例:
{
"from": "John_Smith",
"to": "Anthropic",
"relationType": "works_at"
}
观察
观察是关于实体的离散信息片段。它们是:
- 存储为字符串
- 附加到特定实体
- 可以独立添加或删除
- 应该是原子性的(每个观察一个事实)
示例:
{
"entityName": "John_Smith",
"observations": [
"Speaks fluent Spanish",
"Graduated in 2019",
"Prefers morning meetings"
]
}
课程
课程是特殊的实体,用于捕获关于错误及其解决方案的知识。每个课程都有:
- 一个唯一的名称(标识符)
- 错误模式信息(类型、消息、上下文)
- 解决方案步骤和验证
- 成功率跟踪
- 环境上下文
- 元数据(严重性、时间戳、频率)
示例:
{
"name": "NPM_VERSION_MISMATCH_01",
"entityType": "lesson",
"observations": [
"Error occurs when using incompatible package versions",
"Affects Windows environments specifically",
"Resolution requires version pinning"
],
"errorPattern": {
"type": "dependency",
"message": "Cannot find package @shadcn/ui",
"context": "package installation"
},
"metadata": {
"severity": "high",
"environment": {
"os": "windows",
"nodeVersion": "18.x"
},
"createdAt": "2025-02-13T13:21:58.523Z",
"updatedAt": "2025-02-13T13:22:21.336Z",
"frequency": 1,
"successRate": 1.0
},
"verificationSteps": [
{
"command": "pnpm add shadcn@latest",
"expectedOutput": "Successfully installed shadcn",
"successIndicators": ["added shadcn"]
}
]
}
API
工具
-
create_entities
- 在知识图谱中创建多个新实体
- 输入:
entities(对象数组)- 每个对象包含:
name(字符串):实体标识符entityType(字符串):类型分类observations(字符串数组):关联的观察
- 每个对象包含:
- 忽略具有现有名称的实体
-
create_relations
- 在实体之间创建多个新关系
- 输入:
relations(对象数组)- 每个对象包含:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):主动语态的关系类型
- 每个对象包含:
- 跳过重复关系
-
add_observations
- 向现有实体添加新观察
- 输入:
observations(对象数组)- 每个对象包含:
entityName(字符串):目标实体contents(字符串数组):要添加的新观察
- 每个对象包含:
- 返回每个实体添加的观察
- 如果实体不存在则失败
-
delete_entities
- 删除实体及其关系
- 输入:
entityNames(字符串数组) - 级联删除关联关系
- 如果实体不存在则静默操作
-
delete_observations
- 从实体中删除特定观察
- 输入:
deletions(对象数组)- 每个对象包含:
entityName(字符串):目标实体observations(字符串数组):要删除的观察
- 每个对象包含:
- 如果观察不存在则静默操作
-
delete_relations
- 从图中删除特定关系
- 输入:
relations(对象数组)- 每个对象包含:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型
- 每个对象包含:
- 如果关系不存在则静默操作
-
read_graph
- 读取整个知识图谱
- 无需输入
- 返回包含所有实体和关系的完整图结构
-
search_nodes
- 根据查询搜索节点
- 输入:
query(字符串) - 搜索范围:
- 实体名称
- 实体类型
- 观察内容
- 返回匹配的实体及其关系
-
open_nodes
- 按名称检索特定节点
- 输入:
names(字符串数组) - 返回:
- 请求的实体
- 请求的实体之间的关系
- 静默跳过不存在的节点
课程管理工具
-
create_lesson
- 从错误及其解决方案创建一个新课程
- 输入:
lesson(对象)- 包含:
name(字符串):唯一标识符entityType(字符串):必须为“lesson”observations(字符串数组):关于错误和解决方案的注释errorPattern(对象):错误详细信息type(字符串):错误类别message(字符串):错误消息context(字符串):错误发生的位置stackTrace(字符串,可选):堆栈跟踪
metadata(对象):附加信息severity(“low” | “medium” | “high” | “critical”)environment(对象):系统详细信息frequency(数字):遇到次数successRate(数字):解决方案成功率
verificationSteps(数组):解决方案验证- 每个步骤包含:
command(字符串):要采取的行动expectedOutput(字符串):预期结果successIndicators(字符串数组):成功标记
- 每个步骤包含:
- 包含:
- 自动初始化元数据时间戳
- 验证所有必需字段
-
find_similar_errors
- 查找相似的错误及其解决方案
- 输入:
errorPattern(对象)- 包含:
type(字符串):错误类别message(字符串):错误消息context(字符串):错误上下文
- 包含:
- 返回按成功率排序的匹配课程
- 使用模糊匹配来查找错误消息
-
update_lesson_success
- 更新课程的成功跟踪
- 输入:
lessonName(字符串):要更新的课程success(布尔值):解决方案是否有效
- 更新:
- 成功率(加权平均)
- 频率计数器
- 上次更新时间戳
-
get_lesson_recommendations
- 获取当前上下文的相关课程
- 输入:
context(字符串) - 搜索范围:
- 错误类型
- 错误消息
- 错误上下文
- 课程观察
- 返回按以下内容排序的课程:
- 上下文相关性
- 成功率
- 包括完整的解决方案详细信息
文件管理
服务器现在处理两种类型的文件:
memory.json:存储基本实体和关系lesson.json:存储具有错误模式的课程实体
如果文件超过 1000 行,则会自动拆分文件以保持性能。
Cursor MCP 客户端设置
要将此记忆服务器与 Cursor MCP 客户端集成,请按照以下步骤操作:
- 克隆存储库:
git clone [repository-url]
cd [repository-name]
- 安装依赖项:
pnpm install
- 构建项目:
pnpm build
- 配置服务器:
- 找到已构建服务器文件的完整路径:
/path/to/the/dist/index.js - 使用 Node.js 启动服务器:
node /path/to/the/dist/index.js
- 在 Cursor 中激活:
- 使用键盘快捷键
Ctrl+Shift+P - 键入“reload window”并选择它
- 等待几秒钟以激活 MCP 服务器
- 提示时选择 stdio 类型
现在,记忆服务器应该已与您的 Cursor MCP 客户端集成并可以使用。
与 Claude Desktop 一起使用
设置
将其添加到您的 claude_desktop_config.json:
Docker
{
"mcpServers": {
"memory": {
"command": "docker",
"args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
}
}
}
NPX
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
具有自定义设置的 NPX
可以使用以下环境变量配置服务器:
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
],
"env": {
"MEMORY_FILE_PATH": "/path/to/custom/memory.json"
}
}
}
}
MEMORY_FILE_PATH:记忆存储 JSON 文件的路径(默认值:服务器目录中的memory.json)
系统提示
利用记忆的提示取决于用例。更改提示将有助于模型确定创建的记忆的频率和类型。
这是一个用于聊天个性化的示例提示。您可以在 Claude.ai 项目的“自定义说明”字段中使用此提示。
按照以下步骤进行每次交互:
1. 用户识别:
- 您应该假设您正在与 default_user 交互
- 如果您尚未识别 default_user,请主动尝试这样做。
2. 记忆检索:
- 始终以仅说“Remembering...”开始您的聊天,并从您的知识图谱中检索所有相关信息
- 始终将您的知识图谱称为您的“记忆”
3. 记忆
- 在与用户交谈时,请注意属于以下类别的任何新信息:
a) 基本身份(年龄、性别、位置、职称、教育程度等)
b) 行为(兴趣、习惯等)
c) 偏好(沟通方式、首选语言等)
d) 目标(目标、指标、愿望等)
e) 关系(个人和职业关系,最多 3 度分离)
4. 记忆更新:
- 如果在交互过程中收集到任何新信息,请按如下方式更新您的记忆:
a) 为重复出现的组织、人员和重大事件创建实体
b) 使用关系将它们连接到当前实体
b) 将关于它们的事实存储为观察
构建
Docker:
docker build -t mcp/memory -f src/memory/Dockerfile .
许可证
此 MCP 服务器已获得 MIT 许可证的许可。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。有关更多详细信息,请参阅项目存储库中的 LICENSE 文件。
新工具
-
create_lesson
- 从错误及其解决方案创建一个新课程
- 输入:
lesson(对象)- 包含错误模式、解决方案步骤和元数据
- 自动跟踪创建时间和更新
- 验证解决方案步骤是否完整
-
find_similar_errors
- 查找相似的错误及其解决方案
- 输入:
errorPattern(对象)- 包含错误类型、消息和上下文
- 返回按成功率排序的匹配课程
- 包括相关的解决方案和验证步骤
-
update_lesson_success
- 更新课程的成功跟踪
- 输入:
lessonName(字符串):要更新的课程success(布尔值):解决方案是否有效
- 更新成功率和频率指标
-
get_lesson_recommendations
- 获取当前上下文的相关课程
- 输入:
context(字符串) - 返回按相关性和成功率排序的课程
- 包括完整的解决方案详细信息和验证步骤
非常感谢此存储库的所有者提供的基础代码,我使用课程和文件管理对其进行了增强
非常感谢! https://github.com/modelcontextprotocol/servers jerome3o-anthropic https://github.com/modelcontextprotocol/servers/tree/main/src/memory
推荐服务器
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
Knowledge Graph Memory Server
为 Claude 实现持久性记忆,使用本地知识图谱,允许 AI 记住用户的信息,并可在自定义位置存储,跨对话保持记忆。
mcp-codex-keeper
作为开发知识的守护者,为 AI 助手提供精心策划的最新文档和最佳实践访问权限。
Perplexity Deep Research MCP
一个服务器,它允许 AI 助手使用 Perplexity 的 sonar-deep-research 模型进行网络搜索,并提供引用支持。
RAT MCP Server (Retrieval Augmented Thinking)
🧠 MCP 服务器,实现了 RAT(检索增强思维)—— 结合了 DeepSeek 的推理能力和 GPT-4/Claude/Mistral 的回复,并在交互之间保持对话上下文。
MCP - Titan Memory Server
启用神经记忆序列学习,通过记忆增强模型来改进代码理解和生成,具有状态管理、新颖性检测和模型持久化等功能。
Neo4j MCP Clients & Servers
这使您可以使用 Claude Desktop 或任何 MCP 客户端,通过自然语言来完成 Neo4j 和您的 Aura 账户中的任务。
mcp-reasoner
一个为 Claude Desktop 设计的系统推理 MCP 服务器实现,具备束搜索和思维评估能力。 (Alternatively, a slightly more technical translation:) 一个为 Claude Desktop 设计的系统性推理 MCP 服务器实现,具有束搜索和思想评估功能。
Zanny's Persistent Memory Manager
一个定制的 MCP 服务器,允许使用自然语言命令和关键词检测来存储、检索和管理基于文本的信息。 (Alternatively, a slightly more formal translation:) 一个定制的 MCP 服务器,它允许通过自然语言指令和关键词检测,实现对文本信息的存储、检索和管理。
MCP Reasoner
一个为 Claude Desktop 设计的系统性推理 MCP 服务器,采用束搜索 (Beam Search) 和蒙特卡洛树搜索 (Monte Carlo Tree Search) 来促进复杂问题解决和决策过程。