Knowledge Graph Memory Server

Knowledge Graph Memory Server

通过持久记忆系统增强用户互动,该系统可以记住跨聊天的信息,并通过利用本地知识图谱和课程管理从过去的错误中学习。

AI记忆系统
访问服务器

Tools

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

delete_relations

Delete multiple relations from the knowledge graph

read_graph

Read the entire knowledge graph

search_nodes

Search for nodes in the knowledge graph based on a query

open_nodes

Open specific nodes in the knowledge graph by their names

create_lesson

Create a new lesson from an error and its solution

find_similar_errors

Find similar errors and their solutions in the knowledge graph

update_lesson_success

Update the success rate of a lesson after applying its solution

get_lesson_recommendations

Get relevant lessons based on the current context

README

知识图谱记忆服务器

smithery badge

一个使用本地知识图谱实现持久化记忆的基础实现。这使得 Claude 能够记住用户在聊天中的信息,并通过课程系统从过去的错误中学习。

<a href="https://glama.ai/mcp/servers/eoinvr1bz0"><img width="380" height="200" src="https://glama.ai/mcp/servers/eoinvr1bz0/badge" alt="Knowledge Graph Memory Server MCP server" /></a>

核心概念

实体

实体是知识图谱中的主要节点。每个实体都有:

  • 一个唯一的名称(标识符)
  • 一个实体类型(例如,“人”、“组织”、“事件”)
  • 一个观察列表

示例:

{
  "name": "John_Smith",
  "entityType": "person",
  "observations": ["Speaks fluent Spanish"]
}

关系

关系定义了实体之间的有向连接。它们总是以主动语态存储,并描述实体如何交互或相互关联。

示例:

{
  "from": "John_Smith",
  "to": "Anthropic",
  "relationType": "works_at"
}

观察

观察是关于实体的离散信息片段。它们是:

  • 存储为字符串
  • 附加到特定实体
  • 可以独立添加或删除
  • 应该是原子性的(每个观察一个事实)

示例:

{
  "entityName": "John_Smith",
  "observations": [
    "Speaks fluent Spanish",
    "Graduated in 2019",
    "Prefers morning meetings"
  ]
}

课程

课程是特殊的实体,用于捕获关于错误及其解决方案的知识。每个课程都有:

  • 一个唯一的名称(标识符)
  • 错误模式信息(类型、消息、上下文)
  • 解决方案步骤和验证
  • 成功率跟踪
  • 环境上下文
  • 元数据(严重性、时间戳、频率)

示例:

{
  "name": "NPM_VERSION_MISMATCH_01",
  "entityType": "lesson",
  "observations": [
    "Error occurs when using incompatible package versions",
    "Affects Windows environments specifically",
    "Resolution requires version pinning"
  ],
  "errorPattern": {
    "type": "dependency",
    "message": "Cannot find package @shadcn/ui",
    "context": "package installation"
  },
  "metadata": {
    "severity": "high",
    "environment": {
      "os": "windows",
      "nodeVersion": "18.x"
    },
    "createdAt": "2025-02-13T13:21:58.523Z",
    "updatedAt": "2025-02-13T13:22:21.336Z",
    "frequency": 1,
    "successRate": 1.0
  },
  "verificationSteps": [
    {
      "command": "pnpm add shadcn@latest",
      "expectedOutput": "Successfully installed shadcn",
      "successIndicators": ["added shadcn"]
    }
  ]
}

API

工具

  • create_entities

    • 在知识图谱中创建多个新实体
    • 输入:entities(对象数组)
      • 每个对象包含:
        • name(字符串):实体标识符
        • entityType(字符串):类型分类
        • observations(字符串数组):关联的观察
    • 忽略具有现有名称的实体
  • create_relations

    • 在实体之间创建多个新关系
    • 输入:relations(对象数组)
      • 每个对象包含:
        • from(字符串):源实体名称
        • to(字符串):目标实体名称
        • relationType(字符串):主动语态的关系类型
    • 跳过重复关系
  • add_observations

    • 向现有实体添加新观察
    • 输入:observations(对象数组)
      • 每个对象包含:
        • entityName(字符串):目标实体
        • contents(字符串数组):要添加的新观察
    • 返回每个实体添加的观察
    • 如果实体不存在则失败
  • delete_entities

    • 删除实体及其关系
    • 输入:entityNames(字符串数组)
    • 级联删除关联关系
    • 如果实体不存在则静默操作
  • delete_observations

    • 从实体中删除特定观察
    • 输入:deletions(对象数组)
      • 每个对象包含:
        • entityName(字符串):目标实体
        • observations(字符串数组):要删除的观察
    • 如果观察不存在则静默操作
  • delete_relations

    • 从图中删除特定关系
    • 输入:relations(对象数组)
      • 每个对象包含:
        • from(字符串):源实体名称
        • to(字符串):目标实体名称
        • relationType(字符串):关系类型
    • 如果关系不存在则静默操作
  • read_graph

    • 读取整个知识图谱
    • 无需输入
    • 返回包含所有实体和关系的完整图结构
  • search_nodes

    • 根据查询搜索节点
    • 输入:query(字符串)
    • 搜索范围:
      • 实体名称
      • 实体类型
      • 观察内容
    • 返回匹配的实体及其关系
  • open_nodes

    • 按名称检索特定节点
    • 输入:names(字符串数组)
    • 返回:
      • 请求的实体
      • 请求的实体之间的关系
    • 静默跳过不存在的节点

