免費開始

MCP 資源與工具:有何差異,以及何時該使用哪一種?

MCP/2026-11-09/作者:Presentation Intelligence

ee89a147c68eadfa01dc97c891e77d1c.png

模型上下文協定(MCP)為 AI 應用程式提供了一種標準方式,可將模型與外部內容及功能連接起來。對於建置 MCP 伺服器的開發人員而言,最重要的設計決策往往看似簡單:某項功能應該作為資源公開,還是作為工具公開?

這項區別會影響代理程式如何探索資訊、何時消耗 Token、能夠變更什麼,以及使用者如何評估風險。建模不佳的功能可能使整合更難理解:靜態參考資料變成不必要的函式呼叫,或具重大影響的動作看起來像是無害的內容。

實務上,MCP 資源提供應用程式可供 AI 系統使用的唯讀資訊。MCP 工具則公開模型可以請求的可執行操作。理解兩者之間的界線,是可靠、安全且節省 Token 的 MCP 伺服器開發基礎。

為何 MCP 中資源與工具的區別如此重要

AI 代理程式既需要資訊,也需要採取行動的能力。然而,資訊擷取與動作執行具有不同的信任模型。

模型可能需要資料庫結構描述,以了解哪些查詢可行。接著,它可能需要另一項功能來執行已核准的查詢。將兩者視為相同類型的整合會模糊意圖、增加權限管理的複雜度,並可能導致過度使用內容。

資源與工具的區別之所以重要,是因為它明確界定了:

  • 代理程式行為: 模型可以獨立檢查穩定的內容,而不必同時請求操作。
  • 安全邊界: 讀取權限和寫入權限可以分別審查、設定範圍及治理。
  • 使用者信任: 使用者可以區分代理程式是在了解系統,還是在變更該系統。
  • Token 效率: 可在需要時擷取相關內容,而非不加區分地插入每個提示中。
  • 伺服器設計: 功能更容易命名、記錄、測試及維護。

MCP 並不表示每個可用資源都會自動放入模型內容中。資源可透過 MCP 功能模型取得,而主機應用程式決定如何及何時呈現或讀取這些資源。當可用資訊範圍廣泛、敏感或載入成本高時,這種由主機控制的方法至關重要。

什麼是 MCP 資源?

MCP 資源是由 MCP 伺服器公開、以 URI 為基礎的唯讀內容單元。它們專為 AI 系統在完成任務時可能需要檢查、摘要、推理或引用的資訊而設計。

資源不只是任何檔案或通用 API 端點。在模型上下文協定中,它是可探索的內容資料單元,通常以 URI 識別。伺服器可以公開代表文件、設定、結構描述、專案中繼資料、知識庫頁面或產生的狀態資訊的資源。

常見範例包括儲存庫架構指南、`README` 檔案、OpenAPI 結構描述、資料庫資料表定義,或部署環境的目前設定。這些內容很有用,因為它們能在代理程式提出或執行工作之前,協助其了解系統的狀態與規則。

在協定層級,伺服器可透過 `resources/list` 宣告可用內容。接著,用戶端可透過 `resources/read` 擷取特定項目。這種分離方式可讓主機與代理程式在載入內容本身之前,先檢查有哪些可用項目。

當答案應從既有且穩定的資訊推導而來時,資源特別有用。例如,正在檢視陌生服務的代理程式,可以在建議整合方式之前先讀取包含該服務 API 合約的資源。資源提供證據與內容;它不會執行變更。

db0e6a29a056332dd64ec74d453b93b3.png

什麼是 MCP 工具?

MCP 工具是模型可透過 MCP 伺服器探索並呼叫的可執行功能。它們代表操作:代理程式可以要求已連接系統執行的任務。

工具可能會發出 API 請求、建立議題、執行部署檢查、產生報告、傳送訊息,或寫入資料庫。許多工具可能具有副作用,但副作用並非必要條件。例如,唯讀資料庫查詢仍可正確建模為工具,前提是它是一項具有輸入、執行邏輯及結構化結果的操作。

伺服器透過 `tools/list` 公開工具定義。每個定義都應傳達明確的名稱、說明及輸入結構描述。模型透過 `tools/call` 呼叫選定的功能,並提供符合工具預期輸入的引數。

關鍵設計原則是,工具要求伺服器執行工作。它的輸出可能是資料,但該資料是執行結果,而非可直接定址的內容成品。

