一、LangGraphMCP技术概述

1. LangGraph接入外部工具技术实现方法

        说到智能体开发,无论使用何种框架,有一项绕不开的核心技术,那就是MCP(Model Context Protocol)技术。

        在智能体开发过程中,接入外部函数工具是至关重要的一环,而在LangChain&LangGraph技术生态中,我们可以非常便捷的通过@tool装饰符来自定义一个外部函数:

或者也可以借助LangChain丰富的、数以百计的内置工具,三行代码即可在智能体中进行工具调用。

功能类别

工具名称

简要说明

🔎 搜索工具

TavilySearchResults

快速搜索实时网络信息

SerpAPIWrapper

基于 SerpAPI 的搜索结果工具

GoogleSearchAPIWrapper

调用 Google 可编程搜索引擎

🧠 计算工具

PythonREPLTool

执行 Python 表达式并返回结果

LLMMathTool

结合 LLM 和数学推理能力

WolframAlphaQueryRun

基于 Wolfram Alpha 的计算引擎

🗂 数据工具

SQLDatabaseToolkit

构建 SQL 数据库查询工具集

PandasDataframeTool

用于在 Agent 中操作表格数据

🌐 网络/API

RequestsGetTool / RequestsPostTool

执行 HTTP 请求

BrowserTool / PlaywrightBrowserToolkit

自动化网页浏览与抓取

💾 文件处理

ReadFileTool

读取本地文件内容

WriteFileTool

写入文本到指定文件中

📚 检索工具

FAISSRetriever

基于向量的文档检索工具

ChromaRetriever

使用 ChromaDB 的检索器

ContextualCompressionRetriever

上下文压缩检索器,适合长文档

🧠 LLM 工具

ChatOpenAI / OpenAIFunctionsTool

使用 OpenAI 模型作为工具调用

ChatAnthropic

Anthropic Claude 模型封装工具

🔧 自定义工具

@tool 装饰器

任意函数可封装为 Agent 可调用工具

Tool 类继承

自定义更复杂逻辑的工具实现

LangChain工具集:https://python.langchain.com/docs/integrations/tools/

而除此之外,伴随着MCP技术爆火,给了开发者第三种选项,那就是借助MCP技术、遵照MCP协议,来调用其他开发者已经开发好的MCP工具,来快速搭建智能体应用。

2. MCP技术概述

2.1 MCP技术定位与技术价值介绍

        我们可以将MCP技术简单理解为智能体外部工具开发的一种通用规范(范式)。举个例子,以天气查询工具为例,在MCP技术诞生之前,要给大模型添加查询天气的功能,至少需要经历这么两个开发阶段:

  • 阶段一:编写查询天气的外部函数,例如:

Python
def get_weather(loc):
    """
   
查询即时天气函数
    :param loc: 必要参数,字符串类型,用于表示查询天气的具体城市名称,\
    注意,中国的城市需要用对应城市的英文名称代替,例如如果需要查询北京市天气,则loc参数需要输入'Beijing';
    :return:OpenWeather API查询即时天气的结果,具体URL请求地址为:https://api.openweathermap.org/data/2.5/weather\
    返回结果对象类型为解析之后的JSON格式对象,并用字符串形式进行表示,其中包含了全部重要的天气信息
    """
    # Step 1.构建请求
    url = "https://api.openweathermap.org/data/2.5/weather"

    # Step 2.设置查询参数
    params = {
        "q": loc,              
        "appid": os.getenv("OPENWEATHER_API_KEY"),    # 输入API key
        "units": "metric",            # 使用摄氏度而不是华氏度
        "lang":"zh_cn"                # 输出语言为简体中文
    }

    # Step 3.发送GET请求
    response = requests.get(url, params=params)
   
    # Step 4.解析响应
    data = response.json()
    return json.dumps(data)

  • 阶段二:将外部工具进行进一步封装,以适配不同的开发框架。例如
  • 接入OpenAI Agents SDK时:

