当前位置: 首页 > news >正文

LangChain之调用MCP工具

import os
import uuidimport dotenv
import asynciofrom langchain_core.messages import HumanMessage
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_agent
from langgraph.checkpoint.memory import MemorySaverfrom main import llmdotenv.load_dotenv()# 配置MCP地址和通信协议# 高德地图 MCP服务端
GAODE_API_KEY = os.getenv('GAODE_API_KEY')
ZHIPU_API_KEY = os.getenv('ZHIPU_API_KEY')from mcp.shared.exceptions import McpErrorasync def run_mcp_agent():max_retries = 3for attempt in range(max_retries):try:print(f"Attempt {attempt + 1}/{max_retries} starting...")client = MultiServerMCPClient({"fetch_mcp_server_config": {"transport": "streamable_http","url": "<fetch的mcp链接>",},"zhipu_search_mcp_server_config": {"transport": "sse","url": f"https://open.bigmodel.cn/api/mcp/web_search/sse?Authorization={ZHIPU_API_KEY}",},"context_mcp_server_config": {"transport": "streamable_http","url": "<数据图像生成的mcp链接>",},"gaode_mcp_server_config": {"transport": "streamable_http","url": f"https://mcp.amap.com/mcp?key={GAODE_API_KEY}",}})tools = await client.get_tools()agent = create_agent(llm,tools=tools)res = await agent.ainvoke({"messages": [HumanMessage(content="联网搜索今日天气")],})print(res)# 自动打开图像import reimport webbrowsermessages = res.get("messages", [])for msg in messages:if hasattr(msg, "content"):content = msg.contentif isinstance(content, list):# Handle list content (e.g. from ToolMessage)for item in content:if isinstance(item, dict) and item.get("type") == "text":text = item.get("text", "")urls = re.findall(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', text)for url in urls:if any(ext in url.lower() for ext in ['.png', '.jpg', '.jpeg', '.gif', 'original']):print(f"Opening image: {url}")webbrowser.open(url)breakexcept McpError as e:print(f"MCP Error encountered: {e}")if "Session terminated" in str(e) and attempt < max_retries - 1:print("Session terminated. Retrying...")await asyncio.sleep(2)continueraise eexcept Exception as e:print(f"An error occurred: {e}")raise easyncio.run(run_mcp_agent())

这里举个例子,直接生成的数据分析图像
4a9cf356dde70844f86284a84d02cbd4

MCP工具调用过程可以使用Pycharm插件查看

http://www.jsqmd.com/news/130477/

相关文章:

  • 域名注册信息为什么会被隐藏?
  • 实用指南:【论文笔记】大型语言模型的知识蒸馏与数据集蒸馏
  • 老板必看:低成本获客的咖啡店模式
  • 工作总结:性能测试中,我遇到的8个疑难杂症集锦
  • 基于51单片机的交通灯控制系统
  • 2026届毕业生存命指南:6大权威查AIGC检测入口+降AI率神器实测“红黑榜”
  • 2026年6款在线UI设计工具测评与AI趋势解析(含Figma/Pixso/墨刀)
  • 程序员必看!AI大模型从“文本生成器“到“智能体“的进化之路,Agentic RL彻底改变强化学习范式!
  • 基于 51 单片机的三层电梯控制系统
  • 2025 AI Agent元年:从零到精通的大模型学习指南,值得收藏!
  • 知名的电缆生产厂家推荐精选:电缆生产厂家排名,电缆生产厂家推荐(2025年12月) - 品牌2026
  • 域名交易遇到纠纷怎么办?常见解决思路
  • “为什么wait和notify必须在同步块中调用?Java面试必看!”
  • 服装销售新模式:从卖产品到卖形象
  • 对比接口测试工具在自动化测试优缺点:Jmeter、Python、Postman
  • JavaScript —— JavaScript 数据处理和转换工具函数详解
  • 解锁淘宝API:实时监控商品价格变动,抢占市场先机!
  • 【路径规划-机器人栅格地图】基于融合改进A星-粒子群算法求解六边形栅格地图路径规划附Matlab代码
  • 黑客技术零基础入门教程—MSF上线到CS工具中可执行的实战方案(非常详细)
  • 实邦电子能成为电子产品开发的优质推荐供应商吗?
  • RPA重塑医疗运营!从行政负担到智能自动化,破解医疗行业效率与合规双重困境
  • JavaScript ——JavaScript 加密和安全相关工具函数详解
  • Day 48 Grad-CAM 和 Hook 函数
  • 把win2003-11系统装进了NAS!
  • 2026企业微信高效办公指南:打卡/审批/会议实操
  • 构建品牌社区堡垒:Reddit子版块从规划、启动到增长的全体系指南
  • Python pandas dataframe
  • 大模型救星:RAG技术详解,告别“一本正经胡说八道“,AI开发者的进阶必修课!
  • 新式“Excel”一出,VBA都落伍了,不少网友都在偷偷用,真香!
  • 2025论文写作必备6大神器:一键综述+真实文献交叉引用! - 麟书学长