news 2026/5/15 13:28:16

LangChain:MCP 的 AI Agent 实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangChain:MCP 的 AI Agent 实战

🚀 基于 LangGraph + MCP 的 AI Agent 实战:从 0 搭建一个天气查询工具系统(2026最新版)

📌 一、项目背景

在传统的 LangChain Agent 开发中,我们通常会把工具(Tool)直接写在代码里,例如:

  • 天气查询函数
  • 搜索函数
  • 文件操作函数

这种方式虽然简单,但存在明显问题:

  • ❌ 工具无法复用
  • ❌ Agent 与工具强耦合
  • ❌ 不适合多 Agent 系统
  • ❌ 难以工程化扩展

为了解决这些问题,本项目使用:

🔥 MCP(Model Context Protocol) + LangGraph + DeepSeek LLM

构建一个可扩展的工具服务化 AI Agent 系统


🧠 二、系统架构设计

整体架构如下:

用户 ↓ LangGraph Agent(大脑) ↓ MCP Client(工具调度器) ↓ MCP Server(天气工具服务) ↓ OpenWeather API(真实数据源)

🧩 核心思想

组件作用
MCP Server提供工具能力(天气查询)
MCP Client发现并调用工具
LangGraph Agent负责推理与决策
LLM(DeepSeek)负责语言理解与生成

⚙️ 三、环境准备

1️⃣ 安装依赖

pipinstalllangchain langgraph langchain-mcp-adapters loguru httpx python-dotenv

2️⃣ 配置环境变量(.env)

DEEPSEEK_API_KEY=你的key OPENWEATHER_API_KEY=你的key

3️⃣ MCP 配置文件(mcp.json)

{"mcpServers":{"weather":{"url":"http://127.0.0.1:8000/sse","transport":"sse"}}}

🌩️ 四、MCP Server(工具服务端)

📌 代码:weather_server.py

importjsonimportosimporthttpxfromdotenvimportload_dotenvfromloguruimportloggerfrommcp.server.fastmcpimportFastMCP load_dotenv()# 创建 MCP Servermcp=FastMCP("WeatherServerSSE",host="0.0.0.0",port=8000)@mcp.tool()defget_weather(city:str)->str:""" 查询指定城市天气 """url="https://api.openweathermap.org/data/2.5/weather"params={"q":city,"appid":os.getenv("OPENWEATHER_API_KEY"),"units":"metric","lang":"zh_cn"}resp=httpx.get(url,params=params,timeout=10)data=resp.json()logger.info(f"{city}天气查询成功")returnjson.dumps(data,ensure_ascii=False)if__name__=="__main__":logger.info("🚀 MCP Weather Server 启动中...")mcp.run(transport="sse")

📌 作用

👉 将“天气查询能力”封装成可远程调用的工具服务


🔗 五、MCP Client + LangGraph Agent

📌 代码:client.py

importasyncioimportjsonimportosfromdotenvimportload_dotenvfromloguruimportloggerfromlangchain_mcp_adapters.clientimportMultiServerMCPClientfromlanggraph.prebuiltimportcreate_react_agentfromlangchain.chat_modelsimportinit_chat_model load_dotenv(override=True)defload_servers(file_path="mcp.json"):withopen(file_path,"r",encoding="utf-8")asf:returnjson.load(f)["mcpServers"]asyncdefmain():# 1️⃣ 加载 MCP Serverservers=load_servers()# 2️⃣ 创建 MCP Clientclient=MultiServerMCPClient(servers)# 3️⃣ 获取 toolstools=awaitclient.get_tools()logger.info(f"🧩 Tools:{[t.namefortintools]}")# 4️⃣ 初始化 LLM(DeepSeek)llm=init_chat_model("deepseek-chat",model_provider="deepseek",api_key=os.getenv("DEEPSEEK_API_KEY"))# 5️⃣ 创建 Agentagent=create_react_agent(llm,tools)logger.info("🤖 MCP Agent 已启动")# 6️⃣ 交互循环whileTrue:query=input("\n用户: ").strip()ifquery.lower()=="quit":breakresult=awaitagent.ainvoke({"messages":[("user",query)]})print("\nAI:",result["messages"][-1].content)if__name__=="__main__":asyncio.run(main())

📌 作用

👉 这是整个系统的“大脑 + 工具调度中心”


🔁 六、运行流程解析

一次完整请求流程如下:

用户输入问题 ↓ LangGraph Agent(理解问题) ↓ 判断需要调用工具 ↓ MCP Client 获取 get_weather ↓ 调用 MCP Server ↓ 请求 OpenWeather API ↓ 返回天气数据 ↓ LLM总结输出结果

🔥 七、关键技术点总结

1️⃣ MCP(核心升级点)

相比传统 tool:

方式特点
本地 tool耦合强
MCP tool服务化、可复用

2️⃣ LangGraph Agent

替代传统:

  • AgentExecutor ❌
  • ReAct 手动循环 ❌

使用:

  • create_react_agent ✅

3️⃣ Async 全链路

必须统一:

  • MCP tools → async
  • Agent → ainvoke
  • pipeline → async


🧠 八、总结

本项目完成了一个完整的:

🚀 基于 MCP + LangGraph 的工具化 AI Agent 系统

实现了:

  • 工具服务化(MCP Server)
  • 工具自动发现(MCP Client)
  • AI推理调度(LangGraph)
  • 多工具协同调用

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 13:27:55

基于CircuitPython与BLE的智能通知手环:从硬件选型到固件开发全解析

1. 项目概述:一个能“感知”通知的智能手环如果你和我一样,经常在专注工作时被手机上一连串的通知打断,但又怕错过真正重要的消息,那么这个项目可能会给你带来一些启发。我最近基于 Adafruit 的硬件和 CircuitPython,动…

作者头像 李华
网站建设 2026/5/15 13:27:00

小型房屋租赁|基于Java + vue小型房屋租赁系统(源码+数据库+文档)

小型房屋租赁系统 目录 基于springboot vue小型房屋租赁系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue小型房屋租赁系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/5/15 13:26:03

3D集成电路热管理:微流体冷却技术与Cool-3D框架解析

1. 三维集成电路热管理挑战与创新解决方案在半导体技术发展遭遇物理极限的今天,三维集成电路(3DIC)通过垂直堆叠技术实现了晶体管密度的突破性提升。然而这种创新结构也带来了前所未有的热管理挑战——与传统2D芯片相比,3D结构的热量积聚问题呈指数级恶化…

作者头像 李华