QdrantRAG-DyTopo MCP 服务器
- 项目简介
- 该仓库实现了一个 MCP 服务器,核心在于通过 JSON-RPC 与客户端对接,提供检索、工具调用、以及多代理协作编排等能力。服务器端将文档资源、嵌入向量、以及 DyTopo 路由逻辑统一暴露为 MCP 工具,以便 LLM 客户端调用获取上下文信息和执行外部功能。代码中明确包含多个 MCP 工具(如 rag_search、rag_status、rag_reindex、rag_sources、rag_file_info,以及 swarm_start、swarm_status、swarm_result),并通过 stdio 传输与客户端通信。
- 主要功能点
- MCP 工具集成
- rag_search: 在多源文档中执行混合向量检索,返回匹配结果
- rag_status: 诊断当前向量集合状态、文档源信息、以及索引健康情况
- rag_reindex: 触发重新索引/重建向量索引
- rag_sources: 列出已配置的文档源及文件数量
- rag_file_info: 显示指定文档的分块/哈希等信息
- DyTopo 多代理路由
- swarm_start: 启动一个跨域名/域的多代理推理任务
- swarm_status: 查询进行中的任务状态
- swarm_result: 获取完成后的整合结果与拓扑日志
- 异步/并发设计
- 使用异步 IO 与线程池结合,适配 CPU 上的嵌入模型、路由模型和向量检索
- 本地化部署
- 依赖本地 Qdrant、本地 LM Studio/AnythingLLM 服务,以及本地的嵌入模型实现
- MCP 工具集成
- 安装步骤
- 安装 Python3.8 及以上
- 安装依赖(示例,实际请参照仓库的 docs/requirements 列表并在环境中执行)
- 启动所需外部服务:
- Qdrant(6333/6334 端口,对应 r ag_pipelines 舆情)
- LM Studio 与 AnythingLLM 本地实例
- 将仓库中的 src/qdrant_mcp_server.py 作为 MCP 服务器启动入口运行
- 服务器配置(MCP 客户端所需的启动配置)
- MCP 客户端需要知道如何启动服务器以及连接信息。以下 JSON 配置用于描述服务器启动命令与参数,供 MCP 客户端阅读与连接之用(实际连接由客户端与 MCP 服务器的 JSON-RPC 进行,客户端不需要该代码块)。 { "server_name": "qdrant-rag-mcp-server", "command": "python3", "args": ["src/qdrant_mcp_server.py"], "working_directory": "<仓库根目录>", "notes": "启动后服务器通过标准输入输出(stdio)与 MCP 客户端通信,使用 MCP 协议的 JSON-RPC 请求/响应。确保本地的 Qdrant、LM Studio 与 AnythingLLM 服务已启动并可访问。" }
- 基本使用方法
- 启动
- 在仓库根目录执行:python3 src/qdrant_mcp_server.py
- 服务器启动后监听并通过 stdio 与客户端进行 MCP 通信
- 调用 MCP 工具
- 客户端通过 MCP JSON-RPC 发起请求,指定要调用的工具名、参数以及上下文
- 服务器按请求处理并返回 JSON-RPC 响应
- 典型工作流
- 使用 rag_search 获取文档片段
- 使用 rag_status/rag_sources 了解当前索引状态与文档源信息
- 启动 swarm_start 进行 DyTopo 基于 descriptor 的多代理协作
- 通过 swarm_status 与 swarm_result 获取任务状态与最终结果
- 运行时注意
- 本实现高度依赖本地环境的依赖(Qdrant、FlagEmbedding、LM Studio、AnythingLLM、OpenAI 接口等),请确保各组件已就绪并正确配置
- 由于涉及本地 GPU/CPU 资源,部署前建议评估硬件资源与并发配置
- 启动