Python
from agents import function_tool
@function_tool
def get_weather(loc):
    """
   
查询即时天气函数......
    """
    # Step 1.构建请求
    url = "https://api.openweathermap.org/data/2.5/weather"

    # Step 2.设置查询参数
    params = {......
    return ......

  • 接入LangGraph时:

Python
from langchain_core.tools import tool
from pydantic import BaseModel, Field

class WeatherQuery(BaseModel):
    loc: str = Field(description="The location name of the city")

@tool(args_schema = WeatherQuery)
def get_weather(loc):
    """
   
查询即时天气函数......
    """
    # Step 1.构建请求
    url = "https://api.openweathermap.org/data/2.5/weather"

    # Step 2.设置查询参数
    params = {......
    return ......

  • 接入谷歌ADK时

Python
def get_weather(city: str) -> str:
    """
    Retrieves the current weather report for a specified city.

    Args:
        city (str): The name of the city (e.g., "Beijing", "Shanghai").
                   Note: For cities in China, use the city's English name (e.g., "Beijing").

    Returns:
        dict: A dictionary containing the weather information.
              Includes a 'status' key ('success' or 'error').
              If 'success', includes a 'report' key with weather details.
              If 'error', includes an 'error_message' key.
    """
    # Step 1.
构建请求
    url = "https://api.openweathermap.org/data/2.5/weather"

    # Step 2.设置查询参数
    params = {......
    return ......

这就使得实际开发Agent的过程中,外部函数工具的开发会占用大量的开发者的时间精力。

        而与此同时,人们发现,很多外部工具的功能其实是通用的,例如查询时间、查询天气、网络搜索、操作本地文件夹等等等等,如果有一种规范,能够减少重复造轮子的时间,一个人开发完成后全体开发者都能共享,那么整体的研发效率都将得到大幅提高。

        在这一设想下,MCP技术诞生了。MCP的全称是Model Context Protocol,模型上下文协议,由Claude母公司Anthropic于去年11月正式提出。

该技术核心目标,就是创建一种统一的大模型调用外部工具的通信规范,相当于这种标准的通信规范,一项特定功能的外部函数,只需要开发一次,就能被各种不同类型的Agent开发框架所识别。例如同样是查询天气,如果我们遵循MCP技术协议开发一个查询天气的外部函数,那么接下来全体开发者就都能直接用我开发好的这个天气查询工具,带入任何智能体开发框架,快速搭建智能体应用了。

        通过下面这组图能够非常清楚的解释MCP工具在智能体开发过程中实际带来的提效的作用。

2.2 MCP技术架构

        不过呢,要做到这种“车同轨、书同文”的标准化工作,不仅需要制定一套让所有人都信服的标准,而且还需要经过时间的检验,同时还需要有足够多的用户,这个标准才能真正被市场所认同。因此MCP技术也历经了一段时间的沉淀和打磨,自去年11月发布开始,到今年3月技术大爆发,再到第二季度开始越来越多的Agent框架和热门应用宣布支持MCP技术,MCP才算是逐渐成为一项智能体开发的通用协议。

        截止目前,MCP的技术生态可以划分为三层,最底层是协议层,也就是“文字版”的规定、或者说规范,而为了普及这一规范,让更多的人更加快速的完成自己的MCP工具开发,Anthropic进一步的提供了MCP开发工具,借助这些SDK,我们能够非常快速完成MCP工具开发。而既然是一种标准化的协议,其核心价值就在于用的人足够多、同时分享的人也足够多,才能真正减少“重复造轮子”的时间,因此Anthropic官方和很多第三方平台,也在积极的推进MCP技术生态的构建,尤其是MCP工具平台的建设,通过鼓励开发者更多的分享自己开发的MCP工具,只有形成了更大的(分享和引用的)协作规模,MCP的技术才能更有价值。

2.3 MCP SDKMCP技术生态

        而在这些MCP完整的技术架构中,开发者尤其需要关注MCP的SDK(开发工具)和MCP技术生态。所谓MCP的SDK,指的是官方提供的用于开发MCP工具的第三方库,截至目前,MCP SDK已支持Python、TypeScript、Java、Kotlin和C#等编程语言进行客户端和服务器创建。

MCP项目官网:https://github.com/modelcontextprotocol

而借助这些库,仅需几行代码,即可快速构建一个MCP工具。

反之,如果没有这些MCP开发工具,想要开发MCP工具,就必须从MCP技术协议出发,借助其他库来完成开发,其实现难度非常大。

        而如果我们并不需要开发MCP工具,而只想要借助现成的MCP工具快速完成智能体开发,那么就需要重点关注现在的MCP集成平台,也就是集成了各类目前非常流行的MCP工具的平台,借助这些平台,我们能够快速找到想要的MCP服务,然后根据指示说明快速进行接入,甚至伴随着MCP流式HTTP功能的上线,很多平台还提供了这些MCP工具后端运行服务,我们只需要输入指定的后端地址,就能调用运行在云端的MCP工具。

        主流的MCP集成平台如下:

  • MCP官方服务器合集:https://github.com/modelcontextprotocol/servers

  • MCP Github热门导航:https://github.com/punkpeye/awesome-mcp-servers

  • Smithery:https://smithery.ai/

  • MCP导航:https://mcp.so/

  • 阿里云百炼:https://bailian.console.aliyun.com/?tab=mcp

  • 魔搭社区MCP广场:https://www.modelscope.cn/mcp

  • mcp.run:https://www.mcp.run/

3.MCP核心技术概念

        而在正式开始MCP智能体开发之前,我们还需要补充两个MCP技术体系中至关重要的技术概念,分别是MCP客户端与服务器、以及两大类MCP工具运行模式。

3.1 MCP客户端与服务器

        由于MCP是一种围绕大模型外部函数工具创建的统一范式,因此MCP工具从诞生之初就是客户端(client)与服务器(server)分离的架构。服务器与客户端的技术概念可以借助MySQL这个通用的数据库软件进行理解,在MySQL中,服务器指的是数据库实际运行环境,例如公司内部的某个统一用于数据存储的物理机,而客户端,则指的是SQL编写和运行的环境,可以是比如数据分析师用的笔记本。每次要进行查数时,数据分析师就可以在自己的笔记本上运行MySQL WorkBench(一个SQL编程的IDE),然后借助MySQL客户端,给公司的MySQL服务器发送查数的请求。

        类似的,所谓MCP Server(服务器),指的是MCP工具运行的环境,而MCP Client(客户端),则指的是能够调用MCP工具、或者说给MCP工具发送请求并接受结果的环境。二者关系如图所示:

这种服务器和客户端分离的架构的好处,就在于可以更加便捷的进行模块化开发和维护,而此前我们所说的MCP工具,其实就指的是MCP服务器,而那些MCP工具集合,其实就是MCP服务器集合网站。

        同时,基于这种技术划分,当我们在开发一个智能体,并希望这个智能体能够接入MCP工具时,其实从MCP技术角度来说,我们本质上是开发一个MCP的客户端(Client)。例如当我们基于LangGrpah开发一个接入MCP工具的智能体,其实我们就开发了一个基于LangGraph的MCP客户端。而现在也有很多大模型聊天工具允许接入MCP工具,例如Claude Desktop、Cherry Studio等,这些也都是MCP客户端。

3.2 标准MCP工具接入客户端流程

        这里以Cherry Studio为例,为大家展示一个标准的MCP客户端接入MCP服务器的基本流程,从中我们能够看出,填写对应的配置文件,是运行MCP工具的关键。

3.3 MCP离线运行与在线运行模式

        既然是服务器和客户端分离的架构,那么MCP肯定支持两种调用方法,其一是本地运行,也被成为离线运行,指的是MCP服务器和MCP客户端在同一台电脑上进行运行,其二则是在线运行,或者异地部署运行,指的是MCP服务器在远程服务器或者云端运行,然后借助HTTP网络通信来进行响应。

        而这也就对应着MCP工具调用的两种核心模式,分别是stdio(本地)模式调用和SSE&streamable HTTP(在线)模式调用,各调用方法效果对比如下所示:

特性

Stdio

SSE

Streamable HTTP

通信方向

双向(但仅限本地)

单向(服务器到客户端)

双向(适用于复杂交互)

使用场景

本地进程间通信

实时数据推送,浏览器支持

跨服务、分布式系统、大规模并发支持

支持并发连接数

中等

高(适合大规模并发)

适应性

局限于本地环境

支持浏览器,但单向通信

高灵活性,支持流式数据与请求批处理

实现难度

简单,适合本地调试

简单,但浏览器兼容性和长连接限制

复杂,需处理长连接和流管理

适合的业务类型

本地命令行工具,调试环境

实时推送,新闻、股票等实时更新

高并发、分布式系统,实时交互系统

三种传输方式总结如下:

  • Stdio 传输:适合本地进程之间的简单通信,适合命令行工具或调试阶段,但不支持分布式。
  • SSE 传输:适合实时推送和客户端/浏览器的单向通知,但无法满足双向复杂交互需求。
  • Streamable HTTP 传输:最灵活、最强大的选项,适用于大规模并发、高度交互的分布式应用系统,虽然实现较复杂,但能够处理更复杂的场景。

而伴随着5月MCP更新了Streamable HTTP的SDK,目前越来越多的MCP工具都选择采用Streamable HTTP形式进行部署和运行。

3.4 离线MCP工具托管平台

        当然,如果是调用在线MCP服务,开发者只能了解其功能,而如果是离线的MCP服务,则对应的MCP工具是完全开源的,在每次调用之前,开发者都需要将其源码先下载到本地,然后再运行。例如上述演示视频中,我们使用npx命令,其本质就是先将指定的MCP工具下载到本地,然后在有需要的时候对其进行调用。例如高德MCP配置文件如下:

JSON
    "amap-maps": {
      "isActive": true,
      "command": "npx",
      "args": [
        "-y",
        "@amap/amap-maps-mcp-server"
      ],
      "env": {
        "AMAP_MAPS_API_KEY": "YOUR_API_KRY"
      },
      "name": "amap-maps"
    }

代表的含义就是我们需要先使用如下命令:

Bash
npx -y @amap/amap-maps-mcp-server

对这个库@amap/amap-maps-mcp-server进行下载,然后在本地运行,当有必要的时候调用这个库里面的函数执行相关功能。

        而这个@amap/amap-maps-mcp-server库是一个托管在https://www.npmjs.com/上的库,

可以使用npx命令进行下载。搜索库名即可看到这个库的完整代码,https://www.npmjs.com/package/@amap/amap-maps-mcp-server:

        除此此外,一些由Python编写的MCP开源工具,则托管在pypi平台上,https://pypi.org/ ,每次运行的时候我们需要填写uvx命令,其本质就是将工具源码从pypi平台上下载到本地再来进行运行。

3.5 MCP在线托管服务

        伴随着MCP快速调用的请求不断增加,也有很多平台提供了在线托管服务模式,例如魔搭社区的MCP广场中,就有很多是运行在魔搭社区服务器上的MCP工具,开发者可以直接使用SSE或者流式HTTP方式请求调用在线的MCP工具,从而快速完成开发工作。

5. LangGraph技术概述

5.1 LangChainLangGraph

        说到现阶段目前最流行、最通用的Agent开发框架,毫无疑问,肯定是LangChain。LangChain作为2022年就已经开源的元老级开发框架,历经数年的发展,其功能和生态都已非常完善,并且拥有数量众多的开发者。在我们团队统计的今年第一季度大模型岗位JD中,有90%以上的Agent开发岗位要求掌握LangChain,可以说LangChain就是目前最通用、最流行的Agent开发框架没有之一。不过,由于LangChain诞生时间较早,在2022年末,GPT-3.5刚诞生之时,开发者对大模型的想象主要是希望用其搭建一个又一个工作流,而这也成为LangChain的核心技术目标,LangChain中“Chain”就是指链、也就是搭建工作流的意思。

        但是,大模型基座模型能力在飞速进化,例如目前最新一代的大模型,不仅拥有非常强悍的外部工具识别和调用能力,还原生就支持多工具并联和串联调用,而开发者对于大模型应用开发的需求也在快速变化,单纯的构建这种线性的工作流,可拓展性并不强。当前开发者更偏好的是“用AI开发AI”的思路,也就是我们不用定死工作流,而可以让大模型自主判断每一步该怎么做,然后实时创建一些链路,并根据运行情况随时调整。这也就是目前Agent智能体开发的核心思路。

        LangGraph和LangChain同宗同源,底层架构完全相同、接口完全相通。从开发者角度来说,LangGraph也是使用LangChain底层API来接入各类大模型、LangGraph也完全兼容LangChain内置的一系列工具。换而言之,LangGraph的核心功能都是依托LangChain来完成。但是和LangChain的链式工作流哲学完全不同的是,LangGraph的基础哲学是构建图结构的工作流,并引入“状态”这一核心概念来描绘任务执行情况,从而拓展了LangChain LCEL链式语法的功能灵活程度。

        不过需要注意的是,LangGraph是基于LangChain进行的构建,无论图结构多复杂,单独每个任务执行链路仍然是现行的,其背后仍然是靠着LangChainChain来实现的。因此我们可以这么来描述LangChain和LangGraph之间的关系,LangGraphLangChain工作流的高级编排工具,其中“高级”之处就是LangGraph能按照图结构来编排工作流。

5.2 LangGraph三层API架构

        尽管图结构看起来比链式结构灵活很多,但在实际开发过程中,要创建一个图结构却绝非易事。大家可以试想一下,要在代码环境中描述清楚一个图,至少需要清晰的说明图中有哪些节点,不同节点之间是什么关系(边如何连接),同时还需要设置各节点功能,然后才能测试上线,这个流程其实是非常复杂的,哪怕是简单的一个图也需要用很多代码才能描述清楚:

不过这对于LangChain来说并不难解决。LangChain生态各框架的核心思路都是“既要有底层API来定义基础功能,同时也要有高层API来加快开发效率”,就好比LangChain中既有LCEL语法、同时也有Agent API一样,LangGraph也提供了基于图结构基础语法的高层API。LangGraph的高层API主要分为两层,其一是Agent API,用于将大模型、提示词模板、外部工具等关键元素快速封装为图中的一些节点,而更高一层的封装,则是进一步创建一些预构建的Agent、也就是预构建好的图,开发者只需要带入设置好要带入的工具和模型,三行代码就能借助这些预构建好的图,创建一个完整的Agent:

依托LangChain完善的生态、拥有丰富稳定的API架构、以及便捷上手等特性,使得LangGraph成为目前超越LangChain的新一代Agent开发框架。

5.3 LangGraph开发生态

  • 丰富的模型接口
  •         为了让各类模型接入更加统一和稳定,LangChain不惜为不同的模型单独开发一个库,例如要接入Claude模型,我们就需要提前安装langchain-anthropic,而如果要接入DeepSeek模型,则需要安装langchain-deepseek。这么做虽然过程麻烦,但却能很好的保障开发过程的稳定性。

  • 各类模型接入列表:https://python.langchain.com/docs/integrations/chat/
    此外需要注意的是,LangGraph也需要使用和LangChain一样的模型接入流程。
  • LangGraph运行监控框架:LangSmith
  •         LangSmith 是一款用于构建、调试、可视化和评估 LLM 工作流的全生命周期开发平台。它聚焦的不是模型训练,而是我们在构建 AI 应用(尤其是多工具 Agent、LangChain/Graph)时的「可视化调试」、「性能评估」与「运维监控」。核心功能如下:

功能类别

描述

场景

🧪 调试追踪(Trace Debugging)

可视化展示每个 LLM 调用、工具调用、Prompt、输入输出

Agent 调试、Graph 调用链分析

📊 评估(Evaluation)

支持自动评估多个输入样本的回答质量,可自定义评分维度

批量测试 LLM 表现、A/B 对比

🧵 会话记录(Sessions / Runs)

每次 chain 或 agent 的运行都会被记录为一个 Run,可溯源

Agent 问题诊断、用户问题分析

🔧 Prompt 管理器(Prompt Registry)

保存、版本控制、调用历史 prompt

多版本 prompt 迭代测试

📈 流量监控(Telemetry)

实时查看运行次数、错误率、响应时间等

在生产环境中监控 Agent 质量

📁 Dataset 管理

管理自定义测试集样本,支持自动化评估

微调前评估、数据对比实验

📜 LangGraph 可视化

对 LangGraph 中每个节点运行情况进行实时可视化展示

Graph 执行追踪

  • LangSmith官网地址:https://docs.smith.langchain.com/
  • LangGraph图结构可视化与调试框架:LangGraph Studio
  •         LangGraph Studio 是一个用于可视化构建、测试、分享和部署智能体流程图的图形化 IDE + 运行平台。核心功能如下:

功能模块

说明

应用场景

🧩 Graph 编辑器

以拖拽方式创建节点(工具、模型、Router)并连接

零代码构建 LangGraph

🔍 节点配置器

每个节点可配置 LLM、工具、Router 逻辑、Memory

灵活定制 Agent 控制流

▶️ 即时测试

输入 prompt 可在浏览器中运行整个图

实时测试执行结果

💾 云端保存 / 分享

将构建的 Graph 保存为公共 URL / 私人项目

团队协作,Demo 分享

📎 Tool 插件管理

可连接自定义工具(MCP)、HTTP API、Python 工具

插件式扩展 Agent 功能

🔁 Router 分支节点

创建条件分支,支持 if/else 路由

决策型智能体

📦 上传文档 / 多模态

可以上传文件(如 PDF)并嵌入进图中处理流程

RAG 结构、OCR、图文问答等

🧠 Prompt 输入/预览

编辑 prompt 并观察其运行效果

Prompt 工程调试

📤 一键部署

将 Graph 部署为可被 Agent Chat UI 使用的 Assistant

快速集成到前端

  • LangGraph服务部署工具:LangGraph Cli
  •         LangGraph CLI 是用于本地启动、调试、测试和托管 LangGraph 智能体图的开发者命令行工具。核心功能如下:

功能类别

命令示例

说明

✅ 启动 Graph 服务

langgraph dev

启动 Graph 的开发服务器,供前端(如 Agent Chat UI)调用

🧪 测试 Graph 输入

langgraph run graph:graph --input '{"input": "你好"}'

本地 CLI 输入测试,输出结果

🧭 管理项目结构

langgraph init

初始化一个标准 Graph 项目目录结构

📦 部署 Graph(未来)

langgraph deploy(预留)

发布 graph 至 LangGraph 云端(已对接 Studio)

🧱 显示 Assistant 列表

langgraph list

显示当前 graph 中有哪些 assistant(即 entrypoint)

🔄 重载运行时

自动热重载

修改 graph.py 时,dev 模式自动重启生效

  • LangGraph Cli官网地址:https://www.langgraph.dev/ (需要代理环境)
  • LangGraph内置工具库与MCP调用组件
  •         除了有上述非常多实用的开发工具外,LangGraph还全面兼容LangChain的内置工具集。LangChain自诞生之初就为开发者提供了非常多种类各异的、封装好的实用工具,历经几年发展时间,目前LangChain已经拥有了数以百计的内置实用工具,包括网络搜索工具、浏览器自动化工具、Python代码解释器、SQL代码解释器等。而作为LangChain同系框架,LangGraph也可以无缝调用LangChain各项开发工具,从而大幅提高开发效率。

  • 此外,LangChain是最早支持MCP的开发框架之一,借助langchain-mcp-adapters,LangChain和LangGraph便可快速接入各类MCP工具。

  • 并且LangGraph也同样支持谷歌的A2A(跨Agents通信协议)。
  • LangChain工具集:https://python.langchain.com/docs/integrations/tools/

更多推荐