返回市场
带有教训的记忆-mcp服务器

带有教训的记忆-mcp服务器

作者:T1nker-122051 星标更新:2025-02-27

项目介绍

技术文档摘要

知识图谱内存服务器

smithery 徽章

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

<a href="https://glama.ai/mcp/servers/eoinvr1bz0"><img width="380" height="200" src="https://gips3.baidu.com/it/u=32484050,939047788&fm=3081&app=3081&f=PNG?w=760&h=400" alt="知识图谱内存服务器 MCP 服务器" /></a>

核心概念

实体

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

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

示例:

{
  "name": "John_Smith",
  "entityType": "person",
  "observations": ["说流利的西班牙语"]
}

关系

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

示例:

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

观察

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

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

示例:

{
  "entityName": "John_Smith",
  "observations": [
    "说流利的西班牙语",
    "于2019年毕业",
    "喜欢早晨会议"
  ]
}

教训

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

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

示例:

{
  "name": "NPM_VERSION_MISMATCH_01",
  "entityType": "lesson",
  "observations": [
    "当使用不兼容的包版本时会发生错误",
    "特别影响Windows环境",
    "解决需要版本锁定"
  ],
  "errorPattern": {
    "type": "dependency",
    "message": "无法找到包 @shadcn/ui",
    "context": "包安装"
  },
  "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": "成功安装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(“低”|“中”|“高”|“关键”)
          • 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. 记忆检索:
   - 总是在开始聊天时仅说“回忆中...”并从您的知识图谱中检索所有相关信息
   - 总是将您的知识图谱称为您的“记忆”

3. 记忆
   - 在与用户交谈时,注意任何新的信息,这些信息可以归类为:
     a) 基本身份(年龄、性别、位置、职位、教育水平等)
     b) 行为(兴趣、习惯等)
     c) 偏好(沟通风格、首选语言等)
     d) 目标(目标、目标、抱负等)
     e) 关系(个人和职业关系,最多三度分离)

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

构建

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