AI大模型开发实战:(六)在 LangGraph 中使用 MCP 协议
MCP 协议的意义在于为不同的 API 创建了一个通用标准,就像 USB-C 让不同设备能够通过相同的接口连接一样。
什么是 MCP 协议
MCP(Model Context Protocol,模型上下文协议)是一种专为大语言模型设计的开源通信协议,使用 MCP 可以标准化模型与外部数据源、工具或服务之间的交互。也就是说通过 MCP 协议,可以使模型具备调用外部工具的能力,比如获取数据、执行外部操作等。
MCP 协议与 API 调用的区别
到这里,可能不少同学会有疑问,MCP 协议听起来和 API 调用差不多,就算不使用 MCP 协议,也可以通过 API 调用来实现模型与外部数据源、工具或服务之间的交互。MCP 协议的意义在于为不同的 API 创建了一个通用标准,就像 USB-C 让不同设备能够通过相同的接口连接一样。

与 API 调用相比,MCP 协议具有一些特性:
- 上下文感知与会话状态管理:MCP 协议允许模型在多个请求之间保持上下文感知和会话状态管理。这意味着模型可以记住之前的对话历史、用户偏好和其他相关信息,从而提供更个性化和上下文相关的响应。API 调用通常是无状态的,每个请求都是独立的,模型无法记住之前的对话历史或上下文信息。例如,用户问“我的快递到哪了?”,MCP 会自动关联历史订单信息并返回物流状态,无需用户重复提供订单号。而 API 调用需要手动提供订单号才能查询物流状态。
- 双向实时通信:MCP 协议支持双向实时通信,允许模型和外部服务之间进行实时交互。这使得模型能够在需要时主动请求信息或执行操作,而不仅仅是被动响应请求。API 调用通常是单向的,模型只能在接收到请求时进行响应。例如,MCP 服务在处理复杂任务时,可主动反馈中间结果(如“正在查询数据库,请稍候”)。
- 动态工具发现与集成:MCP 协议允许模型动态发现和集成新的工具或服务,而无需修改代码或重新部署。这使得模型能够灵活地适应新的需求和环境。API 调用通常是静态的,模型只能使用预先定义的 API 接口。例如,用户问“帮我订机票”,MCP 会自动识别可用的航班查询工具和支付接口,无需提前配置。而 API 调用需要单独开发调用机票查询和支付的接口。
MCP 协议的连接方式
MCP 协议通常使用两种方式建立连接。
SSE(Server-Sent Events)
SSE 是一种基于 HTTP 的通信协议,它使用单向连接,从 MCP 服务端到客户端发送数据流。SSE 适用于需要实时更新的场景,例如聊天应用、股票行情等。在通过 SSE 连接时,你会用到类似 http://localhost:8001/sse 的 URL 地址,因此 SSE 连接更像传统的网络 API 调用。
stdio(标准输入输出)
stdio 通过标准输入输出流进行通信,通常 MCP 服务端是运行在本地的,适用于本地开发和调试。
在 LangGraph 中使用 MCP 协议
下面通过一个最简单的实例来演示如何在 LangGraph 中使用 MCP 协议。项目文件结构如下:
.
├── mcp_servers # MCP 服务器
│ ├── math.py # 数学计算
│ └── weather.py # 天气查询
└── main.py # 主程序
首先安装所需要的包。
pip install langchain-mcp-adapters mcp
然后在 mcp_servers 目录下创建两个 MCP 服务。math.py 使用 stdio 连接,实现了加法和乘法运算,用于解决数学计算问题。weather.py 使用 SSE 连接,实现了天气和时间查询功能。
math.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")
weather.py 代码如下:
from datetime import datetime
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Weather", port=8001)
@mcp.tool()
def get_weather(location: str) -> str:
return "晴天"
@mcp.tool()
def get_time() -> str:
return datetime.now().strftime('%Y-%m-%d %H:%M:%S')
if __name__ == "__main__":
mcp.run(transport="sse")
接着在 main.py 中引用相关的包。
import asyncio
from contextlib import asynccontextmanager
from typing import Annotated, TypedDict
from langchain.prompts import ChatPromptTemplate
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.graph import END, START, StateGraph
from langgraph.graph.message import add_messages
from langgraph.prebuilt import ToolNode, tools_condition
from langchain_ollama import ChatOllama
编写 load_mcp_tools() 方法,将 MCP 服务转换成 LangChain 中的工具(langchain_core.tools)。
@asynccontextmanager
async def load_mcp_tools():
"""加载 MCP 工具"""
async with MultiServerMCPClient(
{
"math": {
"command": "python",
"args": ["mcp_servers/math.py"],
"transport": "stdio",
},
"weather": {
"url": f"http://localhost:8001/sse",
"transport": "sse",
}
}
) as client:
yield client.get_tools()
加载模型、设置提示词以及定义 LangGraph 图的状态。
model = ChatOllama(model="qwen2.5:7b")
prompt = ChatPromptTemplate.from_template("You are an assistant for question-answering tasks. If necessary, external tools can also be called to answer. If you don't know the answer, just say that you don't know. Answer in Chinese.\n\nQuestion: {question}")
class State(TypedDict):
messages: Annotated[list, add_messages]
编写 create_graph() 方法,创建一个最简单的图,仅包含一个对话节点和一个工具节点。在 LangGraph 中调用工具,需要将工具转换成工具节点 ToolNode,工具节点会自动处理工具的调用和结果的返回。

