README
🚀 优化内存 MCP 服务器
本项目旨在测试和演示 Claude AI 的编程能力,以及展示良好的 AI 工作流程和提示设计。它是一个基于 Python 的本地知识图谱记忆 MCP 服务器(官方实现采用 Java 编写)的分支版本,使用 SQLite 作为后端数据库。
🚀 快速开始
在聊天开始时,Claude 会主动检索所有相关记忆,并以“正在回忆...”开头提示用户。在整个对话过程中,Claude 会注意收集新信息,并将其更新到知识图谱中。
✨ 主要特性
知识图谱内存服务器
实现了基本的知识图谱持久化内存功能,让 Claude 能够记住用户在聊天中的信息。
📦 安装指南
使用 Docker 进行构建:
docker build -t mcp/memory -f src/memory/Dockerfile .
💻 使用示例
基础用法
建议根据具体的使用场景调整提示内容,以便模型决定记忆的频率和类型。以下是一个用于聊天个性化的示例提示:
按照以下步骤进行每次交互:
1. 用户识别:
- 您应假设与 default_user 对话
- 如果尚未确定 default_user,请主动尝试识别。
2. 记忆检索:
- 总是从“正在回忆...”开始,从知识图谱中检索所有相关信息。
- 将知识图谱称为您的“记忆”。
3. 记忆内容:
- 在与用户交流时,注意收集以下类别的新信息:
a) 基本人格(年龄、性别、位置、职位、教育水平等)
b) 行为(兴趣、习惯等)
c) 偏好(沟通风格、首选语言等)
d) 目标(目标、目标、抱负等)
e) 关系(个人和专业关系,直到三度分离)
4. 更新记忆:
- 如果在交互中收集到任何新信息,请按照以下方式更新您的记忆:
a) 为反复出现的组织、人物和重要事件创建实体
b) 使用关系将它们与当前实体连接
c) 将有关它们的事实存储为观察结果
📚 详细文档
核心概念
实体
实体是知识图谱中的主要节点。每个实体都有:
- 唯一名称(标识符)
- 实体型(例如,“人”,“组织”,“事件”)
- 观察结果列表
示例:
{
"name": "John_Smith",
"entityType": "person",
"observations": ["会说流利的西班牙语"]
}
关系
关系定义了实体之间的定向连接。它们始终以主动语态存储,并描述实体如何相互作用或关联。
示例:
{
"from": "John_Smith",
"to": "Anthropic",
"relationType": "works_at"
}
观察结果
观察结果是对实体的离散信息片段。它们是:
- 以字符串形式存储
- 附加到特定实体
- 可以独立添加或删除
- 应该是原子化的(每个观察结果表示一个事实)
示例:
{
"entityName": "John_Smith",
"observations": [
"会说流利的西班牙语",
"2019年毕业",
"喜欢早晨会议"
]
}
API
工具
实体管理
getEntities(): 获取所有实体。addEntity(entity): 添加新实体。updateEntity(entityId, updates): 更新指定实体的属性。
关系管理
getRelations(): 获取所有关系。addRelation(relation): 添加新关系。removeRelation(relationId): 删除指定关系。
观察结果管理
getObservations entityId: 获取指定实体的所有观察结果。addObservation(entityId, observation): 添加新的观察结果到指定实体。updateObservation(observationId, updates): 更新指定的观察结果。
📄 许可证
此 MCP 服务器根据 MIT License 分发。这意味着您可以自由地使用、修改和分发软件,但需遵守 MIT 许可证的条款和条件。有关更多详细信息,请参阅项目存储库中的 LICENSE 文件。
Scan to join WeChat group