MCP 核心概念指南:Resource、Tool 與 Prompt
MCP 核心概念指南:Resource、Tool 與 Prompt
用 HTTP 方法來類比 MCP 概念,幫助你更直覺地理解它們的用途與差異。
1. Resource ≈ HTTP GET (靜態資源)
就像你瀏覽網頁 (GET https://example.com/user/123) 一樣,MCP Resource 也是「讀取」一個狀態或內容。
特性:
- 唯讀 (Read-only)
- 無副作用 (Idempotent)
使用範例:
- 讀取檔案內容
- 讀取資料庫裡的某筆紀錄
- 讀取當前的系統負載
2. Tool ≈ HTTP POST (功能/函式)
這是真正對應 HTTP POST 的角色,代表「執行一個動作」。
特性:
- 通常會有副作用 (Side Effects)
- AI 使用工具 (Tools) 就像是在呼叫 API
使用範例:
- 寫入檔案
- 發送 API 請求
- 計算數值
- 執行資料庫查詢
什麼是副作用 (Side Effect)?
這裡的「副作用」跟一般講 HTTP POST / 函式式程式設計時的 side effect 概念是一樣的:除了「回傳一個結果」之外,還改變了系統或外部世界的狀態。
在 HTTP / REST 裡的副作用
以 POST 為例,常見的副作用包括:
- 在資料庫中新增 / 修改資料(例如建立一筆訂單、更新用戶設定)
- 觸發額外流程:寄 email、發通知、寫 log、推送訊息到 queue
- 重複呼叫會得到「不同結果」,例如同一個 POST 打兩次就產生兩筆訂單,因此被視為非冪等、具副作用
映射到 MCP Tool 的意義
在 MCP 裡,Tool 是「可以被模型呼叫來執行動作」的介面,所以也通常會有副作用:
- 呼叫 Tool 之後,可能會:
- 寫檔案、改設定、呼叫外部 API、觸發 CI/CD、建立工單等等
- 對比 Resources 這種偏「讀取 / 提供上下文」的東西,Tools 更像是 POST:
- model 用自然語言選擇要不要「執行這個會改變世界的動作」
總結: 副作用是指任何會讓系統、資料或外部環境在這次呼叫之後變得不一樣的效果,而不只是算一算再把結果丟回來。
3. Prompt (預設指令模板)
這是一個特殊的概念,不太像 HTTP POST,它更像是一個 "UI 模板" 或 "預填表單"。
用途: 它是給使用者 (Human) 用的,不是給 AI 用的。
情境範例:
假設你有一個常用的複雜指令:
「請幫我檢查這段程式碼的安全性、效能和可讀性,並列點說明」
你不用每次都打這麼多字,你可以把這個指令做成一個 mcp.prompt。當你在 Claude 介面上選擇這個 Prompt 時,它會自動把這些字填入對話框,讓你發送給 AI。
類比: 它比較像是在 Postman 裡的 "Saved Request" (儲存的請求模板),或者是網頁上的「快速填單按鈕」。
總結對照表
| MCP 概念 | HTTP 類比 | 角色 | 誰來用? | 目的 |
|---|---|---|---|---|
| Resource | GET |
資料提供者 | AI | 獲取上下文 (Context) 以便回答問題 |
| Tool | POST |
功能執行者 | AI | 執行操作、計算、改變狀態 |
| Prompt | (無直接對應) | 預設指令模板 | 使用者 (你) | 快速重用常見的提問模式 (Slash Command) |
一句話總結
Resource 給 AI 讀資料,Tool 給 AI 做事情,Prompt 給你省打字。
- ← Previous
Cursor 怎麼跟 Server 講話?不是用 PID 嗎? (Pipe vs PID) - Next →
Cursor 如何決定找哪個 MCP Server? (MCP 路由機制解析)