@asynccontextmanager
async def create_graph():
"""创建图"""
def agent(state: State):
messages = state["messages"]
state["messages"] = llm_with_tool.invoke(messages)
return state
async with load_mcp_tools() as tools: # 获取 MCP 工具
print(f"可用的 MCP 工具:{[tool.name for tool in tools]}")
llm_with_tool = prompt | model.bind_tools(tools) # 绑定工具并创建模型调用链
graph_builder = StateGraph(State)
graph_builder.add_node(agent)
# 添加工具节点
graph_builder.add_node("tool", ToolNode(tools))
graph_builder.add_edge(START, "agent")
graph_builder.add_conditional_edges(
"agent",
tools_condition, # LangGraph 中预定义的方法,用于判断是否需要调用工具
{
"tools": "tool",
END: END,
},
)
graph_builder.add_edge("tool", "agent")
yield graph_builder.compile()
最后编写主程序,运行观察一下结果。
async def main():
async with create_graph() as graph:
result = await graph.ainvoke({"messages": "徐州天气怎么样"})
print(result["messages"][-1].content)
result = await graph.ainvoke({"messages": "现在几点了"})
print(result["messages"][-1].content)
result = await graph.ainvoke({"messages": "(3+5)x12等于多少"})
print(result["messages"][-1].content)
if __name__ == "__main__":
asyncio.run(main())
可以看到输出结果如下:
可用的 MCP 工具:['add', 'multiply', 'get_weather', 'get_time']
徐州现在的天气是晴天。
现在的时刻是17:22:15。
(3+5)×12等于96。
想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?
别再浪费时间啦!2025 年 AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享!
👇👇扫码免费领取全部内容👇👇

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势
想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI:
1. 100+本大模型方向电子书

2. 26 份行业研究报告:覆盖多领域实践与趋势
报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:
- 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
- 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
- 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
- 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。
3. 600+套技术大会 PPT:听行业大咖讲实战
PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

- 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
- 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
- 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
- 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。
二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走
想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位
面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析:

2. 102 道 AI 大模型真题:直击大模型核心考点
针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题
专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:

三、路线必明:AI 大模型学习路线图,1 张图理清核心内容
刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。
L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。


四、资料领取:全套内容免费抱走,学 AI 不用再找第二份
不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:
👇👇扫码免费领取全部内容👇👇

2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!
更多推荐



所有评论(0)