ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI应用开发实战:用Dify和高德地图MCP搭建天气预报工具,附详细图文教程(建议收藏)

AI应用开发实战:用Dify和高德地图MCP搭建天气预报工具,附详细图文教程(建议收藏) 1. 为什么要在 Dify 里接高德地图 MCP 做天气查询很多人第一次听到「Dify 高德地图 MCP 搭建天气预报工具」会以为要写一堆后端代码其实核心工作只有三件拿到高德 Web 服务的 Key、把高德 MCP Server 挂到 Dify 的 Agent 节点上、再编排一个能查天气的 ChatFlow。做完之后你在对话框里输入「北京未来三天天气怎么样」工作流会自动调用高德的地图能力把结构化天气数据交给大模型润色成一段人话回复。先说清楚这套东西是什么、能做什么、适合谁。Dify 是一个开源的大模型应用编排平台你可以用拖拽节点的方式把「用户输入 → Agent 思考 → 调用外部工具 → 大模型总结 → 输出」串成一条流水线。高德地图 MCP 是高德开放平台提供的 Model Context Protocol 服务它把天气查询、地理编码、路径规划这些能力封装成标准工具任何支持 MCP 的客户端都能直接调用。MCP 你可以理解成「大模型和外部工具之间的通用插座」——以前每接一个 API 都要写适配代码现在只要按 MCP 协议填好地址和 Key工具就能被 Agent 识别并调用。适合谁跟做已经跑起来 Dify 服务本地 Docker 或云版都行的开发者、想给业务加天气/出行能力的 AI 应用开发者、以及想搞懂 MCP 到底怎么落地的人。不适合完全没碰过 Dify 的人从零硬啃建议先把 Dify 跑起来再回来。我实测下来整条链路最容易卡住的不是 Dify 编排而是高德 Key 的服务平台类型选错、MCP 地址填错、以及 Agent 策略没选支持 MCP 的那一档。这篇会把这三个坑都标出来配置片段可以直接复制。天气预报只是入口。高德 MCP 本身还带路径规划、POI 搜索等能力你把工具挂上去之后同一个 Agent 还能回答「从北京南站到首都机场怎么走」「附近有没有充电站」。所以这套配置搭一次后面扩展场景的成本很低。下面从申请 Key 开始一步步走到真实城市天气查询验证成功。2. 前置准备高德 Key、Dify 服务与模型 API 怎么配这一章把动手前需要的东西全部备齐缺一个后面都会报错。2.1 高德地图开发者账号与 Web 服务 Key打开高德开放平台注册成为开发者个人认证即可。进入控制台后找到「应用管理 → 我的应用」创建一个新应用名字随便起比如dify-weather-demo。然后在应用下点「添加 Key」关键一步来了服务平台必须选「Web 服务」。很多人手滑选了「Web 端 (JS API)」或「iOS/Android」结果 MCP 调用时一直 401 或提示 Key 类型不匹配。Web 服务类型的 Key 才是给服务端 HTTP 调用用的MCP Server 走的就是这条路。创建成功后你会拿到一串 32 位左右的 Key先复制到记事本备用。同时在高德开放平台的「MCP Server」快速接入页面找到 MCP Server 地址形如https://mcp.amap.com/sse?key你的KEY或类似的 SSE 端点。不同时期高德给的地址格式可能略有差异以你控制台里实际显示的为准。这个地址后面要填进 Dify 的 MCP 服务配置。注意高德 Key 有配额限制个人开发者每天调用次数有限测试阶段够用别拿去做压测。2.2 Dify 服务与模型接入Dify 可以用 Docker Compose 本地部署也可以用官方云版。本地部署的话进 Dify 后在「设置 → 模型供应商」里添加一个支持工具调用Function Calling的模型。Agent 的 ReAct 模式需要模型能「思考 决定调哪个工具」所以必须选支持工具调用的模型比如 Qwen 系列的工具调用版本、DeepSeek 的工具调用模型等。纯对话模型挂上去Agent 节点会报「模型不支持工具调用」。如果你在模型接入上想省事可以用 TaoToken 统一管理模型调用。它的 API 地址是https://taotoken.net/api在 Dify 的 OpenAI-API-compatible 供应商里填 Base URL 和 Key 就能接进来模型 ID 按你实际用的填。这样切换模型不用改一堆配置。2.3 需要准备的三件套清单项目用途填写位置高德 Web 服务 Key调用高德 MCP 鉴权MCP 服务配置的 URL 参数或 Header高德 MCP Server 地址Agent 识别工具Dify Agent 节点外部工具支持工具调用的模型 IDAgent 思考与总结Agent 节点 LLM 节点三件套缺一不可。Base URL、Key、Model ID 这三个概念在后面每个配置节点里都会反复出现记住它们的对应关系就不会乱。3. 可复制配置Dify ChatFlow 与高德 MCP 参数模板这一章是全文核心给出可以直接抄的配置片段。先建一个 ChatFlow不是 WorkflowChatFlow 才带对话变量sys.query。3.1 开始节点开始节点保持默认即可它自带sys.query变量用户输入的问题会存进这个变量。不用额外加字段。3.2 Agent 节点配置关键在 Agent 节点里Agent 策略要选支持 MCP 的那一档不同 Dify 版本叫法可能是「ReAct (Support MCP)」或「Function Calling MCP」。模型选你前面接好的工具调用模型。外部工具这里挂两个获取当前时间Dify 内置工具天气查询需要知道「今天」是哪天高德地图 MCP 服务MCP 服务配置的 JSON 片段大致长这样路径和字段名以你 Dify 版本为准{ mcpServers: { amap: { url: https://mcp.amap.com/sse?key你的高德Web服务Key, transport: sse, enabled: true } } }如果你用的是 stdio 类型的 MCP配置会换成commandargs形式但高德给的是 SSE 端点所以用urltransport: sse。填完记得打开「启用 MCP 资源作为工具」这个开关否则 Agent 看不到高德提供的工具列表。注意URL 里的key后面直接拼你的高德 Key不要加引号或空格否则会 401。3.3 模板转换节点Agent 节点输出的结果包含 text、files、json 三部分。天气数据是以结构化 JSON 存在json字段里的而 LLM 节点不能直接吃 JSON 对象所以中间加一个模板转换节点把json字段转成字符串文本。模板里写{{ agent_node.json }}变量名按你 Agent 节点的实际输出变量名替换。这一步的作用就是「把结构化数据拍平成纯文本」别省。3.4 LLM 节点LLM 节点的输入接模板转换节点的输出提示词可以这样写你是一个天气播报助手。下面是高德地图返回的天气数据 {{ template_node.output }} 请从中提取城市、日期、天气状况、温度、风力、降雨概率用 Markdown 表格输出未来三天天气并在末尾给一句出行建议。模型选同一个工具调用模型即可。这一步负责把机器数据变成人话。3.5 直接回复节点把 LLM 节点的输出接到直接回复节点用户就能在对话框看到 Markdown 格式的天气表。整条链路开始 → Agent调高德 MCP→ 模板转换 → LLM → 直接回复。节点不多但每个都得配对。4. 验证请求一次真实城市天气查询的完整动作配置完别急着庆祝先做一次真实查询验证。在 ChatFlow 预览窗口输入北京未来三天的天气如何。正常情况下你会看到 Agent 先思考然后调用「获取当前时间」拿到今天日期再调用高德 MCP 的天气工具拿到 JSON 数据经过模板转换和 LLM 润色最后输出一张 Markdown 天气表。如果输出里包含北京未来三天的日期、天气、温度、风力说明链路通了。接着打开 Dify 的「追踪」或「日志」面板逐个节点看数据流转Agent 节点的json字段里应该有高德返回的原始天气结构模板转换节点输出应该是字符串LLM 节点输出应该是 Markdown。哪个节点输出为空问题就出在那一环。再测一个边界输入上海明天会下雨吗。这次 Agent 需要理解「明天」是相对今天而言所以「获取当前时间」工具必须被调用。如果 Agent 没调时间工具直接查日期可能算错。这也是为什么前面强调要挂时间工具。验证通过后你可以把同一个 Agent 扩展成出行助手输入从北京南站到首都机场怎么走高德 MCP 的路径规划工具会被调用。一套配置多个场景。5. 常见报错排查401、local proxy failed、reading choices 怎么解这一章按真实报错对照排查遇到问题直接查表。401 Unauthorized / INVALID_USER_KEY九成是高德 Key 的问题。检查三点Key 是不是「Web 服务」类型URL 里key后面有没有多余空格或引号Key 有没有被禁用或超额。改完重新保存 MCP 配置再试。local proxy failed / connection refusedDify 访问不到 MCP 地址。先确认 Dify 所在网络能出网访问高德域名如果是本地 Docker 部署检查容器 DNS 和网络模式。SSE 连接对网络稳定性有要求偶发断开可以重试。reading choices / index out of range通常是 LLM 节点拿到了空输入。往上查模板转换节点输出是不是空再往上查 Agent 节点的json字段有没有数据。如果 Agent 根本没调工具说明 Agent 策略没选支持 MCP 的那档或者「启用 MCP 资源作为工具」没开。OAuth / token 相关报错如果你接的是需要 OAuth 的模型供应商检查 token 是否过期。用 TaoToken 这类统一网关时确认 Base URL 填的是https://taotoken.net/apiKey 没填错。模型不支持工具调用Agent 节点报这个换一个支持 Function Calling 的模型 ID。纯对话模型干不了 Agent 的活。Codex auth.json / CC Switch / Cline MCP 场景如果你是在这些客户端里配 MCP同样要写全三件套——Base URL、Key、Model ID。以 Cline 的 MCP 配置为例{ mcpServers: { amap: { url: https://mcp.amap.com/sse?key你的Key, transport: sse } } }Codex 的auth.json里则要确保模型端点和 Key 对应。CC Switch 切换配置时确认 MCP 段没被覆盖。排查顺序建议先看 Key 和 URL再看网络再看 Agent 策略最后看模型能力。按这个顺序走大部分问题五分钟内能定位。6. 把天气工具用起来接入文档与后续扩展链路跑通之后建议把配置沉淀成模板下次新建应用直接复制。高德 MCP 的工具列表会随平台更新定期回控制台看有没有新增能力。如果你在模型接入或 Key 管理上想少折腾可以走 TaoToken 的接入文档把模型统一管起来API 地址https://taotoken.net/api配合接入文档里的说明填 Base URL 和 Key 即可。想先验证模型对话效果可以直接用模型对话页面试如果是长期做编码类 Agent 或需要稳定调用额度看 Coding Plan 更合适Key 的创建和管理在 API Keys 页面接入细节查接入文档。这套 Dify 高德 MCP 的组合本质是把「地图能力」变成 Agent 的一个工具。天气只是第一个场景路径规划、POI 搜索、地理编码都能用同样的方式挂上去。配置一次扩展无限。
返回列表