MCP 有兩端:你的 agent 去「呼叫」別人(使用方),以及把你的東西「開放」給別的 AI 呼叫(提供方)。這頁把「提供方」用 UI 做出來的真實架構畫清楚:這版怎麼靠外掛開成 MCP server、為什麼只有 Chat/Workflow 能開(Agent 不行)、跨機器被別的 AI 呼叫的完整閉環,以及它跑的是哪一版 MCP 協定。全部照真實自架 + 跨機器實測(Dify 1.14)整理,範例為虛構訂單 demo。
flowchart LR
C(("🤖 別的 AI
Claude / Cursor / 另一台")):::c
C ==>|"MCP"| EP["🔌 Dify MCP 端點
/e/…/mcp"]:::ep
EP ==> APP["🖥️ 你的 Chatflow app"]:::app
APP ==> SYS[("🗄️ 你的系統
RAG · API · DB")]:::sys
APP -.->|"可開"| OK["✅ Chat / Workflow"]:::good
APP -.->|"開不了"| NO["❌ Agent(不支援 blocking)"]:::bad
classDef c fill:#dbeafe,stroke:#2563eb,color:#17335e
classDef ep fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
classDef app fill:#ede9fe,stroke:#7c3aed,color:#4c1d95
classDef sys fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef bad fill:#fdecea,stroke:#c0392b,color:#7f1d1d
別的 AI 當 client,連你的 MCP 端點 → 其實是在跑你的 Dify app → app 背後接你的系統。對它來說,你整個 app 濃縮成一個「問就有答」的工具。
實測:這版 Dify 的「發佈」下拉、app「概覽」頁,任何型別都沒有 MCP 發佈開關。官方文件說 v1.6.0+ 有原生功能,但這個 build 沒放進可見位置。UI 正解是裝外掛:
| 步驟 | 做什麼 |
|---|---|
| 1 | 外掛 → 探索 Marketplace → 搜 mcp-server(「make dify's workflow as a MCP server」)→ 安裝 |
| 2 | 外掛 → 點該外掛 → 端點(Endpoints)→ 新增端點 |
| 3 | 填四格(見下)→ 存 → 得到 /e/<id>/mcp(+ /sse) |
| 欄位 | 填什麼 |
|---|---|
| App | 要對外開放的 app |
| App Type | 只有 Chat / Workflow(Agent 不行) |
| App Input Schema | 一整個 MCP 工具定義 JSON(name / description / inputSchema),不是只填參數 |
| Auth Bearer Token | 當密碼(MCP 網址 = API key) |
{
"name": "query_order",
"description": "查詢訂單狀態,回傳原文",
"inputSchema": {
"type": "object",
"properties": { "query": { "type": "string", "description": "使用者問題" } },
"required": ["query"]
}
}
Agent Chat App does not support blocking mode。Agent 是多步 ReAct、只能串流回應;而外掛用 blocking(等一個完整答案)呼叫,對不上。結論:想對外開 MCP,就把邏輯做成 Chatflow——它能掛工具、接知識庫、忠實呈現,又支援 blocking。
flowchart LR
A(("🤖 另一台的 AI
MCP client")):::a
A ==>|"initialize → tools/list → tools/call"| M["🔌 你的 Dify MCP 端點"]:::m
M ==> CF["🖥️ Dify Chatflow
忠實呈現"]:::cf
CF ==> S[("🗄️ 你的系統")]:::s
S ==>|"真資料 原路回傳"| A
classDef a fill:#dbeafe,stroke:#2563eb,color:#17335e
classDef m fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
classDef cf fill:#ede9fe,stroke:#7c3aed,color:#4c1d95
classDef s fill:#dcfce7,stroke:#16a34a,color:#14532d
顯示 localhost 只是 Dify base URL 沒設;把主機換成公開網域就對外通。實測:另一台機器的 AI 用 MCP client 走完 initialize → tools/list → tools/call,跑起你的 Chatflow、拿到系統真資料。
| 版本(日期號) | 定位 |
|---|---|
2024-11-05 | 🚀 launch 最初版 ← 這台 Dify 談的就是這版(最舊) |
2025-03-26 | 加 OAuth 等 |
2025-06-18 | 結構化輸出 / elicitation |
2025-11-25 | 目前正式最新 |
2026-07-28 | RC(launch 以來最大改版:stateless 核心) |
tools/list / tools/call 向後相容,基本串接照跑;新版功能(結構化輸出、OAuth、stateless)這台還沒有 → 要新特性得等升級,或用跟得較前的 MCP server(n8n / FastMCP)。
📚 回課綱總表 →