mcpField
K
Knowledge Graph Memory Server

Knowledge Graph Memory Server

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

关于 Knowledge Graph Memory Server

Knowledge Graph Memory Server 是 Python MCP 服务,通过本地知识图谱为 Claude 跨对话保存记忆。它提供维护实体、观察信息和关系,以及搜索或读取图数据的工具。

主要功能

  1. 01在本地图谱中保存长期记忆
  2. 02创建实体和有向关系
  3. 03添加或删除观察信息
  4. 04搜索并读取图谱节点
  5. 05读取完整图谱

适用场景

  1. 01在 Claude 多轮对话间保留用户信息
  2. 02搜索已存事实和实体关系
  3. 03更新或删除已保存的记忆

MCP 相关

该 MCP 服务向 MCP 客户端提供创建、编辑、搜索和读取知识图谱的工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"memory-py": {
"command": "uvx",
"args": [
"mcp-memory-py"
],
"env": {
"MEMORY_FILE_PATH": "<MEMORY_FILE_PATH>"
}
}
}
}
启动命令uvx mcp-memory-py
需要配置的环境变量
MEMORY_FILE_PATH

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

安装包
pypimcp-memory-py

工具

还没有获取到工具列表

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

详细介绍

知识图谱记忆服务

使用本地知识图谱实现的基础持久化记忆功能。这使 Claude 能够在不同聊天中记住有关用户的信息。

这是对 原始参考服务(版本 0.6.3)的 Python 移植版本。 我借此机会对代码进行了一些重构,主要借助了 Cline(和 Claude Sonnet 3.5)。

核心概念

实体

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

  • 一个唯一名称(标识符)
  • 一个实体类型(例如,“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:

uvx
{
  "mcpServers": {
    "memory-python":
    {
      "command": "uvx",
      "args": [
        "--refresh",
        "--quiet",
        "mcp-memory-py"
      ],
    "env": {
        "MEMORY_FILE_PATH": "/path/to/custom/memory.json"
      }
    }
}
环境参数
  • MEMORY_FILE_PATH:记忆存储 JSON 文件的路径(默认:服务目录中的 memory.json)
  • DEBUG_LOGGING:生成每日日志文件,记录服务调用的说明。仅用于开发
系统提示词

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

以下是用于聊天个性化的示例提示词。你可以在 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

测试

运行单元测试: uv run pytest

调试

使用 MCP Inspector 进行调试: npx @modelcontextprotocol/inspector uv run --directory src -m mcp_memory_py

许可证

此 MCP 服务采用 MIT 许可证。这意味着你可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。详情请参阅项目仓库中的 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

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

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