例如,`create_linear_ticket` 是一個工具,因為它會讓外部工作流程建立新的票證。當伺服器必須使用提供的環境與服務參數查詢即時系統時,`get_deployment_status` 也可以是工具。兩項操作都需要明確呼叫,即使只有其中一項必然會變更狀態。

MCP 資源與工具:主要差異

功能MCP 資源MCP 工具
控制模型由主機控制的內容存取由模型請求的執行,受主機控制約束
主要用途提供唯讀資訊執行操作或運算
副作用無;唯讀可能有,但非必要
識別碼模型以 URI 為基礎具有輸入結構描述的具名函式
探索方式`resources/list``tools/list`
存取方式`resources/read``tools/call`
典型範例文件、結構描述、設定、中繼資料API 呼叫、建立票證、查詢、部署
最適用於可檢查的穩定內容可請求的參數化工作

此表格概括了一項實務界線:資源描述或公開資訊,而工具執行行為。在設計良好的 MCP 伺服器中,即使兩種功能都支援同一個更廣泛的工作流程,這項區別仍然清楚可見。

如何在資源與工具之間做出選擇

先從一個問題開始:代理需要檢視資訊,還是需要伺服器執行操作?

當資訊為唯讀、可自然定址且可作為有用的背景脈絡時,請使用資源。設定檔、產品規格、政策文件或資料庫結構通常都適合此模型。用戶端可以探索該項目、判斷其是否相關,並在不觸發業務邏輯的情況下讀取它。

當任務需要輸入、執行,或需要無法表示為靜態背景脈絡的結果時,請使用工具。建立支援工單、擷取篩選後的報告、啟動建置或更新記錄,都應透過工具完成。

有些工作流程同時需要這兩種基本元素。請考慮一個版本管理整合:

1. 將發佈政策與環境定義公開為資源。2. 提供一個工具,用於擷取所選服務的即時部署狀態。3. 提供另一個工具,用於觸發已核准的部署。

此設計可讓代理先瞭解政策與環境限制,接著請求目前的作業資料,最後才要求執行具有影響力的動作。這種分離方式更便於使用者稽核,也更容易讓產品團隊確保安全性。

避免將每個查詢都變成資源。如果資訊是動態、參數化或計算成本高,工具通常更合適。反之,若基於 URI 的資源能更清楚說明其用途,則避免將簡單且穩定的參考內容包裝成工具。

實用的 MCP 伺服器設計範例

儲存庫文件伺服器可能會將程式設計標準、架構決策記錄及服務擁有權對應表公開為資源。這些項目是具有可預測位址的實用參考資料。如果 `search_repository_docs` 功能接受關鍵字並在大量文件語料庫中執行目標式搜尋,則可作為工具。

對於資料庫整合,資料表結構和已核准的資料字典很適合作為資源。`run_readonly_query` 功能更適合建模為工具,因為它接受查詢或結構化篩選條件、驗證它們、對即時系統執行,並傳回結果。獨立的寫入工具絕不應隱藏在同一個含糊不清的介面之後。

專案管理整合遵循相同模式。資源可以提供衝刺看板的工作流程定義或議題標籤分類。工具可以建立工單、更新其狀態或指派負責人。資訊可協助代理提出明智的請求;工具則執行所要求的變更。

報告產生是另一個實用的邊界案例。固定的季度報告範本可以是資源。`generate_quarterly_report` 操作是工具,因為它接受時間範圍、選取即時資料、套用業務邏輯並建立輸出。若產生的報告成為其他代理應檢視的穩定成品,之後可將其公開為資源。

使用 Pi MCP 進行技術到簡報的工作流程

Presentation Intelligence (Pi) 支援 MCP 工作流程,協助需要將技術工作轉化為清晰利害關係人溝通內容的團隊。Pi MCP 並非用來取代程式碼編輯器、原始碼控制、資料庫或其他 MCP 伺服器。它處理交付流程中一個不同的步驟:將已核准的技術背景脈絡轉化為結構化且適合商務用途的簡報。

1. 業務邏輯優先於投影片樣式

在 Claude Code 等 AI 程式設計或代理環境中,團隊通常已具備製作強大簡報的原始素材:技術簡報、專案筆記、架構說明、發佈摘要,以及從程式碼庫衍生的發現。挑戰在於將這些素材轉化為適合受眾的敘事,而非一系列彼此脫節的投影片。

