LangChain接入MCP完整实现流程
课程说明:
- 体验课内容节选自《2025大模型Agent智能体开发实战》(夏季班) 完整版付费课程
体验课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《2025大模型Agent智能体开发实战》(夏季班)
《2025大模型Agent智能体开发实战》(夏季班) 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!
部分项目成果演示
from IPython.display import Video
- MateGen项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/MG%E6%BC%94%E7%A4%BA%E8%A7%86%E9%A2%91.mp4", width=800, height=400)
- 智能客服项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D%E6%A1%88%E4%BE%8B%E8%A7%86%E9%A2%91.mp4", width=800, height=400)
- Dify项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/2f1b47f42c65fd59e8d3a83e6cb9f13b_raw.mp4", width=800, height=400)
- LangChain&LangGraph搭建Multi-Agnet
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/%E5%8F%AF%E8%A7%86%E5%8C%96%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90Multi-Agent%E6%95%88%E6%9E%9C%E6%BC%94%E7%A4%BA%E6%95%88%E6%9E%9C.mp4", width=800, height=400)
此外,若是对大模型底层原理感兴趣,也欢迎报名由我和菜菜老师共同主讲的《2025大模型原理与实战课程》(夏季班)
两门大模型课程夏季班目前上新特惠+618年中钜惠双惠叠加,合购还有更多优惠哦~详细信息扫码添加助教,回复“大模型”,即可领取课程大纲&查看课程详情👇
LangChain快速入门与Agent开发实战
Part 7.LangChain接入MCP技术实现流程
MCP,全称是Model Context Protocol,模型上下文协议,由Claude母公司Anthropic于去年11月正式提出。
- Anthropic MCP发布通告:https://www.anthropic.com/news/model-context-protocol
- MCP GitHub主页:https://github.com/modelcontextprotocol
MCP的核心作用,是统一了Agent开发过程中,大模型调用外部工具的技术实现流程,从而大幅提高Agent开发效率。在MCP诞生之前,不同的外部工具各有不同的调用方法,要连接这些外部工具开发Agent,就必须“每一把锁单独配一把钥匙”,开发工作非常繁琐:
而MCP的诞生,则统一了这些外部工具的调用流程,使得无论什么样的工具,都可以借助MCP技术按照统一的一个流程快速接入到大模型中,从而大幅加快Agent开发效率。这就好比现在很多设备都可以使用type-c和电脑连接类似。
从技术实现角度来看,我们可以将MCP看成是Function calling的一种封装,通过server-client架构和一整套开发工具,来规范化Function calling开发流程。
此前我开设过很多MCP相关公开课,在学习本节内容前,建议先简单了解MCP完整技术体系,可以选择以下公开课进行参考:
- 《7分钟讲清楚MCP是什么?》:https://www.bilibili.com/video/BV1uXQzYaEpJ/?
- 《MCP技术开发入门实战!》:https://www.bilibili.com/video/BV1NLXCYTEbj/
- 《MCP企业级智能体开发实战!》:https://www.bilibili.com/video/BV1n1ZuYjEzf/
- 《主流客户端接入MCP实战》:https://www.bilibili.com/video/BV1dCo7YdEgK/
- 《从零到一开发&部署专属MCP工具》:https://www.bilibili.com/video/BV1VHL6zsE5F/
- 《流式HTTP MCP服务器开发流程》:https://www.bilibili.com/video/BV1P7VSzwEXL/
MCP技术参考资料详见大模型技术社区。
一、MCP基础实现流程
langchain-mcp-adapters 项目主要为LangChain和LangGraph提供MCP的接入和兼容接口,其工作流程主要如下图所示:

