Graphiti 是一个用于构建和查询时间感知知识图谱的框架,特别适用于在动态环境中运行的 AI 代理。与传统的检索增强生成(RAG)方法不同,Graphiti 持续整合用户交互、结构化和非结构化的企业数据以及外部信息到一个连贯且可查询的知识图谱中。该框架支持增量数据更新、高效检索和精确的历史查询,无需重新计算整个图谱,使其适合开发交互式、上下文感知的 AI 应用程序。
这是一个针对 Graphiti 的实验性模型上下文协议(MCP)服务器实现。MCP 服务器通过 MCP 协议暴露 Graphiti 的核心功能,允许 AI 助手与 Graphiti 的知识图谱能力进行交互。
Graphiti MCP 服务器提供了全面的知识图谱能力:
/mcp/,以兼容广泛的客户端git clone https://github.com/getzep/graphiti.git
或者
gh repo clone getzep/graphiti
stdio 的客户端cd graphiti && pwd
安装 Graphiti 预备条件。
配置 Claude、Cursor 或其他 MCP 客户端以使用 [Graphiti 和 stdio 传输](#集成到 MCP 客户端)。查看客户端文档以了解如何找到其 MCP 配置文件的位置。
mcp_server 目录cd graphiti/mcp_server
docker compose up
这将同时启动 FalkorDB 和 MCP 服务器在一个容器中。
替代方案:使用单独的容器运行 Neo4j:
docker compose -f docker/docker-compose-neo4j.yml up
http://localhost:8000/mcp/uv 创建虚拟环境并安装依赖项:# 如果还没有安装 uv,请先安装
curl -LsSf https://astral.sh/uv/install.sh | sh
# 在一步中创建虚拟环境并安装依赖项
uv sync
# 可选:安装额外的大语言模型提供商(anthropic, gemini, groq, voyage, sentence-transformers)
uv sync --extra providers
服务器可以通过 config.yaml 文件、环境变量或命令行参数(按优先级顺序)进行配置。
MCP 服务器带有合理的默认设置:
http://localhost:8000/mcp/ 访问)FalkorDB 是一个基于 Redis 的图数据库,它与 MCP 服务器一起捆绑在一个 Docker 容器中。这是默认且推荐的设置。
database:
provider: "falkordb" # 默认
providers:
falkordb:
uri: "redis://localhost:6379"
password: "" # 可选
database: "default_db" # 可选
对于生产用途或需要全功能图数据库的情况,推荐使用 Neo4j:
database:
provider: "neo4j"
providers:
neo4j:
uri: "bolt://localhost:7687"
username: "neo4j"
password: "your_password"
database: "neo4j" # 可选,默认为 "neo4j"
FalkorDB 是另一个基于 Redis 的图数据库选项:
database:
provider: "falkordb"
providers:
falkordb:
uri: "redis://localhost:6379"
password: "" # 可选
database: "default_db" # 可选
服务器支持多个大语言模型提供商(OpenAI、Anthropic、Gemini、Groq)和嵌入器。编辑 config.yaml 来配置:
server:
transport: "http" # 默认。选项:stdio, http
llm:
provider: "openai" # 或 "anthropic", "gemini", "groq", "azure_openai"
model: "gpt-4.1" # 默认模型
database:
provider: "falkordb" # 默认。选项:"falkordb", "neo4j"
要使用 Ollama 与 MCP 服务器,将其配置为与 OpenAI 兼容的端点:
llm:
provider: "openai"
model: "gpt-oss:120b" # 或您首选的 Ollama 模型
api_base: "http://localhost:11434/v1"
api_key: "ollama" # 需要的假密钥
embedder:
provider: "sentence_transformers" # 推荐用于本地设置
model: "all-MiniLM-L6-v2"
确保本地运行 Ollama:ollama serve
Graphiti MCP 服务器包括用于结构化知识提取的内置实体类型。这些实体类型始终启用,并通过 config.yaml 中的 entity_types 部分进行配置:
可用实体类型:
这些实体类型定义在 config.yaml 中,并可通过修改描述来进行定制:
graphiti:
entity_types:
- name: "偏好"
description: "用户偏好、选择、意见或选择"
- name: "需求"
description: "具体需求、功能或特性"
# ... 其他实体类型
MCP 服务器在会话摄入期间自动使用这些实体类型,从对话和文档中提取和结构化信息。
config.yaml 文件支持使用 ${VAR_NAME} 或 ${VAR_NAME:default} 语法进行环境变量扩展。关键变量:
NEO4J_URI:Neo4j 数据库的 URI(默认:bolt://localhost:7687)NEO4J_USER:Neo4j 用户名(默认:neo4j)NEO4J_PASSWORD:Neo4j 密码(默认:demodemo)OPENAI_API_KEY:OpenAI API 密钥(使用 OpenAI 大语言模型/嵌入器时必需)ANTHROPIC_API_KEY:Anthropic API 密钥(用于 Claude 模型)GOOGLE_API_KEY:Google API 密钥(用于 Gemini 模型)GROQ_API_KEY:Groq API 密钥(用于 Groq 模型)AZURE_OPENAI_API_KEY:Azure OpenAI API 密钥AZURE_OPENAI_ENDPOINT:Azure OpenAI 终端 URLAZURE_OPENAI_DEPLOYMENT:Azure Open- AI 部署名称AZURE_OPENAI_EMBEDDINGS_ENDPOINT:可选的 Azure OpenAI 嵌入终端 URLAZURE_OPENAI_EMBEDDINGS_DEPLOYMENT:可选的 Azure OpenAI 嵌入部署名称AZURE_OPENAI_API_VERSION:可选的 Azure OpenAI API 版本USE_AZURE_AD:可选地使用 Azure 管理的身份验证标识SEMAPHORE_LIMIT:会话处理并发。参见 [并发和大语言模型提供商 429 速率限制错误](#并发和大语言模型提供商 429 速率限制错误)您可以在项目目录中的 .env 文件中设置这些变量。
要使用默认的 FalkorDB 设置运行 Graphiti MCP 服务器:
docker compose up
这将启动一个容器,其中包括:
http://localhost:8000/mcp/localhost:6379 上的 FalkorDB 图数据库http://localhost:3000 上的 FalkorDB Web UI使用提供的 Docker Compose 配置是最简单的方法:
# 这将启动 Neo4j 和 MCP 服务器
docker compose -f docker/docker-compose.neo4j.yaml up
如果您已经运行了 Neo4j:
# 设置环境变量
export NEO4J_URI="bolt://localhost:7687"
export NEO4J_USER="neo4j"
export NEO4J_PASSWORD="your_password"
# 使用 Neo4j 运行
uv run graphiti_mcp_server.py --database-provider neo4j
或者使用 Neo4j 配置文件:
uv run graphiti_mcp_server.py --config config/config-docker-neo4j.yaml
# 这将启动 FalkorDB(基于 Redis)和 MCP 服务器
docker compose -f docker/docker-compose.falkordb.yaml up
# 设置环境变量
export FALKORDB_URI="redis://localhost:6379"
export FALKORDB_PASSWORD="" # 如果受密码保护
# 使用 FalkorDB 运行
uv run graphiti_mcp_server.py --database-provider falkordb
或者使用 FalkorDB 配置文件:
uv run graphiti_mcp_server.py --config config/config-docker-falkordb.yaml
--config:YAML 配置文件的路径(默认:config.yaml)--llm-provider:要使用的大型语言模型提供商(openai, anthropic, gemini, groq, azure_openai)--embedder-provider:要使用的嵌入器提供商(openai, azure_openai, gemini, voyage)--database-provider:要使用的数据库提供商(falkordb, neo4j)- 默认:falkordb--model:要与大型语言模型客户端一起使用的模型名称--temperature:大型语言模型的温度设置(0.0-2.0)--transport:选择传输方法(http 或 stdio,默认:http)--group-id:为图设置命名空间(可选)。如果没有提供,则默认为 "main"--destroy-graph:如果设置,将在启动时销毁所有 Graphiti 图Graphiti 的摄入管道设计用于高并发,由 SEMAPHORE_LIMIT 环境变量控制。此设置决定了可以同时处理多少个会话。由于每个会话涉及多次大型语言模型调用(实体提取、去重、总结),实际的并发大型语言模型请求数量将是几倍之多。
默认值:SEMAPHORE_LIMIT=10(适合 OpenAI 第 3 层,中档 Anthropic)
OpenAI:
SEMAPHORE_LIMIT=1-2SEMAPHORE_LIMIT=5-8SEMAPHORE_LIMIT=10-15SEMAPHORE_LIMIT=20-50Anthropic:
SEMAPHORE_LIMIT=5-8SEMAPHORE_LIMIT=15-30Azure OpenAI:
Ollama(本地):
SEMAPHORE_LIMIT=1-5429 速率限制错误在您的 .env 文件中设置:
SEMAPHORE_LIMIT=10 # 根据您的大型语言模型提供商层级调整
Graphiti MCP 服务器可以使用 Docker 部署,选择您喜欢的数据库后端。Dockerfile 使用 uv 进行包管理,确保一致的依赖项安装。
预构建的 Graphiti MCP 容器可在以下位置获得:zepai/knowledge-graph-mcp
在运行 Docker Compose 之前,使用 .env 文件(推荐)配置您的 API 密钥:
在 mcp_server 目录中创建一个 .env 文件:
cd graphiti/mcp_server
cp .env.example .env
编辑 .env 文件以设置您的 API 密钥:
# 至少需要一个大型语言模型提供商的 API 密钥
OPENAI_API_KEY=your_openai_api_key_here
# 其他大型语言模型提供商(可选)
ANTHROPIC_API_KEY=your_anthropic_key
GOOGLE_API_KEY=your_google_key
GROQ_API_KEY=your_groq_key
# 嵌入器提供商(可选)
VOYAGE_API_KEY=your_voyage_key
重要:.env 文件必须位于 mcp_server/ 目录中(docker/ 子目录的父目录)。
所有命令都必须从 mcp_server 目录运行,以确保正确加载 .env 文件:
cd graphiti/mcp_server
单个容器,包含 FalkorDB 和 MCP 服务器 - 最简单的选项:
docker compose up
分离容器,包含 Neo4j 和 MCP 服务器:
docker compose -f docker/docker-compose-neo4j.yml up
默认 Neo4j 凭证:
neo4jdemodemobolt://neo4j:7687http://localhost:7474另一种设置,包含分离的 FalkorDB 和 MCP 服务器容器:
docker compose -f docker/docker-compose-falkordb.yml up
FalkorDB 配置: