
1. 12306-mcp 查票没返回先别急着改 MCP 地址你在 Dify 里搭好了一个 AI Agent挂上 MCP-SSE 插件通过 mcphub 聚合了 12306-mcp模型选了火山引擎的 DeepSeek v3满心期待地问一句“帮我查 5 月 20 日北京到合肥的余票”结果要么转圈半天没动静要么直接回一句“无法获取车次信息”。这时候大多数人的第一反应是MCP 地址填错了mcphub 挂了12306-mcp 没起来我踩过的坑是问题根本不在 12306-mcp而在 Dify 的模型通道没配通。AI Agent 的工作机制是“模型先决策、再调工具”如果模型请求本身就失败了Agent 压根走不到调用 MCP 工具那一步表现出来却像是“查票没返回”。所以正确的排障顺序是先确认 Dify 模型供应商能正常出字再排查 MCP-SSE 和 12306-mcp 的工具调用。这篇就按这个顺序来先在 Dify 模型供应商里把模型通道换成 TaoToken 的 Key 和 Base URL让 AI Agent 的模型请求先跑通然后再回头核对 mcphub 的/sse/group-id和 12306-mcp 的分组配置。TaoToken 在这里只负责模型 Key 和 Base URL不替代 12306-mcp也不碰你的 MCP 服务。2. 为什么模型通道会拖垮 12306-mcp 的查票2.1 AI Agent 的两段式请求你只看到了第二段Dify 的 AI Agent 节点Agent 策略选 MCP functionCalling一次对话其实包含两段请求。第一段是模型请求把用户问题、可用工具列表一起发给大模型让模型判断“要不要调工具、调哪个、传什么参数”。第二段才是工具请求Dify 拿着模型给出的参数通过 MCP-SSE 插件去调 mcphub再由 mcphub 转发给 12306-mcp。如果第一段模型请求失败——比如 Key 无效、Base URL 写错、模型名对不上——Agent 拿不到任何工具调用指令自然不会有第二段。你在界面上看到的就是“查票没返回”但日志里其实是模型调用报错。这就是为什么先核对模型通道比先改 MCP 地址更有效。2.2 火山引擎那一步换成 TaoToken 通道原文里模型用的是火山引擎的 DeepSeek v3填的是火山引擎的 API Key 和它自己的 Base URL。如果你手上没有火山引擎的额度或者想统一走一个通道可以把这一步换成 TaoToken去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建一个 Key然后在 Dify 模型供应商里把 Base URL 填成https://taotoken.net/api模型名按你实际要用的填。这样模型请求这一段就独立出来了排障时能明确区分“是模型没通”还是“是 MCP 没通”。2.3 MCP-SSE 地址和模型通道是两回事很多人把这两件事混在一起改。MCP-SSE 插件里填的是 mcphub 的地址形如http://你的服务器:8900/sse/group-id这个地址指向的是工具服务跟模型 Key 没有任何关系。模型通道在“模型供应商”里配MCP 地址在“工具/MCP-SSE”里配。排障时先把模型通道确认能出字再去动 MCP 地址顺序反了就会来回改、越改越乱。3. 前置准备TaoToken Key 与 Dify 模型供应商配置3.1 创建 Key 并确认 Base URL打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册登录后在控制台创建 API Key。创建完先复制保存页面刷新后一般不再完整显示。Base URL 统一用https://taotoken.net/api注意结尾不要多加/v1之类的路径Dify 的 OpenAI 兼容供应商会自己拼接。如果你后面要长期跑编码类或 Agent 类任务可以顺带看一下 Coding Plan 页面按自己的调用量选只是先验证模型通不通用按量 Key 就够了。3.2 在 Dify 里新增模型供应商进入 Dify 的“设置 - 模型供应商”找到 OpenAI-API-compatible 这一类不同版本叫法略有差异本质是自定义 OpenAI 兼容接口。新增一个供应商配置配置项填写值模型类型LLM模型名称你实际要调的模型名API KeyTaoToken 控制台创建的 KeyBase URLhttps://taotoken.net/api模型上下文长度按模型实际填不确定先填 64000保存后 Dify 会做一次连通性校验能保存成功说明 Key 和 Base URL 基本没问题。如果保存就报错先别往下走回到 Key 和 Base URL 这两项核对。3.3 把 AI Agent 的模型切过来回到你的 Chatflow打开 AI Agent 节点在“模型”一栏把原来火山引擎的 DeepSeek v3 换成刚配好的 TaoToken 通道下的模型。Agent 策略保持 MCP functionCalling 不变工具列表仍然是 MCP-SSE 提供的“获取 MCP 工具列表”和“调用 MCP 工具”这两个。这一步做完模型通道就独立于 MCP 配置了。4. 可复制配置模型通道 MCP-SSE 12306-mcp4.1 模型通道配置Dify 模型供应商供应商类型: OpenAI-API-compatible API Key: sk-你的TaoTokenKey Base URL: https://taotoken.net/api 模型名称: 按实际模型填写4.2 MCP-SSE 插件配置Dify 工具MCP Server URL: http://你的mcphub地址:8900/sse/你的group-id这里的 group-id 是 mcphub 里把 12306-mcp 加进分组后生成的那一串原文示例是bba57da5-5073-4fce-9b99-13f985d15f64。注意结尾是/sse/group-id不是/sse也不是/mcp。4.3 mcphub 的 mcp_settings.json12306-mcp 部分{ mcpServers: { 12306-mcp: { command: npx, args: [-y, 12306-mcp] } } }改完这个文件后重启 mcphub 容器在管理端确认 12306-mcp 显示在线并且已经加入到你 MCP-SSE 地址里用的那个分组。这两件事缺一不可服务在线但没进分组MCP-SSE 照样调不到。4.4 启动 mcphub 的命令docker run -p 8900:3000 \ -v $(pwd)/mcp_settings.json:/app/mcp_settings.json \ samanhappy/mcphub端口映射左边 8900 是你对外访问的端口MCP-SSE 地址里就填这个端口。如果你改了映射记得同步改 Dify 里的 MCP-SSE 地址。5. 验证请求先看模型出字再看工具调用5.1 第一步单独验证模型通道先不要走 Agent在 Dify 里新建一个最简单的 LLM 节点或者直接用“模型对话”类入口发一句“你好请回复四个字通道正常”。如果模型能正常出字说明 TaoToken 的 Key 和 Base URL 这一段通了。这一步是整个排障的分水岭出字了问题在 MCP不出字问题在模型通道。5.2 第二步验证 MCP-SSE 能列出工具在 AI Agent 节点里先问一个不涉及具体车次的问题比如“你现在有哪些可用工具”。如果 Agent 能通过 MCP-SSE 的“获取 MCP 工具列表”把 12306-mcp 的工具列出来说明 MCP-SSE 到 mcphub 这一段通了。列不出来就去核对/sse/group-id和分组配置。5.3 第三步发起真实查票请求模型和工具都通了之后再发真实请求我想购买 2025-05-20 这天从北京到合肥的票请帮我调用 12306-mcp 查询一下余票信息正常返回会包含车次、出发到达时间、余票等信息。如果这一步还是没返回看 Dify 的日志是模型请求报错还是 MCP 工具调用报错。日志里能明确看到是哪一段断的比在界面上猜快得多。5.4 成功结果长什么样模型通道正常时Agent 会先输出一段“我来帮你查询”的决策文字然后触发工具调用最后把 12306-mcp 返回的结构化数据整理成自然语言。整个过程你能在日志里看到两次请求一次模型请求、一次工具请求。两次都成功查票才会返回。只看到模型请求没有工具请求说明模型没决定调工具通常是提示词或工具描述的问题两次都有但工具请求报错才是 MCP 侧的问题。6. 本篇常见错排查6.1 报错模型请求 401 / 无效 Key先确认 Key 是不是复制完整有没有多余空格。再确认 Base URL 是不是https://taotoken.net/api不要写成带/v1的路径。如果 Key 是在别的项目里用过的确认它还有效、额度没耗尽。这一类错误在 Dify 日志里通常直接显示 401 或 unauthorized。6.2 报错MCP-SSE 连接超时先确认 mcphub 容器在跑docker ps能看到对应容器。再确认 Dify 容器能访问到 mcphub 的地址——如果 Dify 是容器部署localhost指的是 Dify 容器自己不是宿主机要用宿主机的可达 IP 或容器网络里的服务名。原文示例用的是公网 IP你按自己环境填。6.3 现象工具列表能列出但查票没返回这种多半是模型决策或参数问题。检查 AI Agent 的提示词有没有明确要求“查票必须调用 12306-mcp 工具”工具描述是否清晰。有时候模型会“自作主张”直接编一个答案而不调工具表现就是没返回真实数据。把提示词写死一点要求必须调用工具后再回答。6.4 现象改了 MCP 地址还是不行回到第 5.1 步先单独验证模型通道。如果模型通道本身就不通你改一百遍 MCP 地址也没用。排障最忌讳同时改多个变量一次只动一个地方改完立刻验证。6.5 现象12306-mcp 在线但分组里没有mcphub 管理端显示服务在线只代表进程起来了MCP-SSE 地址用的是分组必须把 12306-mcp 加进对应分组才会生效。这两步是分开的很多人只做了第一步。7. 配通模型通道后再排查 12306-mcp 就顺了把 Dify 的模型供应商换成 TaoToken 通道之后最大的好处是排障边界清晰了模型请求这一段和 MCP 工具调用这一段彻底分开。模型不出字就去核对 Key 和 Base URL模型出字但工具不调就去核对 MCP-SSE 地址和分组工具调了但报错才去看 12306-mcp 本身。如果你还想继续验证模型在不同任务下的表现可以到模型对话页面直接试如果是要长期跑编码类或 Agent 类工作流按调用量选个合适的 Coding Plan 更省心Key 的管理和新建都在 API Keys 页面接入细节可以对照接入文档。记住一句话TaoToken 只管模型 Key 和 Base URL12306-mcp 的地址永远填 mcphub 的/sse/group-id两者不要混。