这是官方知识图谱内存服务器的一个分支版本。
<a href="https://glama.ai/mcp/servers/4mqwh1toao"> <img width="380" height="200" src="https://gips0.baidu.com/it/u=4241046204,4036685100&fm=3081&app=3081&f=PNG?w=760&h=400" alt="DuckDB 知识图谱内存服务器 MCP 服务器" /> </a>要通过 Smithery 自动安装 DuckDB 知识图谱内存服务器到 Claude Desktop:
npx -y @smithery/cli install @IzumiSy/mcp-duckdb-memory-server --client claude
否则,手动在你的 claude_desktop_config.json 文件中添加 @IzumiSy/mcp-duckdb-memory-server(MEMORY_FILE_PATH 是可选的)
{
"mcpServers": {
"graph-memory": {
"command": "npx",
"args": [
"-y",
"@izumisy/mcp-duckdb-memory-server"
],
"env": {
"MEMORY_FILE_PATH": "/path/to/your/memory.data"
}
}
}
}
该路径上存储的数据是一个 DuckDB 数据库文件。
构建
docker build -t mcp-duckdb-graph-memory .
运行
docker run -dit mcp-duckdb-graph-memory
使用以下示例指令:
对于每次交互,请遵循以下步骤:
1. 用户识别:
- 假设你正在与默认用户交互。
- 如果尚未识别默认用户,请主动尝试进行识别。
2. 内存检索:
- 总是以说“回忆中...”开始聊天,并从你的知识图谱中搜索相关信息。
- 根据用户的词语创建一个搜索查询,并从“记忆”中搜索相关内容。如果没有任何匹配项,首先尝试分解查询中的词语(例如,“A B”变为“A”和“B”)。
- 总是将你的知识图谱称为你的“记忆”。
3. 内存
- 在与用户交谈时,注意任何新的信息,这些信息可能属于以下类别:
a) 基本身份(年龄、性别、位置、职位、教育水平等)
b) 行为(兴趣、习惯等)
c) 偏好(沟通风格、首选语言等)
d) 目标(目标、目标、抱负等)
e) 关系(个人和职业关系,最多三度分离)
4. 内存更新:
- 如果在交互过程中收集了任何新信息,请按照以下方式更新你的记忆:
a) 为重复出现的组织、人员和重要事件创建实体。
b) 使用关系将它们连接到当前实体。
c) 将关于它们的事实存储为观察。
该项目通过用 DuckDB 替换后端来增强原始 MCP 知识图谱内存服务器。
原始 MCP 知识图谱内存服务器使用 JSON 文件作为数据存储并执行内存搜索。虽然这种方法对小型数据集工作良好,但它存在一些挑战:
选择 DuckDB 来解决这些问题:
此实现使用 DuckDB 作为后端存储系统,重点关注两个关键方面:
知识图谱存储在一个关系数据库结构中,如下所示:
erDiagram
ENTITIES {
string name PK
string entityType
}
OBSERVATIONS {
string entityName FK
string content
}
RELATIONS {
string from_entity FK
string to_entity FK
string relationType
}
ENTITIES ||--o{ OBSERVATIONS : "拥有"
ENTITIES ||--o{ RELATIONS : "来自"
ENTITIES ||--o{ RELATIONS : "到"
这种模式设计允许高效地存储和检索知识图谱组件,同时保持实体、观察和关系之间的联系。
实现结合了 SQL 查询和 Fuse.js 以提供灵活的实体搜索:
pnpm install
pnpm test
本项目根据 MIT 许可证发布 - 查看 LICENSE 文件获取详细信息。