智能体开发实战|基于Dify+MCP把天气信息推送到微信好友

发布时间:2026/10/9 20:24:03

智能体开发实战|基于Dify+MCP把天气信息推送到微信好友 1. 从一句“把天气发给张三”说起DifyMCP 智能体到底能做什么你对着聊天框输入“把广州的天气情况通过微信发送给张三”几秒后微信里张三真的收到了一条天气消息。这背后不是某个写死的脚本而是一条完整的智能体链路Dify 负责理解意图、编排决策MCP 负责把“查天气”和“发微信”两个能力标准化地暴露给模型模型再按需调用。这套组合适合谁适合已经用过 Dify 做过简单对话应用、想进一步让应用“动手干活”的开发者也适合手里有一堆零散 Python 脚本、想用统一协议把它们接进大模型的人。传统做法里你要在 Dify 里写自定义工具每个工具都要手动定义 OpenAPI Schema改一个参数就得重新导入。而 MCPModel Context Protocol把这件事标准化了工具以 Server 的形式独立运行Dify 通过 MCP 插件去发现和调用工具增删改都不需要动 Dify 的工作流本身。我试过把天气查询和微信发送拆成两个独立 MCP ServerDify 侧只配置一次连接后面加第三个、第四个工具几乎零成本。这篇内容会带你走完完整链路先准备两个 MCP Server一个查天气、一个发微信再在 Dify 里装 MCP 插件、配好连接、建 Agent 应用最后真发一条消息验证并把常见的 401、连接失败、工具列表为空这些坑逐个排掉。全程命令和配置都可直接复制Windows 环境为主其他系统把路径换掉即可。2. 前置准备TaoToken 接入与 MCP Server 运行环境搭建在动手写 Server 之前先把两件事定下来模型从哪来、Python 环境怎么管。模型侧我用 TaoToken 做统一接入它兼容 OpenAI 风格的接口Dify 里选模型时填 Base URL 和 Key 就能用省去到处申请不同厂商 Key 的麻烦。你可以在官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 了解接入方式API 地址是 https://taotoken.net/api注意这个地址后面不加 UTM 参数。环境侧用 uv 管理 Python 项目和虚拟环境它比 pip 快很多而且uv init出来的项目结构清晰。Windows 下先装 uvpowershell -ExecutionPolicy ByPass -c irm https://astral.sh/uv/install.ps1 | iex装完后新开一个终端确认uv --version能输出版本号。接下来建两个独立项目目录一个放微信发送 Server一个放天气查询 Server。为什么要分开因为两个 Server 职责不同、依赖不同分开后各自启动、各自占端口互不干扰也方便单独重启调试。微信发送 Server 依赖wxauto它通过 UI 自动化操作微信 PC 客户端所以本机必须装微信 PC 版并完成扫码登录。这里有个硬性限制wxauto只兼容 3.9.x 版本的微信 PC 客户端版本太新会找不到控件。天气 Server 依赖httpx做异步 HTTP 请求调用的是公开的天气接口不需要额外 Key。两个 Server 都用 MCP 官方 Python SDK 的FastMCP来写它把工具注册、SSE 传输这些样板代码都封装好了你只需要关心工具函数本身。端口规划上微信 Server 用 8000天气 Server 用 8001后面 Dify 配置里会分别指向这两个端口。如果你本机 8000 被占用换成其他端口也行只要 Dify 配置同步改。还有一点要提前确认Dify 如果是用 Docker Desktop 跑的容器内部访问宿主机要用host.docker.internal这个域名不能用localhost。这是后面配置 MCP 连接时最容易踩的坑先记住。3. 可复制配置两个 MCP Server 的完整代码与 Dify 侧 JSON先写微信发送 Server。建目录、初始化、装依赖uv init wechat cd wechat uv venv .venv\Scripts\activate uv add mcp[cli] wxauto如果激活虚拟环境时报“无法加载 .venv\Scripts\activate.ps1因为在此系统上禁止运行脚本”用管理员权限开一个 PowerShell执行Set-ExecutionPolicy RemoteSigned确认后再回来激活。main.py内容如下注意端口是 8000传输方式用 SSEfrom mcp.server.fastmcp import FastMCP from wxauto import WeChat mcp FastMCP(port8000) wx WeChat() mcp.tool() async def send_wechat_msg(msg: str, who: str) - str: send wechat text message wx.ChatWith(who) wx.SendMsg(msg, who) return success if __name__ __main__: mcp.run(transportsse)wx.ChatWith(who)会切换到指定好友的聊天窗口wx.SendMsg(msg, who)发送消息。who传好友备注名必须和微信里显示的完全一致差一个字都会找不到人。再写天气 Serveruv init weather cd weather uv venv .venv\Scripts\activate uv add mcp[cli] httpxmain.py内容如下端口改成 8001import httpx import urllib.parse from mcp.server.fastmcp import FastMCP mcp FastMCP(port8001) mcp.tool() async def get_weather(location: str) - str: Get weather for a location. url http://weather.cma.cn/api/autocomplete?q urllib.parse.quote(location) async with httpx.AsyncClient() as client: try: response await client.get(url, timeout10.0) response.raise_for_status() data response.json() if data[code] ! 0: return 系统错误请稍后重试 location_code for item in data[data]: str_array item.split(|) if ( str_array[1] location or str_array[1] 市 location or str_array[2] location ): location_code str_array[0] break if location_code : return 没找到该位置的信息 url fhttp://weather.cma.cn/api/now/{location_code} response await client.get(url, timeout10.0) response.raise_for_status() return response.json() except Exception: return 系统错误请稍后重试 if __name__ __main__: mcp.run(transportsse)两个 Server 分别用uv run main.py启动看到监听 8000 和 8001 的日志就说明起来了。接下来是 Dify 侧。先在插件市场搜 mcp安装 “MCP SSE / StreamableHTTP” 插件。然后切到插件 tab点“去授权”把下面这段 JSON 填进去{ wechat_server: { url: http://host.docker.internal:8000/sse, headers: {}, timeout: 50, sse_read_timeout: 50 }, weather_searver: { url: http://host.docker.internal:8001/sse, headers: {}, timeout: 50, sse_read_timeout: 50 } }注意weather_searver这个拼写我故意保留了原文的写法你在自己配置时建议改成weather_server避免后面引用时拼错。host.docker.internal是 Docker 容器访问宿主机的固定域名如果你 Dify 不是 Docker 部署换成127.0.0.1即可。然后创建空白应用类型选 Agent。在工具里添加 MCP 工具系统提示词写你是一个超级助理可以通过调用 MCP 工具完成各种任务。为了获得 MCP 工具列表必须先通过 mcp_sse_list_tools 获取。模型选 qwen-plus 或你在 TaoToken 里配置好的其他模型。这里模型 ID 要填对Base URL 填https://taotoken.net/apiKey 填你的 TaoToken Key。三件套齐了模型才能正常响应。4. 验证请求真发一条天气消息并看日志确认配置完成后在 Dify 的调试预览里输入“把广州的天气情况通过微信发送给张三”。正常情况下你会看到 Agent 的思考过程先调用mcp_sse_list_tools拿到工具列表发现get_weather和send_wechat_msg两个工具然后调用get_weather传参location广州拿到天气 JSON再把结果整理成文本调用send_wechat_msg传参who张三、msg天气内容。验证成功的标志有三个Dify 调试面板显示工具调用链完整无报错微信 PC 端张三的聊天窗口弹出新消息两个 Server 的终端日志分别打印出收到的请求。天气 Server 日志里能看到对weather.cma.cn的两次请求一次 autocomplete、一次 now微信 Server 日志里能看到send_wechat_msg被调用。如果消息没发出去先看微信 Server 终端有没有报错。常见的是wxauto找不到窗口这时候确认微信 PC 版是不是 3.9.x、有没有登录、窗口有没有被最小化到托盘。wxauto需要微信窗口处于可交互状态最小化到托盘有时会失败把微信窗口正常显示在桌面上再试。天气查询返回“没找到该位置的信息”说明 autocomplete 接口没匹配到城市。换一个更标准的城市名比如“广州市”或“北京”接口对简称的支持不稳定。返回“系统错误请稍后重试”则可能是网络超时把timeout从 10 秒调大到 20 秒再试。Dify 侧如果工具列表为空检查 MCP 插件授权里的 URL 是否可达。在 Dify 容器内执行curl http://host.docker.internal:8000/sse看能不能建立连接。连不上就是host.docker.internal没解析或端口没通确认 Docker Desktop 的 “Use the WSL 2 based engine” 相关网络设置或者改用宿主机局域网 IP。5. 常见报错排查401、local proxy failed、reading choices、OAuth401 Unauthorized出现在 Dify 调用模型时说明 TaoToken 的 Key 没填对或过期。检查 Dify 模型配置里的 API Key 是否和 TaoToken 控制台一致Base URL 是否是https://taotoken.net/api。如果 Key 没问题看是不是把 Key 填到了 MCP 插件的 headers 里——MCP 插件不需要模型 Key模型 Key 在模型供应商配置里。local proxy failedDify 日志里出现这个通常是 MCP 插件连接 Server 时网络不通。先确认两个 Server 进程还活着netstat -ano | findstr 8000看端口有没有监听。如果 Server 正常但 Dify 连不上就是host.docker.internal的问题换成宿主机实际 IP 试试。另外检查 Windows 防火墙有没有拦 8000/8001 端口。reading choices 相关报错模型返回格式不符合预期时会出现比如模型没按 OpenAI 格式返回 choices 数组。这多半是模型 ID 填错或者 Base URL 指向了不兼容的端点。确认模型 ID 是 TaoToken 支持的名称不要自己编。如果用的是 qwen-plus确认它在你的 TaoToken 账号下有权限。OAuth 报错MCP 插件授权时如果提示 OAuth 相关错误说明插件尝试走 OAuth 流程但你的 Server 没实现。我们的 Server 是 SSE 直连不需要 OAuth在插件配置里不要勾选 OAuth 相关选项headers 留空即可。如果插件强制要求 OAuth换用支持纯 SSE 的插件版本。工具调用后没反应Agent 调用了工具但微信没收到消息看微信 Server 日志有没有send_wechat_msg的记录。有记录但没发出去是wxauto的问题没记录是 Dify 没调到这个工具检查系统提示词里有没有要求先mcp_sse_list_tools以及工具是否真的添加到了 Agent。Codex auth.json 相关如果你同时用 Codex 类工具它的auth.json里存的是 OpenAI 凭证和这套 DifyMCP 链路无关不要混用。Dify 侧的凭证在模型供应商配置和 MCP 插件授权里两套体系分开管理。6. 把链路跑通之后模型对话、Coding Plan 与接入文档怎么选链路跑通后你手里其实有了一个可复用的模板任何“查数据发通知”的需求都可以照这个结构拆成两个 MCP ServerDify 侧只改提示词和工具组合。想验证模型本身的表现可以直接在模型对话里试 https://taotoken.net/api 接入后的效果对比不同模型对工具调用的理解能力。如果你要长期做编码类或 Agent 类项目Coding Plan 更适合按量使用不用每次单独配 Key。接入过程中遇到配置问题优先查接入文档里面把 Base URL、Key、Model ID 三件套的填法写得很清楚。MCP 插件授权、Dify 模型配置、Server 启动这三步里任何一步的报错都能在文档里找到对应说明。把这篇里的两个 Server 代码存好下次加新工具时复制一份改改工具函数就行Dify 侧只需要在授权 JSON 里加一个 server 条目。
延伸阅读