课程管理工具

  • create_lesson

    • 从错误及其解决方案创建一个新课程
    • 输入:lesson(对象)
      • 包含:
        • name(字符串):唯一标识符
        • entityType(字符串):必须为“lesson”
        • observations(字符串数组):关于错误和解决方案的注释
        • errorPattern(对象):错误详细信息
          • type(字符串):错误类别
          • message(字符串):错误消息
          • context(字符串):错误发生的位置
          • stackTrace(字符串,可选):堆栈跟踪
        • metadata(对象):附加信息
          • severity(“low” | “medium” | “high” | “critical”)
          • environment(对象):系统详细信息
          • frequency(数字):遇到次数
          • successRate(数字):解决方案成功率
        • verificationSteps(数组):解决方案验证
          • 每个步骤包含:
            • command(字符串):要采取的行动
            • expectedOutput(字符串):预期结果
            • successIndicators(字符串数组):成功标记
    • 自动初始化元数据时间戳
    • 验证所有必需字段
  • find_similar_errors

    • 查找相似的错误及其解决方案
    • 输入:errorPattern(对象)
      • 包含:
        • type(字符串):错误类别
        • message(字符串):错误消息
        • context(字符串):错误上下文
    • 返回按成功率排序的匹配课程
    • 使用模糊匹配来查找错误消息
  • update_lesson_success

    • 更新课程的成功跟踪
    • 输入:
      • lessonName(字符串):要更新的课程
      • success(布尔值):解决方案是否有效
    • 更新:
      • 成功率(加权平均)
      • 频率计数器
      • 上次更新时间戳
  • get_lesson_recommendations

    • 获取当前上下文的相关课程
    • 输入:context(字符串)
    • 搜索范围:
      • 错误类型
      • 错误消息
      • 错误上下文
      • 课程观察
    • 返回按以下内容排序的课程:
      • 上下文相关性
      • 成功率
    • 包括完整的解决方案详细信息

文件管理

服务器现在处理两种类型的文件:

  • memory.json:存储基本实体和关系
  • lesson.json:存储具有错误模式的课程实体

如果文件超过 1000 行,则会自动拆分文件以保持性能。

Cursor MCP 客户端设置

要将此记忆服务器与 Cursor MCP 客户端集成,请按照以下步骤操作:

  1. 克隆存储库:
git clone [repository-url]
cd [repository-name]
  1. 安装依赖项:
pnpm install
  1. 构建项目:
pnpm build
  1. 配置服务器:
  • 找到已构建服务器文件的完整路径:/path/to/the/dist/index.js
  • 使用 Node.js 启动服务器:node /path/to/the/dist/index.js
  1. 在 Cursor 中激活:
  • 使用键盘快捷键 Ctrl+Shift+P
  • 键入“reload window”并选择它
  • 等待几秒钟以激活 MCP 服务器
  • 提示时选择 stdio 类型

现在,记忆服务器应该已与您的 Cursor MCP 客户端集成并可以使用。

与 Claude Desktop 一起使用

设置

将其添加到您的 claude_desktop_config.json:

Docker

{
  "mcpServers": {
    "memory": {
      "command": "docker",
      "args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
    }
  }
}

NPX

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}

具有自定义设置的 NPX

可以使用以下环境变量配置服务器:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ],
      "env": {
        "MEMORY_FILE_PATH": "/path/to/custom/memory.json"
      }
    }
  }
}
  • MEMORY_FILE_PATH:记忆存储 JSON 文件的路径(默认值:服务器目录中的 memory.json

系统提示

利用记忆的提示取决于用例。更改提示将有助于模型确定创建的记忆的频率和类型。

这是一个用于聊天个性化的示例提示。您可以在 Claude.ai 项目的“自定义说明”字段中使用此提示。

按照以下步骤进行每次交互:

1. 用户识别:
   - 您应该假设您正在与 default_user 交互
   - 如果您尚未识别 default_user,请主动尝试这样做。

2. 记忆检索:
   - 始终以仅说“Remembering...”开始您的聊天,并从您的知识图谱中检索所有相关信息
   - 始终将您的知识图谱称为您的“记忆”

3. 记忆
   - 在与用户交谈时,请注意属于以下类别的任何新信息:
     a) 基本身份(年龄、性别、位置、职称、教育程度等)
     b) 行为(兴趣、习惯等)
     c) 偏好(沟通方式、首选语言等)
     d) 目标(目标、指标、愿望等)
     e) 关系(个人和职业关系,最多 3 度分离)

