MCP DuckDB 知识图谱内存服务器
https://img.shields.io/npm/v/%40izumisy%2Fmcp-duckdb-memory-server
https://img.shields.io/npm/l/%40izumisy%2Fmcp-duckdb-memory-server
安装
通过 Smithery 安装
手动安装
或者,您可以在
claude_desktop_config.json
中手动添加 @IzumiSy/mcp-duckdb-memory-server
(MEMORY_FILE_PATH
是可选的):存储在该路径的数据是一个 DuckDB 数据库文件。
Docker
构建镜像:
运行容器:
使用
使用以下示例指令:
动机
本项目通过将原始 MCP 知识图谱内存服务器的后端替换为 DuckDB 来增强其功能。
为什么选择 DuckDB?
原始 MCP 知识图谱内存服务器使用 JSON 文件作为数据存储,并在内存中执行搜索。虽然这种方法适用于小型数据集,但在处理大规模数据时会面临以下挑战:
- 性能:随着数据集的增长,内存搜索性能会下降
- 可扩展性:处理大量实体和关系时,内存使用量显著增加
- 查询灵活性:复杂的查询和条件搜索难以实现
- 数据完整性:确保事务和 CRUD 操作的原子性具有挑战性
选择 DuckDB 来解决这些问题:
- 快速查询处理:DuckDB 针对分析查询进行了优化,即使处理大规模数据集也能表现良好
- SQL 接口:可以使用标准 SQL 轻松执行复杂查询
- 事务支持:支持事务处理以维护数据完整性
- 索引功能:允许创建索引以提高搜索性能
- 嵌入式数据库:在应用程序内工作,无需外部数据库服务器
实现细节
本实现使用 DuckDB 作为后端存储系统,重点关注以下两个关键方面:
数据库结构
知识图谱以关系数据库结构存储,如下所示:
该模式设计允许高效存储和检索知识图谱组件,同时保持实体、观察结果和关系之间的关系。
模糊搜索实现
实现结合了 SQL 查询和 Fuse.js 以实现灵活的实体搜索:
- DuckDB SQL 查询从数据库中检索基础数据
- Fuse.js 在检索到的数据上提供模糊匹配功能
- 这种混合方法允许进行结构化查询和灵活的文本匹配
- 搜索结果包括精确匹配和部分匹配,并按相关性排序
开发
设置
测试
许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。
- Author:waytomcp
- URL:https://www.waytomcp.com/article/IzumiSy/mcp-duckdb-memory-server
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!