更多相关文章

2026/10/9 20:24:03

视频微表情识别中自适应关键帧算法:选帧、光流与序列模型实践

简介:面向计算机视觉与情感计算研究者的微表情识别项目,基于自适应关键帧思想处理视频中的瞬时面部变化,解决微表情持续时间短、特征微弱导致识别困难的问题。资源围绕视频预处理、关键帧检测、LBP/DoG特征提取、SVM/CNN分类及模型优化等环节…

2026/10/9 20:19:02

C#实现AnimeGAN图像动漫化:Windows边缘设备工业级部署方案

简介:本资源是一套基于C#实现的AnimeGAN图像动漫化完整工程,面向计算机视觉初学者、.NET开发者及风格迁移技术实践者,提供开箱即用的漫画风格迁移能力,适用于人像卡通化、二次元内容生成等轻量级AI应用开发。压缩包共124个文件&am…

2026/10/9 21:19:11

Spring AOP动态代理原理与失效场景全解析

1. 为什么每个Java开发者都绕不开AOP这道坎刚入行那会儿,我最怕看项目里的Aspect注解。明明一个简单的下单接口,断点打进去,调用栈里莫名其妙多出七八层,什么CglibAopProxy、ReflectiveMethodInvocation,看得头皮发麻。…

2026/10/9 21:19:11

