cognee-mcp - 运行 cognee 的内存引擎作为模型上下文协议服务器
<p align="center"> <a href="https://www.youtube.com/watch?v=1bezuvLwJmw&t=2s">演示</a> . <a href="https://cognee.ai">了解更多</a> · <a href="https://discord.gg/NQPKmU5CCg">加入 Discord</a> · <a href="https://www.reddit.com/r/AIMemory/">加入 r/AIMemory</a> </p><a href="https://www.producthunt.com/posts/cognee?embed=true&utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-cognee" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=946346&theme=light&period=daily&t=1744472480704" alt="cognee - Memory for AI Agents in 5 lines of code | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
<a href="https://trendshift.io/repositories/13955" target="_blank"><img src="https://trendshift.io/api/badge/repositories/13955" alt="topoteretes/cognee | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
在终端或IDE中为代理构建记忆,并从任何支持MCP的客户端查询。
</div>更多详细信息,请参阅我们的文档此处。
git clone https://github.com/topoteretes/cognee.git
cd cognee/cognee-mcp
pip install uv
uv sync --dev --all-extras --reinstall
source .venv/bin/activate
LLM_API_KEY="YOUR_OPENAI_API_KEY"
python src/server.py
或通过SSE流式传输响应
python src/server.py --transport sse
或使用流式HTTP传输(推荐用于Web部署)
python src/server.py --transport http --host 127.0.0.1 --port 8000 --path /mcp
您可以通过使用我们的模板创建.env文件来进行更高级的配置。要使用不同的LLM提供商/数据库配置,请参阅我们的文档获取更多信息。
如果您希望在容器中运行cognee-mcp,有两种选项:
本地构建
确保您位于/cognee根目录,并且有一个包含仅您的LLM_API_KEY(以及您选择的设置)的新鲜.env文件。
删除任何旧镜像并重建:
docker rmi cognee/cognee-mcp:main || true
docker build --no-cache -f cognee-mcp/Dockerfile -t cognee/cognee-mcp:main .
运行它:
# 对于HTTP传输(推荐用于Web部署)
docker run -e TRANSPORT_MODE=http --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main
# 对于SSE传输
docker run -e TRANSPORT_MODE=sse --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main
# 对于stdio传输(默认)
docker run -e TRANSPORT_MODE=stdio --env-file ./.env --rm -it cognee/cognee-mcp:main
运行时安装可选依赖项:
您可以通过设置EXTRAS环境变量来在运行容器时安装可选依赖项:
# 在运行时安装单一可选依赖项组
docker run \
-e TRANSPORT_MODE=http \
-e EXTRAS=aws \
--env-file ./.env \
-p 8000:8000 \
--rm -it cognee/cognee-mcp:main
# 在运行时安装多个可选依赖项组(逗号分隔)
docker run \
-e TRANSPORT_MODE=sse \
-e EXTRAS=aws,postgres,neo4j \
--env-file ./.env \
-p 8000:8000 \
--rm -it cognee/cognee-mcp:main
可用的可选依赖项组:
aws - 支持S3存储postgres / postgres-binary - 支持PostgreSQL数据库neo4j - 支持Neo4j图数据库neptune - 支持AWS Neptunechromadb - 支持ChromaDB向量存储scraping - 网页抓取能力distributed - Modal分布式执行langchain - LangChain集成llama-index - LlamaIndex集成anthropic - Anthropic模型groq - Groq模型mistral - Mistral模型ollama / huggingface - 支持本地模型docs - 文档处理codegraph - 代码分析monitoring - Sentry & Langfuse监控redis - 支持Redis从Docker Hub拉取(无需构建):
# 使用HTTP传输(推荐用于Web部署)
docker run -e TRANSPORT_MODE=http --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main
# 使用SSE传输
docker run -e TRANSPORT_MODE=sse --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main
# 使用stdio传输(默认)
docker run -e TRANSPORT_MODE=stdio --env-file ./.env --rm -it cognee/cognee-mcp:main
运行时安装可选依赖项:
# 从Docker Hub镜像安装可选依赖项
docker run \
-e TRANSPORT_MODE=http \
-e EXTRAS=aws,postgres \
--env-file ./.env \
-p 8000:8000 \
--rm -it cognee/cognee-mcp:main
Docker使用环境变量,而不是命令行参数:
-e TRANSPORT_MODE=http--transport http(不起作用)直接Python使用使用命令行参数:
python src/server.py --transport http-e TRANSPORT_MODE=http(不起作用)要连接MCP Docker容器到主机上运行的Cognee API服务器:
# 在主机上启动Cognee API服务器
python -m cognee.api.client
# 在API模式下运行MCP容器 - localhost会自动转换!
docker run \
-e TRANSPORT_MODE=sse \
-e API_URL=http://localhost:8000 \
-e API_TOKEN=your_auth_token \
-p 8001:8000 \
--rm -it cognee/cognee-mcp:main
注意: 容器会自动将localhost转换为host.docker.internal(适用于Mac/Windows/Docker Desktop)。您将在日志中看到转换的消息。
# 或显式使用host.docker.internal
docker run \
-e TRANSPORT_MODE=sse \
-e API_URL=http://host.docker.internal:8000 \
-e API_TOKEN=your_auth_token \
-p 8001:8000 \
--rm -it cognee/cognee-mcp:main
# 选项1:使用主机网络(最简单)
docker run \
--network host \
-e TRANSPORT_MODE=sse \
-e API_URL=http://localhost:8000 \
-e API_TOKEN=your_auth_token \
--rm -it cognee/cognee-mcp:main
# 选项2:使用主机IP地址
# 首先,获取您的主机IP:ip addr show docker0
docker run \
-e TRANSPORT_MODE=sse \
-e API_URL=http://172.17.0.1:8000 \
-e API_TOKEN=your_auth_token \
-p 8001:8000 \
--rm -it cognee/cognee-mcp:main
API模式下的环境变量:
API_URL:正在运行的Cognee API服务器的URLAPI_TOKEN:认证令牌(可选,如果API启用了认证则需要)注意: 当在API模式下运行时:
在使用Docker启动您的Cognee MCP服务器后,您需要配置您的MCP客户端以连接到它。
使用SSE传输启动服务器:
docker run -e TRANSPORT_MODE=sse --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main
配置您的MCP客户端:
claude mcp add cognee-sse -t sse http://localhost:8000/sse
验证连接:
claude mcp list
您应该能看到您的服务器已连接:
检查MCP服务器健康状况...
cognee-sse: http://localhost:8000/sse (SSE) - ✓ 已连接
Claude (~/.claude.json)
{
"mcpServers": {
"cognee": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"cognee-sse": {
"url": "http://localhost:8000/sse"
}
}
}
使用HTTP传输启动服务器:
docker run -e TRANSPORT_MODE=http --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main
配置您的MCP客户端:
claude mcp add cognee-http -t http http://localhost:8000/mcp
验证连接:
claude mcp list
您应该能看到您的服务器已连接:
检查MCP服务器健康状况...
cognee-http: http://localhost:8000/mcp (HTTP) - ✓ 已连接
Claude (~/.claude.json)
{
"mcpServers": {
"cognee": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"cognee-http": {
"url": "http://localhost:8000/mcp"
}
}
}
您可以同时配置两种传输方式以进行测试:
{
"mcpServers": {
"cognee-sse": {
"type": "sse",
"url": "http://localhost:8000/sse"
},
"cognee-http": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
注意: 只启用您实际运行的服务器以避免连接错误。
MCP服务器可以运行在两种模式下:
MCP服务器直接导入并使用cognee库。这是默认模式,具有完整的功能支持。
MCP服务器通过HTTP请求连接到已运行的Cognee FastAPI服务器。这在以下情况下非常有用:
在API模式下启动MCP服务器:
# 首先启动您的Cognee FastAPI服务器(默认端口8000)
cd /path/to/cognee
python -m cognee.api.client
# 然后在API模式下启动MCP服务器
cd cognee-mcp
python src/server.py --api-url http://localhost:8000 --api-token YOUR_AUTH_TOKEN
API模式的不同传输方式:
# 使用SSE传输
python src/server.py --transport sse --api-url http://localhost:8000 --api-token YOUR_TOKEN
# 使用HTTP传输
python src/server.py --transport http --api-url http://localhost:8000 --api-token YOUR_TOKEN
API模式与Docker:
# 在Mac/Windows上(使用host.docker.internal访问主机)
docker run \
-e TRANSPORT_MODE=sse \
-e API_URL=http://host.docker.internal:800