实际上load_mcp_tools() 返回的是标准的 LangChain 工具,所以是完全可以直接在LangChain环境中进行使用的。同时,完全支持stdio、Http SSE和Streamable HTTP三种不同的通讯协议。
接下来,我们先尝试手动实现一遍MCP实践流程,然后再考虑将已经部署好的server带入中,作为tools进行调用。
一个极简的天气查询MCP调用流程如下:
- 借助uv创建MCP运行环境
方法 1:使用 pip 安装(适用于已安装 pip 的系统)
FENCE0
方法 2:使用 curl 直接安装
如果你的系统没有 pip,可以直接运行:
FENCE1
这会自动下载 uv 并安装到 /usr/local/bin。
- 创建 MCP 客户端项目
FENCE0
- 创建MCP客户端虚拟环境
FENCE0
然后即可通过add方法在虚拟环境中安装相关的库。
FENCE0
- 编写用于天气查询的server服务器代码:
这里我们需要在服务器上创建一个server.py,并写入如下代码:
FENCE0
- 创建write_server.py
为了更好的测试多MCP工具调用流程,这里我们继续创建一个write_server.py服务器:
FENCE0
- 天气查询客户端client创建流程
然后创建一个可以和server进行通信的客户端,需要注意的是,该客户端需要包含大模型调用的基础信息。我们需要编写一个client.py脚本,这个脚本内容非常复杂,完整代码如下:
FENCE0
- 创建.env文件
接下来继续创建一个.env文件,来保存大模型调用的API-KEY
并写入如下内容:
FENCE0
- 创建servers_config.json文件
接下来继续创建servers_config.json文件,用于保存MCP工具基本信息:
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["weather_server.py"],
"transport": "stdio"
},
"write": {
"command": "python",
"args": ["write_server.py"],
"transport": "stdio"
``` }
}
}
此时完整项目结构如下:
<img src="https://ml2022.oss-cn-hangzhou.aliyuncs.com/img/202506172025805.png" alt="image-20250617202549758" style="zoom: 33%;" />
- 运行MCP客户端+服务器
  最后在命令行中执行如下命令,即可开启对话:
FENCE0
<img src="https://ml2022.oss-cn-hangzhou.aliyuncs.com/img/202506171855700.png" alt="image-20250617185517285" style="zoom:33%;" />
至此,即完成了一次简单的MCP执行流程。
## 3.4 MCP+LangChain基础调用流程
  `LangChain`调用`MCP`是可以将`MCP`的工具直接转换为`LangChain`的工具,然后通过预定义的`MCP_Client`实现与外部`MCP`的读写操作,换而言之就是我们需要改写原先的client,将原先的Function calling调用逻辑修改为LangChain调用逻辑:
<img src="https://ml2022.oss-cn-hangzhou.aliyuncs.com/img/202506172028187.png" alt="image-20250617202831129" style="zoom:33%;" />
FENCE0
  `LangChain`接入`MCP`的核心原理为: `weather_server.py` → 启动为子进程 → `stdio` 通信 → `MCP` 协议 → 转换为 `LangChain` 工具 → `LangChain Agent` 执行读写,核心转换过程为::
1. `@mcp.tool()` → 标准 `LangChain Tool`
2. `stdio_client()` → 自动处理 `read/write` 流,其中`read` 表示从 `MCP` 服务器读取响应的流,`write` 表示向 `MCP` 服务器发送请求的流,对于 `stdio weather_server.py`,它们就是子进程的 `stdout` 和 `stdin`
3. `load_mcp_tools()` → 一键转换所有工具
实际对话过程如下所示:
<img src="https://ml2022.oss-cn-hangzhou.aliyuncs.com/img/202506171915621.png" alt="image-20250617191543679" style="zoom:33%;" />
  完整的代码已经上传至百度网盘中的`langchain_rag.py`文件中,大家可以扫描下方二维码免费领取
<img src="https://ml2022.oss-cn-hangzhou.aliyuncs.com/img/202506172030599.png" alt="image-20250617203037548" style="zoom:33%;" />
<img src="https://ml2022.oss-cn-hangzhou.aliyuncs.com/img/202506102031014.png" alt="6d9391e440ee8df1466cef1bce40705" style="zoom:50%;" />