Spark ALS电商推荐系统毕业设计实战指南

简介:这是一套面向计算机专业本科生的Spark电商推荐系统毕业设计完整实现方案,适用于课程设计、期末大作业及毕业论文实践环节,尤其适合具备Java基础但缺乏分布式项目经验的学习者。资源包含基于Spark MLlib构建的协同过滤推荐引擎源码&#…

2026/10/9 21:19:11

单细胞转录组数据查找指南:从项目代码到可复现的数据获取路径

简介:这份资源是面向生物信息学入门者与单细胞研究初学者的数据查找指南配套项目代码,聚焦单细胞转录组学中公共数据获取这一关键环节,帮助读者解决从海量数据库中精准定位可用数据集的问题。压缩包共3个文件,以inscode项目配置、…

2026/10/9 21:19:11

ODAC 11.2 Xcopy x64免安装部署指南:ODP.NET连接Oracle实战

简介:面向 64 位 Windows/.NET 环境的 Oracle 数据访问组件包,专门解决 .NET 应用以 OLEDB 方式连接 Oracle 数据库时出现的报错与兼容性问题,适合服务器端开发、部署与运维人员快速定位数据访问层故障。压缩包共 194 个文件,以 9…

2026/10/9 21:19:11

基于启发式特征的钓鱼网站检测:Python特征工程与模型训练实战

简介:这份资源是面向计算机相关专业学生、教师及企业员工的Python启发式特征钓鱼网站检测系统,包含完整源码、数据集与详细文档,可用于毕业设计、课程设计、作业或项目演示。系统通过分析域名、内容、行为与安全性等特征,利用预设…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