MCP DuckDB Knowledge Graph Memory Server

MCP DuckDB Knowledge Graph Memory Server
精选

一个为 Claude 设计的记忆服务器,它使用 DuckDB 存储和检索知识图谱数据,从而增强了对话的性能和查询能力,并能持久保存用户信息。

知识与记忆
数据库
TypeScript
访问服务器

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 知识图谱内存服务器

Test smithery badge NPM Version NPM License

官方知识图谱内存服务器的一个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-serverMEMORY_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 文件作为其数据存储,并执行内存搜索。虽然这种方法适用于小型数据集,但它带来了一些挑战:

  1. 性能:内存搜索性能随着数据集的增长而降低
  2. 可扩展性:处理大量实体和关系时,内存使用量显着增加
  3. 查询灵活性:难以实现复杂的查询和条件搜索
  4. 数据完整性:确保事务和 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 MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Playwright MCP Server

Playwright MCP Server

提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。

精选
本地
TypeScript
Apple MCP Server

Apple MCP Server

通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。

精选
本地
TypeScript
contentful-mcp

contentful-mcp

在你的 Contentful Space 中更新、创建、删除内容、内容模型和资源。

精选
TypeScript
Supabase MCP Server

Supabase MCP Server

一个模型上下文协议(MCP)服务器,它提供对 Supabase 管理 API 的编程访问。该服务器允许 AI 模型和其他客户端通过标准化的接口来管理 Supabase 项目和组织。

精选
JavaScript
serper-search-scrape-mcp-server

serper-search-scrape-mcp-server

这个 Serper MCP 服务器支持搜索和网页抓取,并且支持 Serper API 引入的所有最新参数,例如位置信息。

精选
TypeScript
The Verge News MCP Server

The Verge News MCP Server

提供从The Verge的RSS feed获取和搜索新闻的工具,允许用户获取今日新闻、检索过去一周的随机文章,以及在最近的Verge内容中搜索特定关键词。

精选
TypeScript
MCP Server Trello

MCP Server Trello

通过 Trello API 促进与 Trello 看板的交互,提供速率限制、类型安全、输入验证和错误处理等功能,以实现对卡片、列表和看板活动的无缝管理。

精选
TypeScript
Metabase MCP Server

Metabase MCP Server

使人工智能助手能够与 Metabase 数据库和仪表板进行交互,允许用户通过自然语言列出和执行查询、访问数据可视化以及与数据库资源进行交互。

精选
JavaScript