Graphiti是一个强大的框架,用于构建和查询动态的、具有时间感知能力的知识图谱,特别适用于需要管理不断变化的上下文信息的AI Agents。Graphiti MCP服务器组件使得LLM客户端可以通过Model Context Protocol(MCP)与Graphiti知识图谱进行标准化的交互。

项目简介

Graphiti MCP服务器是一个基于Graphiti知识图谱构建的后端服务。它负责将用户的交互、结构化和非结构化数据整合到一个统一的知识图谱中,并以结构化的方式通过MCP协议将这些信息和操作能力提供给兼容的LLM客户端,作为它们的外部记忆或上下文来源。

主要功能点

  • 知识图谱管理: 核心是托管和维护一个实时的、时态感知的知识图谱。
  • ** эпизоды(Episodes)摄取**: 能够将文本、消息(如聊天记录)或结构化JSON数据作为独立的知识片段(Episode)添加到图谱中,并自动从中提取实体和关系。
  • 实体和关系管理: 自动识别和创建图谱中的实体(节点)和它们之间的关系(边)。
  • 高级搜索和检索: 提供多种搜索方法(如全文搜索、向量相似度搜索)和重排序技术(如RRF、节点距离、Cross-encoder),帮助LLM准确检索所需的实体和事实。
  • 时态查询: 支持根据时间戳查询知识图谱的状态。
  • 图谱维护: 提供工具来删除特定实体关系、 эпизоды或清空整个图谱数据。
  • MCP协议支持: 通过标准的JSON-RPC协议暴露上述功能,支持Stdio、SSE等传输方式与LLM客户端通信。

安装步骤

  1. 安装Python: 确保你的系统安装了 Python 3.10 或更高版本。
  2. 安装Neo4j: Graphiti使用Neo4j作为图数据库后端。请下载并安装 Neo4j Desktop 或 Neo4j Server 5.26 或更高版本。启动数据库并记下连接URI、用户名和密码。
  3. 设置API密钥: Graphiti在提取实体和关系、生成向量嵌入等操作中依赖大型语言模型(LLM)。你需要一个支持的模型提供商的API密钥(例如 OpenAI, Anthropic, Google Gemini)。请设置相应的环境变量,如 'OPENAI_API_KEY', 'ANTHROPIC_API_KEY' 或配置其他LLM。
  4. 安装Graphiti: 安装Graphiti核心库。
    pip install graphiti-core
    如果你计划使用Anthropic、Google Gemini等其他LLM提供商,请安装对应的 extras:
    # 例如,安装Anthropic和Google Gemini支持
    pip install graphiti-core[anthropic,google-genai]
  5. 获取MCP服务器代码: MCP服务器的代码位于Graphiti仓库的 'mcp_server' 目录下。你需要获取这些代码,通常是将整个Graphiti仓库克隆到本地。
    git clone https://github.com/getzep/Graphiti.git
    cd Graphiti
    MCP服务器的可执行文件是 'mcp_server/graphiti_mcp_server.py'。

服务器配置 (为MCP客户端准备)

MCP客户端需要知道如何启动Graphiti MCP服务器进程并与之通信。这通常通过配置服务器的启动命令 ('command') 和参数 ('args') 完成。

  • 服务器名称: 'graphiti' (或LLM客户端配置时使用的任意友好名称)
  • 命令 ('command'): 'python'
  • 参数 ('args'): 这是一个JSON字符串数组,包含传递给 'graphiti_mcp_server.py' 脚本的命令行参数。第一个参数通常是脚本的路径。
    • '["/path/to/your/Graphiti/mcp_server/graphiti_mcp_server.py"]' (将 '/path/to/your/Graphiti' 替换为你实际克隆仓库的路径)
    • 常用可选参数:
      • '"--group-id", "your_group_id"': 指定一个分组ID,用于隔离不同的知识图谱数据。如果未提供,服务器会生成一个随机ID。
      • '"--transport", "stdio"' 或 '"--transport", "sse"': 指定与MCP客户端通信的传输协议(标准输入/输出或Server-Sent Events)。默认是 SSE。
      • '"--model", "model_name"': 指定用于LLM操作的模型名称,会覆盖环境变量设置。
      • '"--temperature", "0.7"': 指定LLM的温度设置,会覆盖环境变量设置。
      • '"--destroy-graph"': 启动服务器时清空Neo4j中所有Graphiti数据。请谨慎使用!
      • '"--use-custom-entities"': 启用对预定义(或自定义定义)实体类型的提取。
  • 示例MCP客户端配置片段 (JSON格式):
    {
      "server name": "my_graphiti_server",
      "command": "python",
      "args": [
        "/home/user/projects/Graphiti/mcp_server/graphiti_mcp_server.py",
        "--group-id", "my_agent_session_123",
        "--transport", "stdio"
        // 根据需要添加其他参数
      ]
    }
  • 环境变量配置: MCP服务器也会读取以下环境变量进行配置(命令行参数优先级高于环境变量):
    • 'NEO4J_URI', 'NEO4J_USER', 'NEO4J_PASSWORD': Neo4j数据库连接信息。
    • 'OPENAI_API_KEY' (或其他LLM提供商的API密钥): LLM服务认证。
    • 'MODEL_NAME': LLM模型名称。
    • 'LLM_TEMPERATURE': LLM温度。
    • 'AZURE_OPENAI_ENDPOINT', 'AZURE_OPENAI_DEPLOYMENT_NAME', etc.: Azure OpenAI 配置。
    • 'ANTHROPIC_API_KEY': Anthropic API 密钥。
    • 'USE_PARALLEL_RUNTIME': 启用Neo4j并行运行时 (布尔)。

基本使用方法

  1. 启动Graphiti MCP服务器: 在支持MCP协议的LLM客户端中配置Graphiti MCP服务器的启动命令和参数,然后启动客户端。客户端将负责启动Graphiti MCP服务器进程并与之建立连接。
  2. 调用MCP工具: 一旦连接建立,LLM客户端可以通过标准JSON-RPC请求调用服务器暴露的MCP工具,例如:
    • 'add_episode': 向知识图谱添加新的信息。
    • 'search_nodes': 搜索图谱中的实体节点。
    • 'search_facts': 搜索图谱中的事实(关系)。
    • 'get_episodes': 获取最近添加的知识片段。
    • 'delete_entity_edge', 'delete_episode', 'clear_graph': 执行维护操作。
  3. 访问MCP资源: 客户端也可以通过MCP协议访问服务器声明的资源,例如获取服务器状态。

具体的工具参数和响应格式遵循MCP规范和Graphiti MCP服务器的实现定义(可以在MCP客户端中检查服务器的能力声明)。

信息

分类

AI与计算