很多團隊把 2026 年的 Claude 功能清單當成「模型又變強了」的新聞稿:Messages API、Tool Use、MCP、Structured Output、Agent 迴圈——名字越來越多,程式碼裡卻仍是一次 messages.create 裡塞 prompt、工具和 JSON 期望。真正會炸的往往不是回覆文采,而是工具參數對不上 schema、MCP 權限面過大、下游用正規擷取 JSON。下文要驗證的是:這五塊是不是同一層能力?非對稱結論:分水嶺在 schema 約束與執行邊界,不在模型名。
面向要在生產裡接 Claude API 的開發者:把 Claude API、Tool Use、MCP 連接器、Structured Output 與 Agent 迴圈按「入口 / 執行 / 上下文」分類,再用對照表和場景矩陣決定何時自建工具、何時走遠端 MCP、何時必須開 strict。MCP 協定本身見站內MCP 是什麼:AI 界的 USB 介面;IDE 側 Skills 分層見Claude Skills 與 Cursor Rules 對照。本篇只講 API 側如何拼成可維運的 Agent。
1. 為什麼清單越長,線上越容易碎?
2025 年底到 2026,Anthropic 把「能調工具」「能連 MCP」「能按 JSON Schema 吐結構」從實驗能力推到 Messages API 主路徑:output_config.format 取代舊的 beta output_format;工具定義可設 strict: true,用語法約束取樣保證參數合法;遠端 MCP 可透過 mcp_servers + type: "mcp_toolset" 直接掛進同一次請求。文件寫得很清楚,工程上卻容易做成三件事疊在一塊:
- 把「給使用者看的自然語言」和「給後端 ingest 的 JSON」塞進同一次無 schema 的文字回覆;
- 把本機指令碼、SaaS、以及帶寫入權限的 MCP 工具列成一張平鋪
tools表,模型自己挑; - 把 Agent 理解成「把同一條 user 訊息迴圈 20 次」,卻不設最大步數、不稽核
tool_use。
結果是:展示能跑,工單裡全是 JSONDecodeError、錯誤的列舉、以及 MCP 伺服器被當成萬能 shell。問題不在 Claude API「功能不夠」,而在沒有把入口、執行面、上下文面拆開。若你的 Agent 還要在 macOS 上跑 xcodebuild,執行面還會落到真實機器——這與GitHub Actions 自建 macOS Runner 是同一類維運問題,不是提示詞問題。
2. 五層分別是什麼?(What)
2.1 Claude API — 對話入口,不是 Agent 產品
Claude API(Messages)是把模型、訊息、系統提示、快取和計費接到你系統的入口。它不負責替你執行工具,也不保證文字一定能 json.loads。把它當「聊天完成」用完全合法;一旦下游要寫庫、改工單、觸發 CI,就必須疊加後面幾層。選型時先問:這次呼叫的消費者是人,還是解析器?
2.2 Tool Use — 自建執行面
Tool Use 讓模型在回覆裡產出 tool_use 塊,你在伺服器端執行後再把 tool_result 送回。適合你擁有實作的內部 API:查庫存、建立工單、跑倉庫指令碼。2026 年生產建議在工具定義上加 strict tool use:strict: true 與 input_schema 一起走語法約束,減少「字串 2 當成數字」這類下游崩潰。代價是 schema 必須落在官方支援的 JSON Schema 子集裡。
2.3 MCP 連接器 — 遠端工具面,不是再寫一套 SDK
Messages API 的 MCP connector 讓你在請求裡宣告遠端 MCP 伺服器(URL、OAuth),再用 mcp_toolset 決定啟用全部、白名單或黑名單工具。它解決的是工具探索與傳輸:不必為每個 SaaS 手寫 Anthropic 工具 JSON。它不自動等於安全——寫檔案、執行 shell 的 MCP 仍要把權限收到閘道或 allowlist。協定原理與本篇「API 怎麼掛伺服器」互補,不要把兩篇文章當成同一篇百科。
2.4 Structured Output — 給解析器的上下文,不是給讀者的文風
Structured Output 用 output_config.format 的 json_schema 約束模型文字區塊必須是合法 JSON。適合抽取欄位、產生報表物件、給下一個服務當契約。它和 Tool Use 正交:你可以只要結構化文字、只要嚴格工具、或兩者同開。不要用它替代工具呼叫——JSON 再漂亮也不會替你打 HTTP。
2.5 AI Agent — 迴圈策略,不是第五個 API 產品
AI Agent 在 Claude 語境裡通常是:模型選工具 → 你執行 → 結果回灌 → 直到停。停的條件必須是你寫的:最大輪次、禁止的工具名、預算、人工確認。Agent 可以只用自建 Tool Use,也可以混 MCP;Structured Output 適合迴圈結束時的最終交付物。沒有迴圈控制的「全自動」只是無限重試。
3. 核心對照表(How Compare)
| 能力 | 入口 | 執行能力 | 上下文 | 適合族群 |
|---|---|---|---|---|
| Claude API | Messages / SDK messages.create |
產生文字與多模態理解,不執行外部副作用 | messages + system + 快取區塊 | 聊天、草稿、人工閱讀的摘要 |
| Tool Use | 請求裡的 tools[] 自建定義 |
由你的後端執行函式,可 strict: true |
工具 schema + 往返 tool_result | 有內部 API、要稽核每一次呼叫的團隊 |
| MCP 連接器 | mcp_servers + mcp_toolset |
遠端 MCP 工具;可多伺服器、OAuth | 工具清單由伺服器探索,需裁剪 | 要接現成 MCP、少手寫工具 JSON 的整合 |
| Structured Output | output_config.format = json_schema |
不執行工具;保證文字 JSON 可解析 | schema 進入取樣約束 | ETL、工單欄位、下游強型別服務 |
| AI Agent 迴圈 | 你的編排器(while / 佇列 / 工作流引擎) | 多次 Tool Use 或 MCP,直到停條件 | 累積 tool_result,需防上下文膨脹 | 要多步改系統狀態、且能設預算的團隊 |
| 對照項 | 自建 Tool Use 你寫函式 | MCP 連接器 遠端探索 |
|---|---|---|
| 所有權 | 實作、日誌、限流全在你倉庫 | 工具語意由 MCP 服務方定義 |
| 變更速度 | 改 schema 要發版你的 Agent | 伺服器增工具會進入探索集,必須 allowlist |
| 嚴格參數 | 官方 strict 與自建 schema 對齊最直接 | 跨 MCP 用戶端時勿把 API 專屬欄位硬塞進通用 schema |
| 適合 | 核心業務寫入路徑、合規稽核 | 唯讀 SaaS、標準化唯讀檢索、多工具拼盤 |
4. 場景怎麼選(Decision)
先定消費者和副作用,再選層。下面矩陣按「你會不會改外部狀態」分流。
| 場景 | 優先組合 | 不要做 |
|---|---|---|
| 給營運看的週報 | Claude API 純文字即可 | 為了「顯得進階」強行 JSON Schema |
| 從郵件抽欄位入 CRM | Structured Output + 伺服器端校驗 | 用 Tool Use 假裝「抽欄位也是工具」卻不寫庫 |
| 建立 Jira / 關告警 | 自建 Tool Use + strict: true + 冪等鍵 |
把寫入權限 MCP 整包丟進請求 |
| 唯讀查檔案 / 日曆 | MCP 連接器 + 工具白名單 | 開啟所有工具「以後可能用得上」 |
| 多步修倉庫 + 跑測試 | Agent 迴圈 + 自建 git/test 工具 + 最大步數 | 無上限 while True;在筆電上通宵跑 xcodebuild |
| 迴圈結束要給下游 API 契約 | 最後一輪 Structured Output(或單獨 parse 呼叫) | 從帶 tool_use 的混雜文字裡正規擷取 JSON |
5. 推薦組合(Stack)
允許疊加,不要追求「只選一個功能名」。
- 個人指令碼 / 內部 bot:Claude API + 2–5 個自建工具 + strict。MCP 先別上,減少金鑰面。
- 成長型 SaaS 客服 Agent:自建寫入路徑工具(工單)+ MCP 唯讀知識庫 + 結束時 Structured Output 給質檢。
- 平台 / 多團隊:MCP 閘道統一鑑權與限流;Agent 編排器管步數與預算;核心帳務仍自建 Tool Use。
- macOS / iOS 建置 Agent:工具裡只暴露「在指定 runner 上觸發作業」,真正的
xcodebuild跑在穩定雲 Mac,而不是讓模型直接 SSH 亂敲。
和 IDE 裡的 Skills 怎麼配合:API Agent 負責對系統有副作用的迴圈;Claude Code Skills 負責開發者本機/倉庫裡的 SOP。兩邊都可以講 MCP,但金鑰與寫入權限不要共用一張表。
6. 常見誤區
「上了 MCP 就不用寫 Tool Use」→ 寫入路徑、合規、冪等仍應自建並稽核。「Structured Output 等於 Agent」→ 它只約束文字 JSON,不執行副作用。「strict 可以隨便套複雜 JSON Schema」→ 須遵守官方子集;過深的 oneOf / 動態 key 會失敗。「把舊 beta→ 遷移期相容,新程式碼只用output_format和新output_config混用當兩套產品」output_config.format。「模型越強,越不需要最大步數」→ 步數是錢和爆炸半徑,與智商無關。「MCP 工具 schema 原樣塞→ API 專屬欄位在通用 MCP 用戶端上可能不相容,要按通道剝離。strict給所有用戶端」
7. 七步落地
- 列副作用:唯讀查詢、寫內部庫、觸發 CI、碰生產。每類單獨一張工具表。
- 先寫 1 個自建工具:最小
input_schema+strict: true,打通 tool_use → 執行 → tool_result。 - 給人看的和給機器的分開:對機器的交付用 Structured Output 或單獨 parse 呼叫。
- MCP 只掛唯讀:
mcp_servers+ allowlist;寫工具繼續自建。 - 加上迴圈外殼:最大 N 步、逾時、token 預算、拒絕未宣告工具名。
- 觀測:記錄每次 tool 名、參數雜湊、耗時、是否 schema 失敗;不要只 log 最終 assistant 文字。
- 把重執行綁到固定節點:macOS 作業走雲 Mac / 自建 runner,Agent 只發「作業 ID」,不把筆電當生產。
# 偽程式碼:生產請用官方 SDK
POST /v1/messages
{
"model": "claude-opus-4-6",
"max_tokens": 2048,
"tools": [{
"name": "create_ticket",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"severity": {"type": "string", "enum": ["low","high"]}
},
"required": ["title","severity"],
"additionalProperties": false
}
}],
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"ticket_id": {"type": "string"},
"next_action": {"type": "string"}
},
"required": ["ticket_id","next_action"],
"additionalProperties": false
}
}
},
"messages": [{"role": "user", "content": "開一張高優先級工單:建置逾時"}]
}
模型名以你帳號控制台與Tool Use 官方概述為準;上線前在預發核對 output_config 與 strict 是否已退出 beta 標頭相依。
8. 總結
Claude API 解決「怎麼把模型接到系統」;Tool Use 解決「自建執行從哪進、參數如何被保證」;MCP 解決「遠端工具怎麼探索、怎麼裁剪」;Structured Output 解決「給解析器的契約」;AI Agent 解決「迴圈何時停、爆炸半徑多大」。五者不是五個並列的「新功能新聞」,而是一層入口加兩層執行面加一層交付格式加一層你必須自己寫的編排。先畫副作用邊界,再打開 MCP 和迴圈,展示能進生產。
延伸閱讀:Structured outputs · Strict tool use · MCP connector · 站內MCP 協定入門
FAQ
Agent 調得動工具,還得有地方把建置跑完
Claude 的 Tool Use 和 MCP 只能把「意圖」變成一次次呼叫;真正的 xcodebuild、Fastlane 和簽章發生在 macOS 上。Hashvps 雲端 Mac mini M4 提供 SSH/VNC、獨享 IPv4 與可重現的 Homebrew——同一套 MCP 唯讀工具指向倉庫,寫入路徑作業打到固定 runner,而不是讓模型對著變化無常的筆電 shell。
若你正在把 Claude API Agent 接到 iOS/macOS 流水線, Hashvps 云 Mac 是性價比很高的執行節點—— 了解套餐方案,讓迴圈在遠端按預算跑完。