MCP(Model Context Protocol)正成为AI领域的热门协议。
MCP的核心价值在于构建了AI模型与外部工具、数据源之间的标准化桥梁。这一协议正推动着行业革新,众多平台如高德地图、支付宝、GitHub等纷纷推出各自的MCP服务接口。
许多用户通过客户端工具(如Cursor、Cherry、Cline)来体验MCP能力。然而,作为一名开发者,我更倾向于通过编程直接掌控MCP服务的接入与调用,实现更深度的集成和定制化。本文将分享如何利用Langchain框架,以编程方式高效接入MCP服务,并构建一个实用的智能应用。
案例目标:构建智能房屋选址助手
我们将开发一个应用,帮助用户根据通勤地点、预算、家庭情况(如是否有小孩、学校需求)等因素,智能推荐最适合的居住区域。
技术栈:
Python
Langchain
(核心框架)langchain_mcp_adapters
(Langchain的MCP适配包)langgraph
(用于构建多步推理的Agent)
Langchain提供的langchain_mcp_adapters
包是关键,它能将MCP服务无缝封装成Langchain可用的工具(Tool),极大地简化了集成过程。
一、理解MCP:AI的“万能接口”
MCP(Model Context Protocol) 是一个开源协议,旨在标准化AI模型与外部工具、数据源和服务之间的连接方式。你可以将其理解为AI领域的 “USB-C端口” —— 它提供了一个统一、通用的接口,使得各种AI模型能够轻松地“即插即用”不同的外部能力。
MCP解决了什么痛点?
- 突破信息茧房: 让模型不再局限于训练数据或简单对话,能够访问实时信息(如地图、天气)、查询数据库、调用API。
- 执行复杂任务: 模型可以组合调用工具完成如订票、导航、点外卖等涉及多步骤操作的实际任务。
- 标准化接入: 统一了不同工具和服务对模型的暴露方式,开发者无需为每个服务编写特定的适配代码。
MCP的工作原理
MCP遵循客户端-服务器(Client-Server) 架构:
- MCP服务器 (Provider): 如高德地图、支付宝等,它们将自己的功能(如路线规划、支付)通过MCP协议暴露出来。
- MCP客户端 (Consumer): 集成在AI应用(或框架如Langchain)中,负责发现可用的MCP服务器,理解其提供的工具,并按照协议调用这些工具。
- 模型 (Brain): 接收用户请求,理解意图,决定需要调用哪个MCP工具(通过客户端),处理工具返回的结果,并生成最终回复给用户。
例如,高德地图的MCP服务开放了强大的地理空间能力,AI模型可以直接调用它来查询地点、计算通勤时间、规划路线,为我们的房屋选址助手提供关键数据支撑。
想深入了解MCP协议细节?请参考其官方介绍。
二、为什么选择Langchain?
Langchain 是一个专为构建由语言模型驱动的应用程序而设计的强大框架。它在接入和管理外部工具方面具有显著优势:
- 强大的工具抽象: Langchain将外部功能(API、数据库、计算器,当然也包括MCP服务)统一抽象为工具(Tool)。模型可以通过简单的接口描述来理解和调用它们。
- Agent智能体机制: Langchain的核心概念之一是Agent。Agent封装了语言模型和一系列工具。它能够根据用户输入,自动推理需要调用哪些工具、以什么参数调用、如何组合工具结果并生成最终回答。这大大简化了复杂任务流的构建。
- 生态丰富: Langchain拥有庞大的社区和丰富的集成库。
langchain_mcp_adapters
正是官方提供的、专门用于简化MCP服务接入的适配器包。 - 灵活性与可扩展性: Langchain支持多种模型提供商(OpenAI, Anthropic, DeepSeek等)和任务编排方式(如使用
langgraph
构建复杂工作流)。
简而言之: langchain_mcp_adapters
+ Langchain Agent = 快速、优雅地将任意MCP服务集成到你的AI应用中。 我们无需从零实现MCP客户端逻辑和复杂的调用决策,Langchain框架已经为我们铺好了路。
三、实战:用Langchain + MCP构建房屋选址助手
让我们一步步实现这个助手。核心思路是利用Langchain Agent协调语言模型(DeepSeek)和MCP工具(高德地图)来完成选址任务。
1. 安装依赖
1 | pip install langchain langchain_mcp_adapters langchain_openai langgraph |
langchain
: 核心框架langchain_mcp_adapters
: MCP服务接入适配器 (关键!)langchain_openai
: 提供与OpenAI API兼容的模型接口(用于调用DeepSeek)langgraph
: 用于构建更强大、支持多步骤推理和状态管理的Agent(比基础Agent更灵活)
2. 初始化语言模型(DeepSeek)
1 | from langchain_openai import ChatOpenAI |
3. 初始化MCP客户端并获取工具
1 | from langchain_mcp_adapters.client import MultiServerMCPClient |
transport: "sse"
: 指定使用Server-Sent Events协议进行通信,这是MCP常见的一种实时交互方式。
高德地图MCP参考请参考其官方介绍。
4. 构建智能体(Agent)
1 | from langgraph.prebuilt import create_react_agent # 从langgraph导入创建Agent的函数 |
create_react_agent
: 这个函数(来自langgraph.prebuilt
)创建了一个基于ReAct推理模式的Agent。ReAct让Agent能够交替进行推理(Reasoning)和行动(Action - 调用工具),非常适合需要多步工具调用的复杂任务。
5. 管理对话状态与历史 (ChatSession
类)
为了让助手能进行多轮对话并记住上下文,我们需要一个会话管理类。
1 | class ChatSession: |
6. 实现交互主循环 (命令行版)
1 | import asyncio |
成果:一个功能完整的智能助手
通过以上步骤,你已经成功构建了一个基于Langchain框架、集成高德地图MCP服务的智能房屋选址助手!这个助手能够:
- 理解复杂需求: 通过DeepSeek模型解析用户关于通勤、预算、家庭的描述。
- 调用外部能力: 利用
langchain_mcp_adapters
自动将高德地图的MCP服务(如地点搜索、路线规划)转化为Langchain工具。 - 智能决策与执行: Langchain ReAct Agent 负责核心推理,自动判断何时、如何调用地图工具获取关键信息(如距离、时间、周边设施)。
- 多轮对话交互:
ChatSession
类维护对话历史,确保上下文连贯,提供自然的交互体验。 - 生成专业建议: 模型综合用户需求和工具返回的数据,生成个性化的居住地点分析和推荐理由。
这只是一个起点! 你可以轻松扩展此应用:
- 接入更多MCP服务:如接入查询周边生活服务价格的MCP服务,接入查询工作机会分布的MCP服务等。
- 增强Agent能力:使用
langgraph
构建更复杂的、带分支和循环的工作流。 - 添加可视化:在地图上展示推荐区域或路线。
- 开发Web界面:将命令行应用升级为Web应用或聊天机器人。
总结:Langchain + MCP 的强大组合
本文演示了如何利用 langchain_mcp_adapters
包,将新兴的 MCP 协议服务 无缝集成到 Langchain 框架 中。这种组合极大地简化了为AI模型赋予“行动力”的过程:
- MCP 提供标准化接口: 让各种外部服务(地图、支付、数据等)能够被AI模型统一、规范地调用。
langchain_mcp_adapters
负责桥接: 将MCP服务快速转化为Langchain Agent可以直接使用的工具(Tool),省去繁琐的协议解析和封装工作。- Langchain Agent 是智能中枢: 它协调语言模型的推理能力和MCP工具的执行能力,根据用户目标自动规划、执行工具调用,并生成最终结果。
通过构建“房屋选址助手”这个实例,我们看到了这种组合在解决实际问题上的高效与便捷。MCP协议正在连接起更丰富的AI能力生态,而Langchain结合langchain_mcp_adapters
无疑是开发者接入这个生态、快速构建强大AI应用的利器。希望这篇指南能助你开启MCP开发之旅!
如有任何疑问或想法,欢迎邮件交流:[email protected]