mcpField
O
optimized-memory-mcp-server

optimized-memory-mcp-server

本地服务
github.com/AgentWong记忆与知识695 周前更新

关于 optimized-memory-mcp-server

optimized-memory-mcp-server 是一个 Python MCP 服务,使用 SQLite 支持的本地知识图谱保存持久记忆,面向需要跨聊天保留和查询信息的 Claude 及其他 MCP 客户端。

主要功能

  1. 01本地持久化知识图谱
  2. 02实体类型与观察记录
  3. 03实体间的有向关系
  4. 04搜索和读取图谱节点
  5. 05创建及删除图谱数据

适用场景

  1. 01跨聊天保留用户信息
  2. 02搜索实体相关观察记录
  3. 03记录人物与组织间的关系

MCP 相关

它向 MCP 客户端提供工具,用于创建、读取、搜索和删除知识图谱中的实体、观察记录及关系。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"optimized-memory": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

optimized-memory-mcp-server

这是一个用于测试和展示 Claude AI 编码能力,以及良好 AI 工作流和提示词设计的项目。 这是一个 Python Memory MCP Server 的分支(我认为官方版本是用 Java 编写的),后端使用 SQLite。

知识图谱记忆服务

这是一个使用本地知识图谱实现持久记忆的基础版本。它能让 Claude 在不同聊天中记住有关用户的信息。

核心概念

实体

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

  • 唯一名称(标识符)
  • 实体类型(例如,“person”“organization”“event”)
  • 一组观察记录

示例:

{
  "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"
  ]
}

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 Desktop 中使用

设置

将以下内容添加到 claude_desktop_config.json:

Docker
{
  "mcpServers": {
    "memory": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "mcp/memory"]
    }
  }
}
NPX
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}
系统提示词

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

以下是一个用于聊天个性化的提示词示例。你可以在 Claude.ai Project 的“Custom Instructions”字段中使用此提示词。

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 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。