Agent 與 MCP
MCP 三大原語:tools、resources、prompts 怎麼分工
MCP 三大原語:tools、resources、prompts 怎麼分工
上一篇我們搞懂了 MCP 是什麼。這一篇進到核心:MCP server 對外提供的東西,其實就三種,官方叫它們三大原語(primitives):tools、resources、prompts。名字都很直白,但很多人分不清楚什麼時候該用哪個。
分辨三者的關鍵,說到底就一句話:不是功能,而是控制權在誰手上。tools 服務模型、resources 服務應用、prompts 服務使用者。這篇帶你把這句話拆開來看。
你將學到什麼
tools:模型控制
Claude 自己決定何時呼叫,用來擴充模型的能力。
resources:應用控制
像 GET 端點一樣,把資料交給你的程式使用。
prompts:使用者控制
預先打磨好的指令範本,使用者一鍵觸發。
挑選原則
一張對照表加一句口訣,幫你決定該用哪一個。
一句話總綱:看控制權在誰手上
同樣是「從 server 拿東西」,三個原語的差別在於:由誰決定什麼時候動用它。Claude 自己決定的是 tools,你的應用程式碼決定的是 resources,使用者親手觸發的是 prompts。這個分法也剛好對應應用堆疊的三層:模型層、程式層、介面層,每個原語各自服務一層。這條線畫清楚,後面全部都好懂。
tools:模型控制的能力擴充
tools 完全由 Claude 控制:模型自己判斷何時呼叫、呼叫哪一個,結果也直接被 Claude 拿去完成任務。它適合把「新能力」交到模型手上。例如你請 Claude 用 JavaScript 算出 3 的平方根,決定動用程式執行工具的是 Claude 自己,不是你的程式,也不是使用者。
拿文件管理當例子,read_doc_contents 與 edit_document 這兩個工具,就是讓 Claude 能自主讀寫文件的能力來源:你只要描述需求,Claude 自己決定先讀哪份、改哪段。
判斷該不該做成 tool 有個簡單的問法:這件事有沒有「動作」的成分?會改變狀態、會執行程式、會對外查詢的,交給 tools,讓 Claude 自己抓時機;純粹取資料給程式用的,往往下一個原語更合適。
resources:應用控制的資料通道
resources 用來把資料暴露給 client,角色很像 HTTP 伺服器的 GET 端點:拿資料,不做動作。控制權在你的應用程式碼手上,由程式決定什麼時候抓、抓來做什麼,典型用途是填 UI,或替對話補上脈絡。
「文件提及」功能就是個好例子:使用者輸入 @ 時,程式抓文件清單做自動完成;使用者送出帶 @report.pdf 的訊息時,程式把那份文件的內容直接塞進要給 Claude 的 prompt。整個過程 Claude 不需要呼叫任何工具,資料在對話開始前就到位了,回應也就更快。
resources 有兩種型態:
- direct resource:固定不變的 URI,例如
docs://documents,適合不需要參數的查詢。 - templated resource:URI 裡帶參數,例如
docs://documents/{doc_id},SDK 會自動解析參數並傳給你的函式。
在 MCP Inspector 裡測試時,這兩種會分開列:Resources 分頁列出 direct resource,Resource Templates 分頁列出帶參數的範本,點進去填參數,就能看到 client 將收到的實際回應結構與 MIME type。
Claude 介面裡「從 Google Drive 加入檔案」這類功能,背後就是 resources 的思路:由應用決定要秀哪些文件、怎麼把內容注入對話脈絡。
prompts:使用者控制的工作流
prompts 是 server 作者預先寫好、反覆測試過的高品質指令範本,由使用者透過按鈕、選單或 slash 指令親手觸發。使用者當然可以自己打「把 report.pdf 轉成 markdown」,也會有結果;但用上作者打磨過、處理過各種邊角情況的範本,結果會穩定得多。
這正是 prompts 的價值主張:server 作者把領域專業封裝成範本,使用者不必自己變成 prompt 工程師。Claude 介面聊天輸入框下方的那些工作流按鈕,就是 prompts 的實際樣貌:一鍵啟動預先最佳化好的流程。
prompts 跟 server 的領域綁得越緊越好。文件管理的 server 適合提供格式化、摘要、分析文件的範本;資料分析的 server 則適合提供產報表、做視覺化的範本。給 prompt 作者留幾個實務建議:
- 聚焦在 server 核心用途的任務上,不做萬用範本。
- 指令寫得具體明確,不要含糊其辭。
- 用不同輸入反覆測試,把邊角情況處理掉。
- 描述寫清楚,讓使用者一眼知道這個 prompt 能做什麼。
- 設計時想著它會跟 server 的 tools 與 resources 一起工作。
一張表幫你選
| 原語 | 控制者 | 適合場景 | 介面上的樣子 |
|---|---|---|---|
| tools | 模型(Claude) | 給 Claude 新能力,讓它自主完成任務 | Claude 執行程式、查資料的背後動作 |
| resources | 應用程式碼 | 把資料帶進 UI 或對話脈絡 | @ 提及、從雲端硬碟加入檔案 |
| prompts | 使用者 | 可重複觸發的預定義工作流 | slash 指令、工作流按鈕 |
最後提醒:這是幫你選型的高階原則,不是硬性規定。實際專案裡三者混用非常正常,一個 prompt 觸發之後,Claude 往往還會再動用 tools 完成任務,你的應用也同時靠 resources 把文件內容端上桌。
延伸學習
HE101|Harness Engineering Foundation(3 小時)
三小時的地圖課,不是操作課。把 Model 與 AI System 分開,拆解一套 AI Harness 的八個組成(Goal、Context、Knowledge、Rules、Tools、Workflow、Evaluation、Iteration),再帶你逆向拆解四個你已經在用的系統,最後畫出自己的第一張 Harness Blueprint。5 章 27 課,附學員講義 PDF 與術語速查表。
NT$ 2,599
知識變現切割地圖(高清版下載,不含講義)
《知識變現切割地圖》的高清完整版。一張圖把語氣、心理、內容、產品、再利用五層模組攤在同一個平面上,讓你回頭盤點已有內容、規劃新的轉化節奏。課程附上地圖本身的完整解說與應用指南,教你怎麼讀這張圖、從哪一層開始用。完整版 PDF 可下載,放大看細節不會糊。
NT$ 680

