小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
4
最近更新:3个月前

与SQLite集成,提供持久化的知识图谱,以实现跨对话的高效内存管理和关系建模。

优化内存的MCP服务器

该项目用于测试和展示Claude AI的编程能力,以及良好的AI工作流程和提示设计。
这是Python版Memory MCP Server的分支项目(官方版本为Java实现),采用SQLite作为后端数据库。

知识图谱记忆服务器

基于本地知识图谱实现持久化记忆的基础架构,使Claude能够跨对话记住用户信息。

核心概念

实体

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

  • 唯一名称(标识符)
  • 实体类型(如"person"/"organization"/"event")
  • 观察项列表

示例:

json 复制代码
{
  "name": "John_Smith",
  "entityType": "person",
  "observations": ["能说流利的西班牙语"]
}

关系

关系定义实体间的有向连接,始终以主动语态存储,描述实体间的交互方式。

示例:

json 复制代码
{
  "from": "John_Smith",
  "to": "Anthropic",
  "relationType": "works_at"
}

观察项

观察项是关于实体的离散信息单元,具有以下特征:

  • 以字符串形式存储
  • 关联到特定实体
  • 可独立添加或删除
  • 应保持原子性(每条观察项一个事实)

示例:

json 复制代码
{
  "entityName": "John_Smith",
  "observations": [
    "能说流利的西班牙语",
    "2019年毕业",
    "偏好早晨会议"
  ]
}

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(字符串数组)
    • 返回:
      • 请求的实体
      • 请求实体间的关系
    • 自动跳过不存在的节点

Claude桌面版集成指南

环境配置

在claude_desktop_config.json中添加以下配置:

Docker方案

json 复制代码
{
  "mcpServers": {
    "memory": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "mcp/memory"]
    }
  }
}

NPX方案

json 复制代码
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}

系统提示词

记忆功能的提示词需根据使用场景调整,修改提示词可影响模型创建记忆的频率和类型。

以下是聊天个性化场景的示例提示词,可在Claude.ai项目的"Custom Instructions"字段中使用:

复制代码
每次交互遵循以下步骤:

1. 用户识别:
   - 默认与default_user交互
   - 若未识别default_user,应主动尝试确认

2. 记忆检索:
   - 对话开始时固定显示"Remembering..."并检索知识图谱中的相关信息
   - 始终将知识图谱称为你的"memory"

3. 记忆规则:
   - 对话过程中注意收集以下类别的新信息:
     a) 基础身份(年龄、性别、所在地、职位、教育程度等)
     b) 行为特征(兴趣爱好、习惯等)
     c) 个人偏好(沟通风格、语言偏好等)
     d) 目标规划(目标、志向等)
     e) 社交关系(三层以内的个人及职业关系)

4. 记忆更新:
   - 若交互中获得新信息,按以下规则更新:
     a) 为重复出现的组织、人物和重要事件创建实体
     b) 用关系连接当前实体
     c) 将相关事实存储为观察项

构建指南

Docker构建:

sh 复制代码
docker build -t mcp/memory -f src/memory/Dockerfile . 

许可协议

本MCP服务器采用MIT许可证授权,允许自由使用、修改和分发软件,需遵守MIT许可证的条款。详见项目仓库中的LICENSE文件。