LangGraph框架中针对MCP协议的变更-20250510

发布于:2025-05-12 ⋅ 阅读:(131) ⋅ 点赞:(0)

MCP(Model Context Protocol)的出现为AI Agent与外部工具及数据源的集成提供了标准化接口,而LangGraph作为基于LangChain的智能体开发框架,在MCP协议的影响下也进行了适配性调整,主要体现在工具调用、异步交互和多步推理的优化上。以下结合实例详细说明相关变更及关联内容:


一、LangGraph对MCP协议的核心适配

  1. 工具动态加载与MCP集成
    LangGraph新增了对MCP工具的自动加载功能,通过langchain_mcp_adapters库实现与MCP服务器的无缝对接。开发者只需通过load_mcp_tools函数加载MCP会话中的工具列表,即可让Agent动态调用远程或本地工具。例如,在数学计算场景中,Agent可调用MCP服务器提供的addmultiply工具。
    示例代码

    async with ClientSession(read, write) as session:
        tools = await load_mcp_tools(session)  # 动态加载MCP工具
        agent = create_react_agent(model, tools)  # 创建支持MCP工具的Agent
    
  2. 异步会话管理与MCP通信
    MCP协议基于客户端-服务器架构,依赖异步通信(如HTTP/WebSocket)。LangGraph为此优化了异步任务处理机制,通过asyncio支持与MCP服务器的长时会话。例如,客户端通过stdio_client建立连接后,利用异步上下文管理器维护会话状态。

  3. 多步推理与工具链调用
    LangGraph的create_react_agent结合MCP工具,能够自动分解复杂任务为多步操作。例如,在问题“计算(3+5)×12”中,Agent会先调用add工具得到中间结果8,再调用multiply工具完成最终计算。
    执行流程

    • 步骤1:调用add(a=3, b=5) → 返回8。
    • 步骤2:调用multiply(a=8, b=12) → 返回96。

二、LangGraph与MCP结合的典型实例

以下以数学计算场景为例,展示LangGraph如何通过MCP协议调用工具:

  1. MCP服务器端定义工具
    创建math_server.py,声明addmultiply函数为MCP工具:

    from mcp.server.fastmcp import FastMCP
    mcp = FastMCP("Math")
    @mcp.tool()
    def add(a: int, b: int) -> int:
        return a + b
    @mcp.tool()
    def multiply(a: int, b: int) -> int:
        return a * b
    if __name__ == "__main__":
        mcp.run(transport="stdio")
    
  2. LangGraph客户端调用流程
    客户端通过异步任务连接MCP服务器,并运行Agent:

    from mcp.client.stdio import stdio_client
    from langgraph.prebuilt import create_react_agent
    async def run_agent():
        async with stdio_client(server_params) as (read, write):
            async with ClientSession(read, write) as session:
                tools = await load_mcp_tools(session)
                agent = create_react_agent(model, tools)
                response = await agent.ainvoke({"messages": "计算(3+5)×12"})
    
  3. 输出结果示例
    Agent的响应包含分步工具调用和最终结果:

    {
        "messages": [
            {"content": "计算(3+5)×12"},
            {"tool_calls": [{"function": "add", "args": {"a":3, "b":5}}]},
            {"tool_calls": [{"function": "multiply", "args": {"a":8, "b":12}}]},
            {"content": "结果为96"}
        ]
    }
    

三、LangGraph框架的扩展性优化

  1. 支持多种传输协议
    LangGraph的MCP适配器不仅支持stdio本地通信,还可扩展至HTTP/SSE(Server-Sent Events),满足企业级高并发需求。例如,阿里云Hologres通过SSE模式实现与MCP服务器的解耦部署。

  2. 与知识管理组件的结合
    LangGraph的记忆管理模块(如RAG技术)可与MCP工具联动。例如,在故障诊断场景中,Agent通过MCP调用日志查询工具,并结合向量数据库检索历史案例,生成修复方案。


四、总结

MCP协议的出现推动了LangGraph在以下方向的演进:

  • 工具生态扩展:通过标准化接口接入多源工具,减少定制化开发。
  • 异步与实时性:优化异步通信机制,支持高并发场景。
  • 复杂任务分解:结合ReAct算法,实现多工具协同的自动化流程。

未来,随着MCP生态的成熟,LangGraph或进一步整合服务发现、权限管理等企业级功能,成为智能体开发的核心框架。


网站公告

今日签到

点亮在社区的每一天
去签到