Knowledge Graph Memory MCP Server 使用说明

项目简介

Knowledge Graph Memory MCP Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务,它使用知识图谱来管理实体、关系和观察信息,为大型语言模型(LLM)客户端提供结构化的上下文记忆能力。该服务器旨在帮助LLM应用记住关键信息,并在对话过程中利用这些信息,从而提升LLM的对话质量和应用性能。

主要功能点

  • 知识图谱存储与管理:支持创建、读取、更新和删除知识图谱中的实体和关系,使用 JSONL 文件作为持久化存储。
  • 数据验证:提供严格的数据验证规则,确保知识图谱的数据一致性和准确性,例如实体名称格式、实体类型、关系类型等。
  • 实体和关系操作:提供丰富的工具 (Tools) 用于操作知识图谱,包括:
    • 'get_entity': 根据名称获取实体信息。
    • 'get_graph': 获取完整的知识图谱数据。
    • 'create_entities': 批量创建多个实体。
    • 'add_observation': 为实体添加新的观察信息。
    • 'create_relation': 在实体之间创建关系。
    • 'search_memory': 根据自然语言查询搜索知识图谱。
    • 'delete_entities': 批量删除多个实体及其相关关系。
    • 'delete_relation': 删除实体之间的关系。
    • 'flush_memory': 将内存中的更改持久化到存储。
  • 自然语言搜索:支持基于关键词的自然语言搜索,可以根据实体名称、类型或观察信息进行模糊或精确匹配。
  • Prompt 模板:提供 Prompt 模板 (Prompts) 用于生成与LLM交互的提示语,例如创建实体的提示、搜索记忆的提示和创建关系的提示。
  • 错误处理:定义了明确的错误类型和响应模型,方便客户端进行错误处理。

安装步骤

  1. 安装服务器:在支持 MCP 协议的客户端(如 Claude Desktop)中,使用 'mcp install' 命令安装该服务器。
    mcp install main.py -v MEMORY_FILE_PATH=/path/to/memory.jsonl
    • '-v MEMORY_FILE_PATH=/path/to/memory.jsonl':这是一个可选参数,用于指定知识图谱数据存储的 JSONL 文件路径。如果不指定,默认会使用 '~/.claude/memory.jsonl' 文件。您可以根据需要修改 '/path/to/memory.jsonl' 为您希望存储知识图谱数据的文件路径。

服务器配置 (MCP 客户端配置)

要将 Knowledge Graph Memory MCP Server 集成到 MCP 客户端,您需要配置服务器的启动命令和参数。以下是 MCP 客户端所需的服务器配置信息(JSON 格式):

{
  "server_name": "Memory",
  "command": "main.py",
  "args": [
    // "-v", "MEMORY_FILE_PATH=/path/to/memory.jsonl"
    // 可选参数:指定知识图谱数据存储的 JSONL 文件路径。
    // 如果需要指定文件路径,取消注释上面一行,并将 "/path/to/memory.jsonl" 替换为您希望使用的路径。
  ]
}

配置参数说明:

  • 'server_name': 服务器名称,设置为 "Memory"。
  • 'command': 启动服务器的命令,这里设置为 'main.py',假设 'main.py' 文件位于 MCP 客户端可以执行的路径中。
  • 'args': 启动参数列表,目前配置为空列表。如果需要指定 'MEMORY_FILE_PATH',请取消注释 'args' 数组中的行,并修改为您需要的路径。

注意:

  • MCP 客户端需要能够找到并执行 'main.py' 文件。通常情况下,'main.py' 文件会和 'mcp install' 命令安装到一起,客户端会自动处理执行路径问题。
  • 'args' 参数是可选的。如果您不需要自定义知识图谱数据存储路径,可以保持 'args' 为空列表。

基本使用方法

安装并配置服务器后,您可以使用 MCP 客户端通过 'session.call_tool' 方法调用服务器提供的工具 (Tools) 来管理知识图谱。

例如:

  1. 创建实体:

    entities = [
        Entity(
            name="python-project",
            entityType="project",
            observations=["Started development on 2024-01-29"]
        )
    ]
    result = await session.call_tool("create_entities", {
        "entities": entities
    })
  2. 添加观察信息:

    result = await session.call_tool("add_observation", {
        "entity": "python-project",
        "observation": "Completed initial prototype"
    })
  3. 搜索记忆:

    result = await session.call_tool("search_memory", {
        "query": "python project"
    })
    if result.success:
        print(result.data)

更多工具的使用方法请参考仓库 README.md 文件中的 "Usage" 部分提供的示例代码。

信息

分类

数据库与文件