LangChain + 模型上下文协议(MCP):AI 智能体 Demo
MCP(Model Context Protocol) 是由 Anthropic 推出的开源协议,旨在为大型语言模型(LLM)提供安全、可解释、可扩展的外部数据与工具集成方案。
1. 背景与动机:MCP 的意义何在?
在基于大语言模型构建应用时,一个核心痛点是 数据与工具的接入困难。模型虽然能力强大,但通常处于“沙盒”状态,无法直接访问外部环境。
为此,RAG
(检索增强生成)、微调、插件等方案陆续诞生。而 MCP
的目标正是统一接口协议,以便标准化集成上下文、工具、服务与数据源。
✅ MCP 的愿景
- 提供标准协议:简化
LLM
与外部系统的通信 - 安全可扩展:支持权限管理、细粒度访问控制
- 模块化生态:建立社区驱动的“
AI
工具市场”
可以将
MCP
看作AI
世界的“软件版USB-C
”。
MCP 架构图
官方资源:
MCP
协议简介:https://modelcontext.org/
GitHub
示例项目:https://github.com/modelcontextprotocol/servers
2. 如何用 LangChain 集成 MCP?
本节将通过实操演示,介绍如何将
LangChain
与MCP
工具集成,打造一个拥有算术能力的AI
智能体。
注意:示例来自https://github.com/langchain-ai/langchain-mcp-adapters
。
准备步骤概览:
步骤 | 内容 |
---|---|
1 | 创建并激活 Python 虚拟环境 |
2 | 安装必要依赖 |
3 | 编写 MCP Server (数学工具) |
4 | 编写客户端接入 LangChain 智能体 |
5 | 分析输出流程 |
3. 环境准备与依赖安装
创建虚拟环境
python3 -m venv MCP_Demosource MCP_Demo/bin/activate
安装依赖:
pip install langchain-mcp-adapters langgraph langchain-openaiexport OPENAI_API_KEY=<your_api_key>
请将文本<your_api_key>
替换为您的OpenAI API
密钥。
4. 编写 MCP Server(数学计算工具)
创建 math_server.py
文件:
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")
运行服务器:
python3 math_server.py
5. 编写客户端(集成 LangGraph 智能体)
创建 client.py
:
from mcp import ClientSession, StdioServerParametersfrom mcp.client.stdio import stdio_clientfrom langchain_mcp_adapters.tools import load_mcp_toolsfrom langgraph.prebuilt import create_react_agentfrom langchain_openai import ChatOpenAIimport asyncio
model = ChatOpenAI(model="gpt-4o")
server_params = StdioServerParameters( command="python", args=["math_server.py"], # 替换为绝对路径)
async def run_agent(): async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() tools = await load_mcp_tools(session) agent = create_react_agent(model, tools) result = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"}) return result
if __name__ == "__main__": print(asyncio.run(run_agent()))
运行客户端:
python3 client.py
6. 消息交互流程解析
完整消息
客户端输出如下:
{ 'messages': [ # 1. 用户原始提问 HumanMessage( content="what's (3 + 5) x 12?", id='87a8b6b6-...', # 消息唯一标识 metadata={...} ),
# 2. AI首次响应(工具调用) AIMessage( content='', tool_calls=[ { 'name': 'add', # 第一个工具调用:加法 'args': {'a':3, 'b':5}, # 参数 'id': 'call_1eyRzR...' # 工具调用ID }, { 'name': 'multiply', # 第二个工具调用:乘法 'args': {'a':8, 'b':12}, 'id': 'call_q82CX...' } ], token_usage={...}, # 本次调用的Token消耗 finish_reason='tool_calls' # 终止原因:触发了工具调用 ),
# 3. 工具执行结果返回 ToolMessage( content='8', # add工具的执行结果 name='add', # 对应工具名称 tool_call_id='call_1eyRzR...' # 关联的工具调用ID ), ToolMessage( content='96', # multiply工具的执行结果 name='multiply', tool_call_id='call_q82CX...' ),
# 4. AI最终响应 AIMessage( content='content=‘The result of (3 + 5) × 12 is 96.', # 最终自然语言答案 finish_reason='stop', # 正常终止 token_usage={ # 总Token消耗 'input_tokens': 143, 'output_tokens': 22, 'total_tokens': 165 } ) ]}
执行流程说明
-
用户输入阶段
-
HumanMessage
记录原始问题:“3加5乘12等于多少?”- 包含元数据:消息
ID
、响应元数据等
-
AI推理阶段
-
- 第一步调用
add
工具计算3+5
- 第二步调用
multiply
工具计算8x12
- 第一步调用
-
AIMessage
显示分步思考过程:finish_reason: tool_calls
表示需要等待工具执行结果
-
工具执行阶段
-
add
工具返回8
(对应3+5)multiply
工具返回96
(对应8x12)
-
ToolMessage
包含工具执行结果:- 每个结果都通过
tool_call_id
关联到对应的工具调用请求
-
最终响应阶段
-
- 新的
AIMessage
生成自然语言答案 - 使用LaTeX格式展示数学表达式:
finish_reason: stop
表示正常结束
- 新的
7. 元数据与性能指标分析
关键字段说明
字段 | 说明 |
---|---|
token_usage | 记录各阶段的令牌消耗情况 |
system_fingerprint | 模型版本指纹(fp_eb9dce56a8) |
tool_call_id | 工具调用的唯一关联标识 |
finish_reason | 终止类型(tool_calls/stop) |
Token 使用情况示例:
阶段 | 输入 令牌 | 输出令牌 | 总计 |
---|---|---|---|
初始请求 | 77 | 51 | 128 |
最终响应 | 143 | 22 | 165 |
总计 | 220 | 73 | 293 |
8. 小结:MCP + LangChain 的价值
- ✅ 标准化接入:无需为每种数据源编写专属适配器
- ✅ 模块化复用:工具作为可组合单元,多智能体可复用
- ✅ 提升智能体能力:突破“模型只能聊天”的边界
- ✅ 安全可控:客户端-服务端通信可附带权限控制
最后的最后
感谢你们的阅读和喜欢,作为一位在一线互联网行业奋斗多年的老兵,我深知在这个瞬息万变的技术领域中,持续学习和进步的重要性。
为了帮助更多热爱技术、渴望成长的朋友,我特别整理了一份涵盖大模型领域的宝贵资料集。
这些资料不仅是我多年积累的心血结晶,也是我在行业一线实战经验的总结。
这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。如果你愿意花时间沉下心来学习,相信它们一定能为你提供实质性的帮助。
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费
】

大模型知识脑图
为了成为更好的 AI大模型 开发者,这里为大家提供了总的路线图。它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
经典书籍阅读
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
面试资料
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费
】