透過 Pi MCP,代理工作流程可將已定義的簡報或已核准的背景脈絡傳遞至 Presentation Intelligence,以建立邏輯優先的簡報結構。這對於工程路線圖更新、高階主管專案審查、技術銷售簡報、顧問報告及產品發佈敘事特別有用,因為其中的故事主線必須與底層實作同樣可信。

2. 產生流程在既有工作流程中保持可見

否則,建立簡報可能需要開發人員和產品團隊離開工作環境、手動重新整理技術筆記,並反覆查看另一個製作流程。Pi MCP 讓團隊能在既有代理工作流程中啟動簡報工作並追蹤產生進度。

當簡報取決於持續演變的專案背景脈絡時,這種連續性十分重要。團隊可以完善簡報內容、釐清受眾需求,並監控簡報工作流程,而不會將溝通視為事後補救。Pi 的多代理 AI 方法支援從複雜輸入轉換為專業結構與高品質商務簡報輸出,同時團隊仍可控制分享哪些背景脈絡。

在您的工作流程中試用 Pi MCP

安全且節省權杖的 MCP 整合最佳實務

良好的 MCP 伺服器開發始於範圍明確、易於理解的功能。將資源限定於代理真正需要的資訊。龐大且未分類的知識傾倒可能消耗權杖,卻無法改善決策。應優先採用較小的資源,並提供有意義的 URI、清楚的說明與可預測的界限。

對於工具,請使用精確的名稱與明確的輸入結構描述。`create_customer_ticket` 比 `manage_ticket` 傳達更多資訊,而將標題、優先順序與客戶 ID 分開的結構描述可降低歧義。傳回結構化且可採取行動的結果,讓代理無須重複呼叫同一工具即可判斷發生了什麼事。

盡可能分離讀取與寫入操作。既檢視又變更系統的工具會使權限審查更加困難。若某項操作具有重大影響,例如刪除記錄、傳送外部訊息或觸發正式環境部署,請套用最低權限存取原則,並在主機體驗中要求適當的使用者確認。

最後,請為漸進式揭露而設計。讓代理先探索功能,只擷取相關資源,並僅在需要操作時呼叫工具。此方法可減少權杖浪費、限制敏感資料暴露,並讓代理的推理路徑更容易理解。

b5e970e9629b61d40341ff0ebd241959.png

實務結論:將模型背景脈絡視為資源,將操作視為工具

MCP 設計最可靠的原則很直接:將持久、唯讀的背景脈絡公開為資源,將可執行、參數化的工作公開為工具。這條界線可改善安全審查、讓代理行為保持可解釋性,並協助團隊管理背景脈絡預算,而不犧牲實用的存取能力。

對於複雜工作流程,最強大的設計通常會結合兩者。資源提供代理所需的事實與限制;工具則提供受到審慎治理的方式來據此採取行動。Pi MCP 將相同模式應用於技術溝通,協助團隊將已核准的專案背景脈絡轉化為結構化簡報,同時留在工作已經進行的 AI 環境中。

常見問題(FAQ)

MCP 資源可以變更資料嗎?

不可以。MCP 資源是唯讀的背景脈絡項目。它們旨在提供用於檢視與推理的資訊,而非修改檔案、資料庫、服務或外部工作流程。

MCP 工具一定會有副作用嗎?

不一定。工具是可執行的功能,有些僅用於擷取或計算資訊。不過,由於工具可以執行操作且可能產生副作用,因此應具備清楚的名稱、輸入結構描述、權限,以及在適當情況下的確認要求。

如何為新的 MCP 功能選擇資源或工具?

當功能是可由 URI 自然識別的穩定、唯讀資訊時,請選擇資源。當功能需要輸入、執行邏輯、查詢即時系統或執行動作時,請選擇工具。當工作流程同時需要背景脈絡與執行時,請將兩者各自公開為獨立功能。

Pi MCP 如何支援開發人員工作流程?

Pi MCP 協助開發人員、AI 工程師與產品團隊,將技術簡報、專案筆記及從程式碼庫衍生的背景脈絡轉化為結構化、邏輯優先的簡報。它支援在相容的 AI 程式設計與代理環境中進行簡報產生及進度追蹤,包括 Claude Code 等工作流程。