4. 记忆更新:
   - 如果在交互过程中收集到任何新信息,请按如下方式更新您的记忆:
     a) 为重复出现的组织、人员和重大事件创建实体
     b) 使用关系将它们连接到当前实体
     b) 将关于它们的事实存储为观察

构建

Docker:

docker build -t mcp/memory -f src/memory/Dockerfile .

许可证

此 MCP 服务器已获得 MIT 许可证的许可。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。有关更多详细信息,请参阅项目存储库中的 LICENSE 文件。

新工具

  • create_lesson

    • 从错误及其解决方案创建一个新课程
    • 输入:lesson(对象)
      • 包含错误模式、解决方案步骤和元数据
      • 自动跟踪创建时间和更新
      • 验证解决方案步骤是否完整
  • find_similar_errors

    • 查找相似的错误及其解决方案
    • 输入:errorPattern(对象)
      • 包含错误类型、消息和上下文
      • 返回按成功率排序的匹配课程
      • 包括相关的解决方案和验证步骤
  • update_lesson_success

    • 更新课程的成功跟踪
    • 输入:
      • lessonName(字符串):要更新的课程
      • success(布尔值):解决方案是否有效
    • 更新成功率和频率指标
  • get_lesson_recommendations

    • 获取当前上下文的相关课程
    • 输入:context(字符串)
    • 返回按相关性和成功率排序的课程
    • 包括完整的解决方案详细信息和验证步骤

非常感谢此存储库的所有者提供的基础代码,我使用课程和文件管理对其进行了增强

非常感谢! https://github.com/modelcontextprotocol/servers jerome3o-anthropic https://github.com/modelcontextprotocol/servers/tree/main/src/memory

推荐服务器

mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
Knowledge Graph Memory Server

Knowledge Graph Memory Server

为 Claude 实现持久性记忆,使用本地知识图谱,允许 AI 记住用户的信息,并可在自定义位置存储,跨对话保持记忆。

精选
本地
mcp-codex-keeper

mcp-codex-keeper

作为开发知识的守护者,为 AI 助手提供精心策划的最新文档和最佳实践访问权限。

精选
Perplexity Deep Research MCP

Perplexity Deep Research MCP

一个服务器,它允许 AI 助手使用 Perplexity 的 sonar-deep-research 模型进行网络搜索,并提供引用支持。

精选
RAT MCP Server (Retrieval Augmented Thinking)

RAT MCP Server (Retrieval Augmented Thinking)

🧠 MCP 服务器,实现了 RAT(检索增强思维)—— 结合了 DeepSeek 的推理能力和 GPT-4/Claude/Mistral 的回复,并在交互之间保持对话上下文。

本地
MCP - Titan Memory Server

MCP - Titan Memory Server

启用神经记忆序列学习,通过记忆增强模型来改进代码理解和生成,具有状态管理、新颖性检测和模型持久化等功能。

本地
Neo4j MCP Clients & Servers

Neo4j MCP Clients & Servers

这使您可以使用 Claude Desktop 或任何 MCP 客户端,通过自然语言来完成 Neo4j 和您的 Aura 账户中的任务。

本地
mcp-reasoner

mcp-reasoner

一个为 Claude Desktop 设计的系统推理 MCP 服务器实现,具备束搜索和思维评估能力。 (Alternatively, a slightly more technical translation:) 一个为 Claude Desktop 设计的系统性推理 MCP 服务器实现,具有束搜索和思想评估功能。

本地
Zanny's Persistent Memory Manager

Zanny's Persistent Memory Manager

一个定制的 MCP 服务器,允许使用自然语言命令和关键词检测来存储、检索和管理基于文本的信息。 (Alternatively, a slightly more formal translation:) 一个定制的 MCP 服务器,它允许通过自然语言指令和关键词检测,实现对文本信息的存储、检索和管理。

本地
MCP Reasoner

MCP Reasoner

一个为 Claude Desktop 设计的系统性推理 MCP 服务器,采用束搜索 (Beam Search) 和蒙特卡洛树搜索 (Monte Carlo Tree Search) 来促进复杂问题解决和决策过程。

本地