MCP 服务端配置(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/topoteretes/cognee/11.3-mcp-server-configuration
翻译时间:2026-05-27T08:45:27.688Z
翻译模型:deepseek-chat
原文字符数:13621
项目:Cognee (cognee)
--- 好的,作为一名资深技术文档翻译专家,我将严格遵循您的要求,对这份 DeepWiki 技术文档进行全文翻译和润色。
---
MCP 服务器配置
相关源文件
生成此维基页面所使用的上下文文件:
.github/workflows/dockerhub-mcp.ymlDockerfilecognee-mcp/Dockerfilecognee-mcp/README.mdcognee-mcp/entrypoint.shcognee-mcp/pyproject.tomlcognee-mcp/src/__init__.pycognee-mcp/src/client.pycognee-mcp/src/cognee_client.pycognee-mcp/src/server.pycognee-mcp/uv.lockcognee/alembic/versions/7c5d4e2f8a91_add_parent_user_id_to_users.pycognee/modules/users/authentication/default/default_transport.pycognee/modules/users/authentication/get_api_auth_backend.pycognee/modules/users/authentication/get_client_auth_backend.pycognee/tests/unit/test_add_parent_user_id_migration.pydocker-compose.ymlentrypoint.sh
本文档记录了 Cognee 的模型上下文协议(MCP)服务器的配置选项。该服务器使 AI 助手(如 Claude、Cursor、VS Code)能够与 Cognee 的知识图谱系统进行交互。MCP 服务器可以在多种传输模式和连接模式下运行,其配置可通过环境变量、命令行参数或客户端配置文件进行管理。
关于 MCP 工具及其用法的信息,请参阅 MCP 工具参考。关于搜索和查询功能的详细信息,请参阅 搜索与查询工具。
---
传输模式
MCP 服务器支持三种与客户端通信的传输协议。传输模式决定了 MCP 客户端和服务器之间如何交换消息。
传输模式架构
graph TB
subgraph "MCP 客户端"
["CLAUDE_CLIENT"]["Claude CLI/桌面版"]
["CURSOR_IDE"]["Cursor IDE"]
["VSCODE_IDE"]["VS Code + Cline"]
end
subgraph "传输层"
["STDIO_TRANSPORT"]["stdio 传输<br/>(默认)<br/>标准输入/输出管道"]
["SSE_TRANSPORT"]["SSE 传输<br/>服务器推送事件<br/>http://主机:端口/sse"]
["HTTP_TRANSPORT"]["HTTP 传输<br/>可流式 HTTP<br/>http://主机:端口/mcp"]
end
subgraph "MCP 服务器进程"
["FAST_MCP_INSTANCE"]["cognee-mcp/src/server.py<br/>FastMCP 实例"]
["ROUTES"]["自定义路由:<br/>/health<br/>/sse<br/>/mcp"]
["CORS_MIDDLEWARE"]["CORS 中间件"]
end
["STDIO_TRANSPORT"] --> ["FAST_MCP_INSTANCE"]
["SSE_TRANSPORT"] --> ["CORS_MIDDLEWARE"]
["HTTP_TRANSPORT"] --> ["CORS_MIDDLEWARE"]
["CORS_MIDDLEWARE"] --> ["ROUTES"]
["ROUTES"] --> ["FAST_MCP_INSTANCE"]
["CLAUDE_CLIENT"] -.stdio.-> ["STDIO_TRANSPORT"]
["CLAUDE_CLIENT"] -.sse.-> ["SSE_TRANSPORT"]
["CURSOR_IDE"] -.http.-> ["HTTP_TRANSPORT"]
["VSCODE_IDE"] -.http.-> ["HTTP_TRANSPORT"]
来源:cognee-mcp/src/server.py:168-196, cognee-mcp/README.md:40-41
stdio 传输(默认)
基于标准输入/输出管道的通信方式。这是用于本地进程的经典 MCP 传输模式。
用法:
# 直接使用 Python
python src/server.py --transport stdio
# 使用 Docker
docker run -e TRANSPORT_MODE=stdio cognee/cognee-mcp:main
特点:
- 同步请求/响应。
- 无需网络端口。
- 最适合本地、单客户端场景。
- Claude CLI 在管道模式下默认使用此方式。
实现方式: 服务器创建一个 FastMCP 实例 cognee-mcp/src/server.py:73,该实例通过 main 函数中的 mcp.run() 处理 stdio 通信 cognee-mcp/src/server.py:821。
来源:cognee-mcp/src/server.py:73, cognee-mcp/src/server.py:821, cognee-mcp/entrypoint.sh:45-46, cognee-mcp/README.md:82-85
SSE 传输(服务器推送事件)
使用基于 HTTP 的服务器推送事件(SSE)实现的实时流式传输。
用法:
# 直接使用 Python
python src/server.py --transport sse --host 0.0.0.0 --port 8000
# 使用 Docker
docker run -e TRANSPORT_MODE=sse -p 8000:8000 cognee/cognee-mcp:main
特点:
- 从服务器到客户端的单向流式传输。
- 需要网络端口(默认:8000)。
- 包含用于 Web 访问的
CORSMiddleware。 - 推荐用于 Claude 桌面版。
实现方式: run_sse_with_cors() cognee-mcp/src/server.py:166-185 使用 CORSMiddleware 包装 mcp.sse_app(),其中 CORS 来源由 _get_cors_origins() cognee-mcp/src/server.py:160-163 解析。
来源:cognee-mcp/src/server.py:160-185, cognee-mcp/README.md:86-89, docker-compose.yml:60
HTTP 传输(可流式 HTTP)
用于请求/响应模式的双向 HTTP 传输。
用法:
# 直接使用 Python
python src/server.py --transport http --host 0.0.0.0 --port 8000 --path /mcp
# 使用 Docker
docker run -e TRANSPORT_MODE=http -p 8000:8000 cognee/cognee-mcp:main
特点:
- 完整的双向 HTTP 通信。
- 推荐用于 Web 部署。
- 可配置自定义路径(默认:/mcp)。
- 包含
CORSMiddleware。
实现方式: run_http_with_cors() cognee-mcp/src/server.py:187-206 使用 CORSMiddleware 包装 mcp.streamable_http_app()。
来源:cognee-mcp/src/server.py:187-206, cognee-mcp/README.md:90-93
---
连接模式
MCP 服务器可以在两种不同的模式下运行,具体取决于它是直接使用 Cognee 库,还是连接到独立的 API 服务器。
连接模式架构
graph TB
subgraph "MCP 服务器进程"
["SERVER_MAIN_FUNC"]["cognee-mcp/src/server.py:main()"]
["COGNEE_CLIENT_CLASS"]["cognee_client.py:CogneeClient"]
["API_MODE_CHECK"]{"设置了 api_url?"}
end
subgraph "直接模式"
["IMPORT_COGNEE_LIB"]["import cognee"]
["COGNEE_ADD_CALL"]["cognee.add()"]
["COGNEE_COGNIFY_CALL"]["cognee.cognify()"]
["COGNEE_SEARCH_CALL"]["cognee.search()"]
end
subgraph "API 模式"
["HTTPX_ASYNC_CLIENT"]["httpx.AsyncClient"]
["API_V1_ENDPOINTS"]["/api/v1/add<br/>/api/v1/cognify<br/>/api/v1/search"]
["FASTAPI_SERVER"]["Cognee FastAPI 服务器"]
end
subgraph "数据库"
["VECTOR_DB_ENGINE"]["VectorDBInterface"]
["GRAPH_DB_ENGINE"]["GraphDBInterface"]
["SQL_ADAPTER"]["SQLAlchemyAdapter"]
end
["SERVER_MAIN_FUNC"] --> ["API_MODE_CHECK"]
["API_MODE_CHECK"] -->|否| ["IMPORT_COGNEE_LIB"]
["API_MODE_CHECK"] -->|是| ["HTTPX_ASYNC_CLIENT"]
["IMPORT_COGNEE_LIB"] --> ["COGNEE_CLIENT_CLASS"]
["COGNEE_CLIENT_CLASS"] --> ["COGNEE_ADD_CALL"]
["COGNEE_CLIENT_CLASS"] --> ["COGNEE_COGNIFY_CALL"]
["COGNEE_CLIENT_CLASS"] --> ["COGNEE_SEARCH_CALL"]
["HTTPX_ASYNC_CLIENT"] --> ["COGNEE_CLIENT_CLASS"]
["COGNEE_CLIENT_CLASS"] --> ["API_V1_ENDPOINTS"]
["API_V1_ENDPOINTS"] --> ["FASTAPI_SERVER"]
["COGNEE_ADD_CALL"] --> ["VECTOR_DB_ENGINE"]
["COGNEE_ADD_CALL"] --> ["GRAPH_DB_ENGINE"]
["COGNEE_ADD_CALL"] --> ["SQL_ADAPTER"]
["FASTAPI_SERVER"] --> ["VECTOR_DB_ENGINE"]
["FASTAPI_SERVER"] --> ["GRAPH_DB_ENGINE"]
["FASTAPI_SERVER"] --> ["SQL_ADAPTER"]
来源:cognee-mcp/src/server.py:77, cognee-mcp/src/cognee_client.py:31-68, cognee-mcp/entrypoint.sh:62-89
直接模式
在直接模式下,MCP 服务器在同一进程中直接导入并使用 Cognee 库。如果未提供 API URL,则此为默认行为。
配置:
- 不要设置
API_URL环境变量。 CogneeClient会导入本地的cognee包cognee-mcp/src/cognee_client.py:68。
实现方式: 当初始化时未提供 api_url,CogneeClient cognee-mcp/src/cognee_client.py:31-68 会将 self.use_api 设置为 False。后续的调用,如 add() cognee-mcp/src/cognee_client.py:147,会使用 await self.cognee.add()。
来源:cognee-mcp/src/cognee_client.py:44-68, cognee-mcp/src/cognee_client.py:147, cognee-mcp/entrypoint.sh:88
API 模式
在 API 模式下,MCP 服务器充当代理,将请求转发到独立的 Cognee FastAPI 服务器(可以是本地、自托管或 Cognee 云服务)。
配置:
# 环境变量
API_URL=http://localhost:8000
API_TOKEN=your_auth_token # 可选
实现方式: 当提供了 api_url 时,CogneeClient cognee-mcp/src/cognee_client.py:62 会初始化一个 httpx.AsyncClient。API 调用通过 _get_headers() cognee-mcp/src/cognee_client.py:70-85 包含认证请求头,该方法支持 Bearer 令牌以及云服务特定的 X-Api-Key/X-Tenant-Id 请求头。
Docker 中 localhost 的处理: entrypoint.sh 脚本会自动将 API_URL 中的 localhost 或 127.0.0.1 转换为 host.docker.internal,以确保 Docker 环境能够连接到宿主机 cognee-mcp/entrypoint.sh:67-81。
来源:cognee-mcp/src/cognee_client.py:31-85, cognee-mcp/entrypoint.sh:62-83
---
环境变量参考
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
TRANSPORT_MODE | 字符串 | stdio | 传输协议:stdio、sse 或 http cognee-mcp/entrypoint.sh:45 |
API_URL | 字符串 | 无 | Cognee API 服务器 URL(启用 API 模式)cognee-mcp/entrypoint.sh:63 |
API_TOKEN | 字符串 | 无 | API 模式的认证令牌 cognee-mcp/entrypoint.sh:84 |
MCP_DISABLE_DNS_REBINDING_PROTECTION | 布尔值 | false | 禁用 Host/Origin 请求头校验 cognee-mcp/src/server.py:119 |
MCP_ALLOWED_HOSTS | 字符串 | 无 | 逗号分隔的 Host 请求头模式 cognee-mcp/src/server.py:128 |
MCP_CORS_ALLOW_ORIGINS | 字符串 | http://localhost:3000 | CORS 允许的来源 cognee-mcp/src/server.py:162 |
EXTRAS | 字符串 | 无 | 逗号分隔的可选依赖项,在运行时安装 cognee-mcp/entrypoint.sh:7 |
DB_PROVIDER | 字符串 | sqlite | 直接模式下的数据库提供者 docker-compose.yml:62 |
运行时依赖安装
EXTRAS 环境变量允许在容器启动时动态安装可选的 Cognee 功能(例如 postgres、neo4j 或 aws)cognee-mcp/entrypoint.sh:7-40。
实现方式: 入口点脚本会检测当前的 cognee 版本 cognee-mcp/entrypoint.sh:11,然后针对请求的额外依赖项运行 uv pip install cognee-mcp/entrypoint.sh:33。
来源:cognee-mcp/entrypoint.sh:7-40, cognee-mcp/README.md:120-148
---
传输安全配置
MCP 服务器通过 TransportSecuritySettings 实现了 DNS 重新绑定保护和主机校验,以防止恶意的跨域请求 cognee-mcp/src/server.py:106-153。
DNS 重新绑定保护实现
graph LR
["ALLOWED_HOSTS_ENV"]("MCP_ALLOWED_HOSTS")
["DISABLE_REBIND_ENV"]("MCP_DISABLE_DNS_REBINDING_PROTECTION")
["CONFIG_SECURITY_FUNC"]("server.py: _configure_transport_security()")
["TRANSPORT_SEC_SETTINGS"]("TransportSecuritySettings")
["MCP_GLOBAL_SETTINGS"]("mcp.settings")
["ALLOWED_HOSTS_ENV"] --> ["CONFIG_SECURITY_FUNC"]
["DISABLE_REBIND_ENV"] --> ["CONFIG_SECURITY_FUNC"]
["CONFIG_SECURITY_FUNC"] --> ["TRANSPORT_SEC_SETTINGS"]
["TRANSPORT_SEC_SETTINGS"] --> ["MCP_GLOBAL_SETTINGS"]
来源:cognee-mcp/src/server.py:106-153
实现方式: _configure_transport_security cognee-mcp/src/server.py:106 会填充 mcp.settings.transport_security。如果主机不是回环地址,它会根据环境变量显式设置 allowed_hosts 和 allowed_origins cognee-mcp/src/server.py:141-145。
来源:cognee-mcp/src/server.py:106-153
---
命令行参数
当直接运行 MCP 服务器时,通过 argparse cognee-mcp/src/server.py:775-801 提供配置。
| 参数 | 简写 | 默认值 | 描述 |
|---|---|---|---|
--transport | -t | stdio | stdio、sse 或 http |
--host | 无 | 127.0.0.1 | sse/http 的绑定地址 |
--port | -p | 8000 | sse/http 的端口 |
--api-url | 无 | 无 | API 模式的 URL |
--api-token | 无 | 无 | API 模式的令牌 |
--no-migration | 无 | False | 跳过数据库迁移 cognee-mcp/src/server.py:799 |
来源:cognee-mcp/src/server.py:775-801
---
Docker 配置
docker-compose.yml 中的 cognee-mcp 服务提供了一个标准的部署配置:
cognee-mcp:
container_name: cognee-mcp
profiles:
- mcp
environment:
- TRANSPORT_MODE=sse
- DB_PROVIDER=${DB_PROVIDER:-sqlite}
- MCP_LOG_LEVEL=INFO
ports:
- "8000:8000"
来源:docker-compose.yml:41-81
MCP 服务器的 Dockerfile 使用多阶段构建:首先使用 Node 构建 UI 包 cognee-mcp/Dockerfile:4-11,然后使用 uv 安装 Python 依赖 cognee-mcp/Dockerfile:13-55,最后生成一个精简的运行时镜像 cognee-mcp/Dockerfile:57-94。
来源:cognee-mcp/Dockerfile:1-94