首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
memories-with-lessons-mcp-server2025-05-210分享
github
通过持久记忆系统增强用户互动,该系统可以记住跨聊天的信息,并通过利用本地知识图谱和课程管理来从过去的错误中学习。
By T1nker-1220
2025-05-210
github
详情内容

知识图谱记忆服务器

smithery 徽章

这是一个使用本地知识图谱实现的持久化内存的基本示例。它使 Claude 能够在聊天过程中记住用户的信息,并通过一个教训系统从过去的错误中学习。

知识图谱记忆服务器 MCP 服务器

核心概念

实体

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

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

示例:

{
  "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 桌面版

设置

将以下内容添加到您的 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 项目 的“自定义指令”字段中使用此提示。

Follow these steps for each interaction:

1. User Identification:
   - You should assume that you are interacting with default_user
   - If you have not identified default_user, proactively try to do so.

2. Memory Retrieval:
   - Always begin your chat by saying only "Remembering..." and retrieve all relevant information from your knowledge graph
   - Always refer to your knowledge graph as your "memory"

3. Memory
   - While conversing with the user, be attentive to any new information that falls into these categories:
     a) Basic Identity (age, gender, location, job title, education level, etc.)
     b) Behaviors (interests, habits, etc.)
     c) Preferences (communication style, preferred language, etc.)
     d) Goals (goals, targets, aspirations, etc.)
     e) Relationships (personal and professional relationships up to 3 degrees of separation)

4. Memory Update:
   - If any new information was gathered during the interaction, update your memory as follows:
     a) Create entities for recurring organizations, people, and significant events
     b) Connect them to the current entities using relations
     b) Store facts about them as observations

构建

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

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档