MCP DuckDB Knowledge Graph Memory Server 精选
一个为 Claude 设计的记忆服务器,它使用 DuckDB 存储和检索知识图谱数据,从而增强了对话的性能和查询能力,并能持久保存用户信息。
Tools
open_nodes
Open specific nodes in the knowledge graph by their names
delete_relations
Delete multiple relations from the knowledge graph
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
search_nodes
Search for nodes in the knowledge graph based on a query
README
MCP DuckDB 知识图谱内存服务器
官方知识图谱内存服务器的一个fork版本。
<a href="https://glama.ai/mcp/servers/4mqwh1toao"> <img width="380" height="200" src="https://glama.ai/mcp/servers/4mqwh1toao/badge" alt="DuckDB Knowledge Graph Memory Server MCP server" /> </a>
安装
通过 Smithery 安装
要通过 Smithery 为 Claude Desktop 自动安装 DuckDB 知识图谱内存服务器:
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
构建
docker build -t mcp-duckdb-graph-memory .
运行
docker run -dit mcp-duckdb-graph-memory
用法
使用下面的示例指令
按照以下步骤进行每次交互:
1. 用户识别:
- 您应该假设您正在与 default_user 交互
- 如果您尚未识别 default_user,请主动尝试这样做。
2. 记忆检索:
- 始终以仅说“正在记忆...”开始您的聊天,并从您的知识图谱中搜索相关信息
- 从用户词语创建搜索查询,并从“记忆”中搜索内容。如果没有任何匹配项,请首先尝试分解查询中的词语(例如,“A B”分解为“A”和“B”)。
- 始终将您的知识图谱称为您的“记忆”
3. 记忆
- 在与用户交谈时,请注意属于以下任何类别的新信息:
a) 基本身份(年龄、性别、地点、职称、教育程度等)
b) 行为(兴趣、习惯等)
c) 偏好(沟通方式、首选语言等)
d) 目标(目标、指标、愿望等)
e) 关系(个人和职业关系,最多 3 度分离)
4. 记忆更新:
- 如果在交互过程中收集到任何新信息,请按如下方式更新您的记忆:
a) 为经常出现的组织、人物和重大事件创建实体
b) 使用关系将它们连接到当前实体
b) 将有关它们的事实存储为观察结果
动机
该项目通过用 DuckDB 替换其后端来增强原始的 MCP 知识图谱内存服务器。
为什么选择 DuckDB?
原始的 MCP 知识图谱内存服务器使用 JSON 文件作为其数据存储,并执行内存搜索。虽然这种方法适用于小型数据集,但它带来了一些挑战:
- 性能:内存搜索性能随着数据集的增长而降低
- 可扩展性:处理大量实体和关系时,内存使用量显着增加
- 查询灵活性:难以实现复杂的查询和条件搜索
- 数据完整性:确保事务和 CRUD 操作的原子性具有挑战性
选择 DuckDB 来应对这些挑战:
- 快速查询处理:DuckDB 针对分析查询进行了优化,即使对于大型数据集也能表现良好
- SQL 接口:可以使用标准 SQL 轻松执行复杂查询
- 事务支持:支持事务处理以维护数据完整性
- 索引功能:允许创建索引以提高搜索性能
- 嵌入式数据库:在应用程序中工作,无需外部数据库服务器
实现细节
此实现使用 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 : "has"
ENTITIES ||--o{ RELATIONS : "from"
ENTITIES ||--o{ RELATIONS : "to"
此模式设计允许高效存储和检索知识图谱组件,同时保持实体、观察和关系之间的关系。
模糊搜索实现
该实现结合了 SQL 查询和 Fuse.js,以实现灵活的实体搜索:
- DuckDB SQL 查询从数据库检索基本数据
- Fuse.js 在检索到的数据之上提供模糊匹配功能
- 这种混合方法允许结构化查询和灵活的文本匹配
- 搜索结果包括精确匹配和部分匹配,按相关性排序
开发
设置
pnpm install
测试
pnpm test
许可证
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
推荐服务器
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Playwright MCP Server
提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。
Apple MCP Server
通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。
contentful-mcp
在你的 Contentful Space 中更新、创建、删除内容、内容模型和资源。

Supabase MCP Server
一个模型上下文协议(MCP)服务器,它提供对 Supabase 管理 API 的编程访问。该服务器允许 AI 模型和其他客户端通过标准化的接口来管理 Supabase 项目和组织。
serper-search-scrape-mcp-server
这个 Serper MCP 服务器支持搜索和网页抓取,并且支持 Serper API 引入的所有最新参数,例如位置信息。
The Verge News MCP Server
提供从The Verge的RSS feed获取和搜索新闻的工具,允许用户获取今日新闻、检索过去一周的随机文章,以及在最近的Verge内容中搜索特定关键词。
MCP Server Trello
通过 Trello API 促进与 Trello 看板的交互,提供速率限制、类型安全、输入验证和错误处理等功能,以实现对卡片、列表和看板活动的无缝管理。
Metabase MCP Server
使人工智能助手能够与 Metabase 数据库和仪表板进行交互,允许用户通过自然语言列出和执行查询、访问数据可视化以及与数据库资源进行交互。