Skip to content

Daily Study

更新: 8/12/2025 字数: 0 字 时长: 0 分钟

Daily Plan

#todo

  • [ ]

langgraph-mcp

链接:https://github.com/esxr/langgraph-mcp

1. Router 的作用

总体描述

Router(路由器)在这个项目中是核心组件之一,负责将用户请求智能地分发到最合适的 MCP(Model Context Protocol)服务或 Agent。它的主要功能是“根据用户输入内容,选出最适合处理该内容的服务/Agent,并把请求路由到那里”。

技术流程

  • 构建 Router:在 build_router_graph.py 中实现。它会从每个 MCP Server 收集工具、资源、提示(prompts)等信息,然后构建一个向量索引(vector index),存储每个服务的能力描述。
  • 路由决策
    1. 用户输入后,Assistant 首先通过路由器查询当前有哪些 MCP Server 以及每个 Server 能做什么(如有哪些工具、资源、提示)。
    2. Router 会根据输入内容、上下文,利用检索(Retriever)和 LLM(大模型)结合向量索引进行匹配,查找最相关的 MCP Server 或工具。
    3. 如果没有合适的 Server,会返回“没有相关 Server”或请求澄清。
  • 代码核心
    • build_router 异步方法收集所有 Server 的 RoutingDescription,然后存入检索器(retriever)。
    • 路由的实现细节见 assistant_graph.py 和 assistant_graph_with_summarization.py 的 routegenerate_routing_query 等函数。

关键点

  • Router 不是简单的 if-else 分发,而是“检索+大模型+能力索引”自动化决策,支持多 Agent 动态扩展。
  • 支持模糊匹配和澄清询问(如用户问题不明确时)。

2. select-agent(Agent选择)的作用

总体描述

Agent选择是 Router 决策流程的一个子过程,即“在确定了最相关的 MCP Server 后,还要决定用哪个 Agent(或工具)去解决具体问题”。在代码中通常是“路由到 MCP Server 后,再选择要用的 tool(工具)”的逻辑。

技术流程

  • Assistant 先通过 Router 选定要调用的 MCP Server。
  • 进入 MCP Server 后,通过大模型分析用户输入,进一步选择 Server 中具体的工具(Tool)或资源来完成任务。
  • 相关节点(如 route_toolsrefine_tool_callmcp_tool_call)在 assistant_graph.py 和 assistant_graph_with_summarization.py 中有体现:
    • route_tools 判断当前要不要调用工具,还是直接结束或重新路由。
    • refine_tool_call 对工具调用参数做进一步补全和修正(比如补全参数或澄清)。
    • mcp_tool_call 实际执行工具调用,将结果返回。

关键点

  • Agent选择不是静态,而是基于“检索到的能力描述+用户请求+上下文”实时决定。
  • 支持链式补充参数、澄清需求、动态切换工具。
  • 所有 MCP Server 的工具都被抽象为统一接口,方便扩展和动态选择。

总结对比

组件作用关键技术/流程
Router选出最合适的 MCP Server/Agent,智能分发用户请求向量索引+检索+大模型决策
select-agent(工具选择)在目标Server/Agent中选定具体工具并补全参数LLM+工具描述+动态参数补全

项目中的设计亮点

  1. 统一抽象:所有 MCP Server、工具都用统一接口和描述,路由和Agent选择都可以自动化扩展。
  2. 高可扩展性:新增 Server 或工具只需补充描述,不用改核心流程。
  3. 智能化:Router 和 Agent选择都用检索+大模型,支持复杂场景和模糊问题。

菜就多练

本站访客数 人次 本站总访问量