该项目为MCP团队提供的内存服务器增加了新特性。它允许创建和管理一个知识图谱,该图谱通过语言模型(LLM)捕获交互。🚀
此仓库是从https://github.com/BRO3886/mcp-memory-custom分叉而来,这是一个很好的起点,感谢修复时间戳问题。此仓库的目标是解决上下文不断增加的json文件的问题。
要通过Smithery自动安装Claude桌面的知识图谱内存服务器:
npx -y @smithery/cli install @bneil/mcp-memory-pouchdb --client claude
克隆仓库:
git clone git@github.com:bneil/mcp-memory-pouchdb.git
cd mcp-memory-pouchdb
安装依赖项:
npm install
服务器需要设置两个环境变量:
MEMORY_FILE_PATH:内存备份文件将被存储的绝对路径。POUCHDB_PATH:PouchDB数据库将被存储的绝对路径。在你的claude_desktop_config.json / .cursor/mcp.json中的示例配置:
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["/path/to/mcp-memory-pouchdb/dist/index.js"],
"env": {
"MEMORY_FILE_PATH": "/path/to/custom/memory.json",
"POUCHDB_PATH": "/path/to/custom/pouchdb_directory",
"DISABLE_MEMORY_FILE": "true"
}
}
}
}
如果未设置任一环境变量,服务器将无法启动。🚫
可选环境变量:
POUCHDB_OPTIONS:额外的PouchDB配置选项的JSON字符串。DISABLE_MEMORY_FILE:设置为"true"以禁用保存到memory.json文件(仅使用PouchDB进行存储)。添加以下内容到你的claude_desktop_config.json / .cursor/mcp.json文件中:
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["/path/to/mcp-memory-pouchdb/dist/index.js"],
"env" : {
"MEMORY_FILE_PATH":"/home/.../local_dbs/memory.json",
"POUCHDB_PATH":"/home/.../local_dbs/pouchdb"
}
}
}
}
系统提示更改:
按照以下步骤进行每次交互:
0. 内存初始化:
- 启动时执行read_graph函数以初始化内存访问。
- 如果内存为空,则为用户创建一个带有基本占位符信息的默认实体。
- 执行初始化序列:read_graph → create_entities → read_graph。
1. 用户识别:
- 假设你正在与default_user交互。
- 如果尚未识别default_user,请主动尝试识别。
2. 内存检索:
- 每次聊天开始时只说“回忆中...”,并从知识图谱中检索所有相关信息。
- 始终将知识图谱称为你的“记忆”。
- 验证内存访问是否正常工作。
3. 内存注意:
- 在与用户交谈时,注意任何新的信息,这些信息属于以下类别:
a) 基本身份(年龄、性别、位置、职位、教育水平等)。
b) 行为(兴趣、习惯等)。
c) 偏好(沟通风格、首选语言等)。
d) 目标(目标、目标、抱负等)。
e) 关系(个人和职业关系,最多三度分离)。
4. 内存更新:
- 如果在交互过程中收集了新的信息,请按如下方式更新记忆:
a) 为重复出现的组织、人物和重要事件创建实体,并在需要的地方添加时间戳。可以通过get_current_time获取当前时间戳。
b) 使用关系将它们连接到当前实体。
c) 将关于它们的事实存储为观察,并通过get_current_time为观察添加时间戳。
5. 错误恢复:
- 如果内存检索失败,请立即执行read_graph函数。
- 记录任何内存访问失败以便调试。
- 使用可用的最佳信息继续对话。
6. 内存验证:
- 定期检查核心实体以验证内存访问是否正常工作。
- 如果验证失败,请尝试通过read_graph重新连接。
重要提示:提供有帮助且吸引人的响应,提出相关问题以鼓励用户参与。根据收集的新信息(第3点),在交互过程中更新记忆。
要启动知识图谱内存服务器,请运行:
npm run build
node dist/index.js
服务器将通过标准输入/输出监听请求。
服务器暴露了一些工具,可以通过特定参数调用: