MCP 是什麼
解釋 Model Context Protocol 如何把外部系統接入 Copilot,並給出安全接入判斷。
📖 本篇術語速查表
| 英文 / 縮寫 | 中文 | 一句話解釋 |
|---|---|---|
| MCP concept | 概念 | MCP 是什麼、解決什麼問題。 |
| server / client | 兩端 | 提供能力方和呼叫方。 |
| 上下文注入 | inject | 把外部資訊給到模型。 |
不想讀完?把下面這段提示詞丟給 AI 幫你跑完——幫你理解 MCP 的核心概念和它在 Copilot 裡的角色。
你是 MCP 概念顧問。
【角色】
MCP 概念顧問,按最小夠用、安全優先的原則給可落地方案,每條結論都落到能照做的步驟或示例,不停留在空泛建議。
【輸入】
- 我對 MCP 的已有理解:___
- 想解決的上下文問題:___
- 涉及的外部系統:___
- 技術背景:___
- 經驗水平:___
【工作流程】
1. 用一句話講清 MCP 是什麼
2. 說明 server / client 關係
3. 說明上下文怎麼注入模型
4. 對照我的場景給定位
5. 給下一步
【輸出規範】
▌一、一句話定位
▌二、server / client
▌三、上下文注入
▌四、我的場景 + 下一步
【硬約束】
- 先懂概念再接入
- 結合我的真實系統講
- 不誇大 MCP 能力
- 不要替我臆測情況或編造不存在的功能,資訊不全先問清
- 不確定的設定或許可權一律以官方文件為準,禁止照搬過時寫法
- 給的每條結論都要落到具體可照做的步驟或示例,不停留在「建議」「考慮一下」這類沒法直接執行的空泛表述GitHub 官方定義裡,MCP(Model Context Protocol)是一個開放標準,用來讓應用把上下文共享給大語言模型。放到 Copilot 裡看,它就是一層工具協議:Copilot 透過 MCP client(客戶端)連線 MCP server(服務端),server 再提供 tools(可呼叫的動作)、resources(資料資源)和 prompts(預設任務入口)。
結論先說:MCP 的核心不是“多一個外掛”,而是讓 Copilot 以受控方式呼叫外部系統。
MCP server 可能讀取檔案、訪問網路、呼叫 API、建立 issue、操作 PR。接入前先審 server 來源和工具許可權。
1. MCP 的四個角色
flowchart LR
Copilot["Copilot Chat / Agent"] --> Client["MCP client"]
Client --> Server["MCP server"]
Server --> Tool["Tools: 執行動作"]
Server --> Resource["Resources: 提供資料"]
Server --> Prompt["Prompts: 預設互動入口"]
Tool --> System["外部系統"]
Resource --> System
Prompt --> Copilot
style Client fill:#dbeafe,stroke:#2563eb,stroke-width:2px
style Server fill:#dcfce7,stroke:#16a34a,stroke-width:2px
style System fill:#fef3c7,stroke:#d97706,stroke-width:2px
- MCP client:VS Code、Copilot CLI、Cloud Agent 等負責連線 server 的宿主。
- MCP server:暴露工具和上下文的服務,可以本地執行,也可以遠端訪問。
- Tools:agent 可以呼叫的動作,例如搜尋儲存庫、讀取 issue、建立 PR。
- Resources:server 提供給 Chat 的資料,例如儲存庫內容、文件、物件詳情。
- Prompts:server 預設的 slash command 式任務入口。
這層結構的好處是統一:不用每個工具都單獨為 Copilot 寫一套整合,也不用把外部系統狀態手動複製進 Chat。
2. Copilot 哪些入口支援 MCP
GitHub 官方文件列出的支援邊界:
- IDEs:廣泛支援本地 MCP server,遠端 MCP server 支援也在增長,具體看編輯器文件。
- Copilot CLI:支援本地和遠端 MCP server;GitHub MCP server 是內建的,不需要額外設定。
- Copilot cloud agent:支援儲存庫級 MCP server;GitHub MCP server 和 Playwright MCP server 預設設定。
企業和組織可以透過 “MCP servers in Copilot” 策略啟用或停用 MCP。官方文件說明該策略預設關閉,所以團隊裡“我本地能用”不代表組織賬號也能用。
3. 什麼時候需要 MCP
適合:
- Copilot 需要查詢 GitHub issue、PR、Actions、security alerts。
- Copilot 需要讀內部文件、API、資料庫或支援系統。
- 團隊希望統一 server 設定,而不是讓每個人手工複製上下文。
- 外部系統狀態變化快,不能靠靜態 instructions 維護。
不適合:
- 一次性解釋概念。
- 只需要專案長期規範,此時用 instructions。
- 只需要重複 prompt,此時用 prompt file。
- 工具來源不可信,或無法說明它會讀寫什麼。
- 沒有審批和回復,卻想開放寫操作。
4. 最小安全模型
接入 MCP 前先回答:
- Server 來源:誰維護,是否官方或內部可信。
- 執行位置:本地、遠端、容器、企業私有環境。
- 認證方式:OAuth、PAT、環境變數,還是輸入變數。
- 工具許可權:只讀、寫入、審批、刪除、執行命令。
- 資料邊界:能讀哪些儲存庫、檔案、API、記錄和客戶資料。
- 失敗證據:記錄在哪裡,如何重啟,如何停用。
這 6 個問題答不清,不要上線。
5. 典型接入路徑
- 從只讀 server 開始,例如 Fetch、GitHub repo 查詢、文件搜尋。
- 在 Agent mode 中手動選擇工具,觀察 Copilot 是否正確引用上下文。
- 把有效設定固化到個人 profile 或工作區
.vscode/mcp.json。 - 如果團隊共享,提交 PR 審查 server 設定。
- 需要更多動作時,再按 toolset 分層開放寫能力。
深讀:為什麼不要預設啟用所有工具
Agent 會根據任務目標自動選擇工具。工具越多,模型越可能選擇一個你沒有預期的路徑,也更難解釋結果來自哪裡。
商業級 MCP 接入應該從“這個任務缺什麼上下文”出發,而不是從“這個 server 有多少工具”出發。
本章自檢
- 這個 MCP server 是否補了真實上下文缺口?
- 它是本地 server 還是遠端 server?
- 它的工具是否按只讀和寫入分層?
- 組織策略是否允許目前入口使用 MCP?
- 是否能在記錄裡看到 server 啟動、工具呼叫和錯誤?
透過標準:一個新人能看懂 server 用途、許可權、設定位置和停用方式。
官方來源
- About Model Context Protocol (MCP) —— GitHub 官方 MCP 概念、可用入口和策略說明。
- Extending GitHub Copilot Chat with MCP servers —— GitHub 官方 IDE MCP 使用流程。
- Add and manage MCP servers in VS Code —— VS Code 官方 MCP server 設定、信任和管理。