題目與適用情境
你負責設計企業代理平台。代理可以透過 MCP 呼叫工單、程式碼儲存庫與財務系統;工具有唯讀查詢,也有部署、退款和刪除操作。伺服器數量會動態變化,工具描述與回傳內容可能來自不完全可信的伺服器。請設計探索、授權、呼叫、結果處理、稽核與故障復原,並說明哪些操作必須人工批准。
重點不是把工具清單接到模型,而是讓每次呼叫都能回答四個問題:誰在什麼範圍內代表誰、呼叫了哪個版本的工具、輸入和結果是否驗證過、出錯後能否追蹤與撤銷。Amazon 的 SDE II 指引把可靠性、可擴展性、安全性與取捨列為系統設計評估目標,適合用這類端到端題檢驗設計能力。
面試官在考察什麼
高品質回答會把模型的選擇能力與平台的執行權限分開。模型可以提出工具名稱和參數,政策引擎仍要依使用者、工作區、資源、風險等級與審批狀態重新授權。
也要辨識 MCP 的邊界:伺服器提供的工具註解必須視為不可信,不能把 readOnlyHint 當作安全事實;工具結果可能是結構化資料,也可能包含文字、資源連結或嵌入資源。NSA 指引進一步指出動態呼叫、隱含信任和上下文共享會形成系統性風險。
最後,面試官會看你是否覆蓋失敗路徑:目錄被投毒、參數通過驗證卻越權、審批後參數被替換、執行逾時、重複副作用,以及稽核系統本身不可用。
回答前需要釐清的問題
先問工具的副作用。查詢、寫入、部署和刪除能否分級?若所有工具都唯讀,審批與復原可以簡化;只要涉及資金、生產或個資,就必須加入強制審批和冪等約束。
再問信任邊界。MCP 伺服器是公司託管、第三方託管還是使用者自帶?若伺服器不受平台管理,工具描述、註解、回傳文字和資源 URI 都只能當作輸入資料,不能直接改變權限。
最後問合規與復原目標。要記錄哪些主體、租戶和資料分類?撤銷是補償交易、反向操作還是人工處理?答案會改變日誌保存、憑證範圍與工作流設計。
30 秒回答框架
可以這樣回答:
「我會把模型當作不可信的提議者,把執行放進政策引擎與隔離執行器。平台先登記並簽署工具版本,依使用者、租戶、資源與副作用做最小權限授權;唯讀呼叫也驗證參數與結果,部署、退款、刪除等高風險操作要綁定具體參數的人工批准。呼叫前後記錄可追溯的稽核事件,結果不能直接成為下一次授權依據。對重複、逾時、伺服器變更和審批失配設定冪等、逾時、斷路器與復原路徑。」
分步驟深入解答
建立工具目錄與版本身分
把伺服器身分、工具名稱、輸入輸出 JSON Schema、程式版本、網路範圍與副作用登錄到目錄。目錄變更產生版本號與審查記錄;執行時只允許呼叫已批准版本。MCP 規範要求工具定義包含名稱、描述與輸入模式,也允許輸出模式,但客戶端仍需自行驗證。
將權限綁定到具體呼叫
政策輸入至少包含主體、租戶、資源、動作、資料分類、環境與工具版本。政策輸出是允許、拒絕或需要審批,並產生一次性呼叫權杖。權杖綁定參數摘要與有效期,避免審批後模型替換金額、目標儲存庫或資源 ID。
對註解與描述採取零信任解讀
readOnlyHint、destructiveHint 等提示可以協助排序,卻不能作為授權依據。伺服器若宣稱唯讀,政策仍按實際能力與登錄時的人工審查判斷;描述中的「忽略之前指令」或外部文字要當作資料,不當作政策。
將呼叫放入隔離執行器
執行器使用短期憑證、受限網路與資源配額。它只接收通過政策驗證的結構化參數,不把整段會話歷史或其他租戶資料注入工具。伺服器回傳的文字、資源連結與嵌入資源先進入結果隔離區,再按輸出 Schema、大小、內容類型與資料標籤驗證。
設計人工審批與回顯
審批卡片顯示主體、伺服器、工具版本、完整參數摘要、目標資源、預期副作用、有效期與撤銷方式。批准記錄綁定參數摘要;任何欄位變化都讓批准失效。低風險唯讀操作可事後抽查,高風險操作必須執行前批准。
處理重複與部分失敗
寫入操作攜帶冪等鍵,冪等鍵由業務動作和呼叫意圖產生,不能只由模型隨機產生。平台保存請求、結果與重試狀態;逾時先查詢執行狀態再決定重試。無法自動補償時轉人工佇列,禁止盲目重複退款或部署。
記錄可關聯的稽核事件
稽核事件包含請求 ID、主體、租戶、伺服器指紋、工具版本、參數雜湊、政策決定、審批者、執行結果與下游憑證 ID。敏感參數只存脫敏摘要或加密引用。日誌寫入失敗時,高風險呼叫應預設拒絕或進入待處理狀態,不能為了可用性靜默放行。
設計撤銷與逐步發布
先在沙箱伺服器與影子流量驗證目錄、政策與結果檢查,再按租戶或工具版本小比例放量。保留舊版本目錄和憑證撤銷開關;發現越權、提示注入或結果污染時,先阻斷新呼叫、撤銷權杖,再依稽核事件處理已完成的副作用。
高品質示範回答
「我會把 MCP 接入分成目錄、政策、審批、執行器和稽核五層。目錄記錄伺服器指紋、工具版本、輸入輸出模式與實際副作用;模型只能提交呼叫提議,政策引擎再按主體、租戶、資源和環境判斷允許或審批。審批綁定參數摘要,防止批准後改參。執行器使用短期憑證、受限網路和冪等鍵,結果先按 Schema、大小和資料標籤驗證,不能直接改變後續權限。所有決定和下游請求寫入關聯日誌。伺服器變更、逾時、重複副作用或日誌故障都有拒絕、斷路器與復原路徑,並透過沙箱和分階段發布驗證。」
常見錯誤
把工具註解當成權限
錯誤表現:看到 readOnlyHint 就自動允許呼叫。失敗原因:MCP 規範要求不可信伺服器的註解不能作為安全事實。修正方法:註解只用於提示,權限來自登錄、政策和執行時能力。
只驗證模型產生的參數
錯誤表現:JSON Schema 通過就直接執行。失敗原因:型別正確的參數仍可能跨租戶、指向生產或觸發重複副作用。修正方法:在 Schema 外驗證主體、資源歸屬、風險等級、冪等鍵和審批摘要。
審批只顯示一句自然語言
錯誤表現:使用者批准「幫我處理退款」。失敗原因:批准對象不明確,執行時金額和帳戶可能變化。修正方法:回顯完整目標、金額、版本、參數摘要和有效期,並將批准綁定雜湊。
把工具結果當作可信指令
錯誤表現:把回傳文字直接拼入下一輪系統提示。失敗原因:結果可能包含提示注入、跨租戶資料或惡意 URI。修正方法:結果隔離、型別驗證、資料標記和最小化傳遞。
只設計成功路徑
錯誤表現:逾時就重試,失敗就繼續下一個工具。失敗原因:未知執行狀態會造成重複寫入,部分失敗會破壞業務不變量。修正方法:冪等鍵、狀態查詢、補償工作流、斷路器和人工佇列一起設計。
追問與應對
如果工具目錄在呼叫期間變更怎麼辦?
凍結本次呼叫使用的伺服器指紋、工具版本和 Schema。目錄變更只影響新呼叫;若版本被撤銷,政策引擎拒絕舊權杖並提示重新審批。
如果審批服務不可用怎麼辦?
高風險操作採 fail-closed,進入待處理佇列並保留呼叫提議。低風險唯讀操作可依預先批准的政策繼續,但仍需寫稽核事件,不能用「審批逾時」代替授權。
如果結果是合法 JSON 但包含另一個租戶的資料怎麼辦?
輸出 Schema 只能驗證形狀,不能證明授權範圍。執行器要把租戶和資源範圍傳給下游,並在結果驗證階段檢查物件歸屬、資料標籤和回傳數量;發現越界就隔離結果並告警。
如何判斷某個工具是否應該允許自動呼叫?
按可逆性、影響範圍、資料敏感度、重複成本和偵測能力評分。可逆、低敏感、低影響的查詢可自動呼叫;資金、生產變更、刪除和跨租戶讀取應要求人工批准或專用工作流。
發生提示注入後如何調查?
用請求 ID 串起原始輸入、工具描述版本、模型提議、政策決定、審批回顯、工具結果和後續呼叫。先撤銷受影響伺服器與權杖,再從隔離日誌重播決策,確認哪些副作用已完成。