检索与查询工具
搜索与查询工具
相关源文件
本章引用的主要源码文件:
.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/api/v1/search/search.pycognee/modules/retrieval/coding_rules_retriever.pycognee/modules/search/methods/get_search_type_retriever_instance.pycognee/modules/search/methods/search.pycognee/modules/search/models/SearchResultPayload.pycognee/modules/search/types/SearchType.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 代理和 MCP 客户端从已处理的知识图谱和记忆层中检索信息。关于数据入库和处理工具,请参阅数据管理工具。关于 MCP 服务器的部署和配置,请参阅MCP 服务器配置。
概述
MCP 服务器通过 cognee-mcp/src/server.py cognee-mcp/src/server.py:73 中定义的 FastMCP 实例,暴露了多个查询和监控工具。
| 工具 | 用途 | 关键参数 |
|---|---|---|
search | 使用多种检索策略查询知识图谱 | search_query、search_type |
cognify_status | 监控后台入库/处理任务 | dataset_name |
get_rules | 检索从交互中生成的编码规则 | 无 |
这两个工具均以 MCP TextContent 对象的形式返回结果,适用于 Claude Desktop、Cursor、Cline 及其他兼容 MCP 的客户端中的 AI 代理消费。
来源:cognee-mcp/src/server.py:73、cognee-mcp/src/server.py:521-545、cognee-mcp/src/server.py:643-658
搜索工具
用途与能力
search 工具提供了一个统一接口,用于使用不同的检索策略查询 Cognee 的知识图谱。它利用 CogneeClient cognee-mcp/src/cognee_client.py:31 直接调用核心的 cognee.search() 函数,或者向正在运行的 Cognee API 发起 HTTP 请求 cognee-mcp/src/cognee_client.py:202-233。
工具签名:
@mcp.tool()
async def search(search_query: str, search_type: str) -> list
参数
| 参数 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
search_query | str | 自然语言查询或搜索字符串 | 是 |
search_type | str | 要使用的检索策略(不区分大小写) | 是 |
search_type 参数通过 normalize_search_type cognee-mcp/src/server.py:526 进行规范化,以匹配 SearchType 枚举 cognee/modules/search/types/SearchType.py。支持的类型包括:
- GRAPH_COMPLETION(默认):使用完整图谱上下文和大语言模型(LLM)推理进行自然语言问答
cognee/api/v1/search/search.py:88-91。 - RAG_COMPLETION:传统的检索增强生成(RAG),使用文档片段而不依赖图谱结构
cognee/api/v1/search/search.py:93-96。 - CODE:代码专用搜索,具备语法和语义理解能力
cognee/api/v1/search/search.py:108-111。 - CHUNKS:与查询语义匹配的原始文本片段
cognee/api/v1/search/search.py:98-101。 - CHUNKS_LEXICAL:基于 Token 的词汇片段搜索(例如 Jaccard 相似度)
cognee/api/v1/search/search.py:123-125。 - SUMMARIES:预生成的内容摘要
cognee/api/v1/search/search.py:103-106。 - CYPHER:使用 Cypher 语法直接查询图数据库
cognee/api/v1/search/search.py:113-116。 - FEELING_LUCKY:智能选择最合适的搜索类型
cognee/api/v1/search/search.py:118-121。
来源:cognee-mcp/src/server.py:521-530、cognee/api/v1/search/search.py:72-126、cognee-mcp/src/cognee_client.py:202-210
搜索工具架构
下图展示了从 MCP 客户端的自然语言输入到 cognee 内部代码实体的桥梁。
自然语言到代码实体映射:搜索工作流
来源:cognee-mcp/src/server.py:521-545、cognee-mcp/src/cognee_client.py:202-233、cognee/modules/search/methods/search.py:37-140、cognee/modules/search/methods/get_search_type_retriever_instance.py:36-40
结果格式化逻辑
搜索工具通过 format_search_results cognee-mcp/src/server.py:541 实现了不同的结果转换,以确保大语言模型(LLM)接收到最相关的上下文格式。
来源:cognee-mcp/src/server.py:530-545、cognee-mcp/src/cognee_client.py:230-233、cognee/modules/storage/utils.py:21
后台任务监控:cognify_status
由于 cognify 工具可能触发长时间运行的后台任务,因此提供了 cognify_status 工具来跟踪进度并处理主请求-响应周期之外发生的错误 cognee-mcp/src/server.py:643。
工具签名:
@mcp.tool()
async def cognify_status(dataset_name: str = "main_dataset") -> str
实现逻辑
- 错误历史检查:它会检查
_task_errors环形缓冲区,查看后台工作线程针对该特定数据集报告的任何异常cognee-mcp/src/server.py:651-652。 - 状态检索:它调用
get_last_added_data(dataset_name)从关系数据库中检索当前处理状态cognee-mcp/src/server.py:654。 - 状态报告:它返回一个格式化字符串,包含当前状态(例如"处理中..."、"已完成")或任务失败时的错误详情
cognee-mcp/src/server.py:656-658。
来源:cognee-mcp/src/server.py:82、cognee-mcp/src/server.py:100-103、cognee-mcp/src/server.py:643-658
get_rules 工具
get_rules 工具检索从先前用户与代理交互中生成并存储在知识图谱中的开发者/编码规则。
工具签名:
@mcp.tool()
async def get_rules() -> list
它利用 get_existing_rules() cognee-mcp/src/server.py:611 获取存储的图谱实体,并将其格式化为代理可用的规则列表。这是 Cognee 的"Memify"系统的一部分,用于长期上下文增强。
来源:cognee-mcp/src/server.py:607-613、cognee-mcp/src/server.py:62-65
数据库查询集成
检索系统通过检索器工厂将自然语言查询桥接到特定的数据库适配器实现。
代码实体空间:数据库检索路径
来源:cognee/modules/search/methods/get_search_type_retriever_instance.py:73-156、cognee/infrastructure/databases/graph/kuzu/adapter.py:43-155、cognee/infrastructure/databases/graph/neo4j_driver/adapter.py:52-130
MCP 通信模式
标准输出重定向
搜索和查询工具都使用了 redirect_stdout(sys.stderr) cognee-mcp/src/server.py:525。这一点至关重要,因为 MCP 使用 stdout 进行 JSON-RPC 协议通信;应用程序日志或打印语句发送到 stdout 会破坏客户端-服务器连接。
响应格式
所有工具都返回一个 types.TextContent 对象列表 cognee-mcp/src/server.py:544-545。这标准化了 MCP 客户端(如 Claude Desktop)的输出格式,确保大语言模型(LLM)能够将检索到的上下文作为纯文本进行处理。
来源:cognee-mcp/src/server.py:17、cognee-mcp/src/server.py:525-545、cognee-mcp/src/server.py:18