LangChain:MCP 的 AI Agent 实战
基于 LangGraph MCP 的 AI Agent 实战从 0 搭建一个天气查询工具系统2026最新版 一、项目背景在传统的 LangChain Agent 开发中我们通常会把工具Tool直接写在代码里例如天气查询函数搜索函数文件操作函数这种方式虽然简单但存在明显问题❌ 工具无法复用❌ Agent 与工具强耦合❌ 不适合多 Agent 系统❌ 难以工程化扩展为了解决这些问题本项目使用 MCPModel Context Protocol LangGraph DeepSeek LLM构建一个可扩展的工具服务化 AI Agent 系统。 二、系统架构设计整体架构如下用户 ↓ LangGraph Agent大脑 ↓ MCP Client工具调度器 ↓ MCP Server天气工具服务 ↓ OpenWeather API真实数据源 核心思想组件作用MCP Server提供工具能力天气查询MCP Client发现并调用工具LangGraph Agent负责推理与决策LLMDeepSeek负责语言理解与生成⚙️ 三、环境准备1️⃣ 安装依赖pipinstalllangchain langgraph langchain-mcp-adapters loguru httpx python-dotenv2️⃣ 配置环境变量.envDEEPSEEK_API_KEY你的key OPENWEATHER_API_KEY你的key3️⃣ MCP 配置文件mcp.json{mcpServers:{weather:{url:http://127.0.0.1:8000/sse,transport:sse}}}️ 四、MCP Server工具服务端 代码weather_server.pyimportjsonimportosimporthttpxfromdotenvimportload_dotenvfromloguruimportloggerfrommcp.server.fastmcpimportFastMCP load_dotenv()# 创建 MCP ServermcpFastMCP(WeatherServerSSE,host0.0.0.0,port8000)mcp.tool()defget_weather(city:str)-str: 查询指定城市天气 urlhttps://api.openweathermap.org/data/2.5/weatherparams{q:city,appid:os.getenv(OPENWEATHER_API_KEY),units:metric,lang:zh_cn}resphttpx.get(url,paramsparams,timeout10)dataresp.json()logger.info(f{city}天气查询成功)returnjson.dumps(data,ensure_asciiFalse)if__name____main__:logger.info( MCP Weather Server 启动中...)mcp.run(transportsse) 作用 将“天气查询能力”封装成可远程调用的工具服务 五、MCP Client LangGraph Agent 代码client.pyimportasyncioimportjsonimportosfromdotenvimportload_dotenvfromloguruimportloggerfromlangchain_mcp_adapters.clientimportMultiServerMCPClientfromlanggraph.prebuiltimportcreate_react_agentfromlangchain.chat_modelsimportinit_chat_model load_dotenv(overrideTrue)defload_servers(file_pathmcp.json):withopen(file_path,r,encodingutf-8)asf:returnjson.load(f)[mcpServers]asyncdefmain():# 1️⃣ 加载 MCP Serverserversload_servers()# 2️⃣ 创建 MCP ClientclientMultiServerMCPClient(servers)# 3️⃣ 获取 toolstoolsawaitclient.get_tools()logger.info(f Tools:{[t.namefortintools]})# 4️⃣ 初始化 LLMDeepSeekllminit_chat_model(deepseek-chat,model_providerdeepseek,api_keyos.getenv(DEEPSEEK_API_KEY))# 5️⃣ 创建 Agentagentcreate_react_agent(llm,tools)logger.info( MCP Agent 已启动)# 6️⃣ 交互循环whileTrue:queryinput(\n用户: ).strip()ifquery.lower()quit:breakresultawaitagent.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 → asyncAgent → ainvokepipeline → async 八、总结本项目完成了一个完整的 基于 MCP LangGraph 的工具化 AI Agent 系统实现了工具服务化MCP Server工具自动发现MCP ClientAI推理调度LangGraph多工具协同调用