---
title: "MCP 是什麼"
description: "解釋 Model Context Protocol 如何把外部系統接入 Copilot，並給出安全接入判斷。"
verifiedAt: "2026-05-06"
---

GitHub 官方定義裡，MCP（Model Context Protocol）是一個開放標準，用來讓應用把上下文共享給大語言模型。放到 Copilot 裡看，它就是一層工具協議：Copilot 透過 MCP client（客戶端）連線 MCP server（服務端），server 再提供 tools（可呼叫的動作）、resources（資料資源）和 prompts（預設任務入口）。

結論先說：**MCP 的核心不是“多一個外掛”，而是讓 Copilot 以受控方式呼叫外部系統。**

> [!WARNING]
> MCP server 可能讀取檔案、訪問網路、呼叫 API、建立 issue、操作 PR。接入前先審 server 來源和工具許可權。

## 1. MCP 的四個角色

```mermaid
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 前先回答：

1. **Server 來源**：誰維護，是否官方或內部可信。
2. **執行位置**：本地、遠端、容器、企業私有環境。
3. **認證方式**：OAuth、PAT、環境變數，還是輸入變數。
4. **工具許可權**：只讀、寫入、審批、刪除、執行命令。
5. **資料邊界**：能讀哪些儲存庫、檔案、API、日誌和客戶資料。
6. **失敗證據**：日誌在哪裡，如何重啟，如何停用。

這 6 個問題答不清，不要上線。

## 5. 典型接入路徑

1. 從只讀 server 開始，例如 Fetch、GitHub repo 查詢、文件搜尋。
2. 在 Agent mode 中手動選擇工具，觀察 Copilot 是否正確引用上下文。
3. 把有效配置固化到個人 profile 或工作區 `.vscode/mcp.json`。
4. 如果團隊共享，提交 PR 審查 server 配置。
5. 需要更多動作時，再按 toolset 分層開放寫能力。

<details>
<summary>深讀：為什麼不要預設啟用所有工具</summary>

Agent 會根據任務目標自動選擇工具。工具越多，模型越可能選擇一個你沒有預期的路徑，也更難解釋結果來自哪裡。

商業級 MCP 接入應該從“這個任務缺什麼上下文”出發，而不是從“這個 server 有多少工具”出發。
</details>

## 本章自檢

1. 這個 MCP server 是否補了真實上下文缺口？
2. 它是本地 server 還是遠端 server？
3. 它的工具是否按只讀和寫入分層？
4. 組織策略是否允許當前入口使用 MCP？
5. 是否能在日誌裡看到 server 啟動、工具呼叫和錯誤？

透過標準：一個新人能看懂 server 用途、許可權、配置位置和停用方式。

## 官方來源

- [About Model Context Protocol (MCP)](https://docs.github.com/en/copilot/concepts/context/mcp) —— GitHub 官方 MCP 概念、可用入口和策略說明。
- [Extending GitHub Copilot Chat with MCP servers](https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp-in-your-ide/extend-copilot-chat-with-mcp) —— GitHub 官方 IDE MCP 使用流程。
- [Add and manage MCP servers in VS Code](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) —— VS Code 官方 MCP server 配置、信任和管理。

## 接下來去哪

<Cards>
  <Card title="GitHub MCP Server" description="用官方 server 連線 GitHub 儲存庫、issue 和 PR 上下文。" href="/zh-Hant/docs/github-copilot/official/07-mcp/github-mcp-server" />
  <Card title="用 MCP 擴充套件 Chat" description="把 MCP server 接到 IDE 的 Agent mode。" href="/zh-Hant/docs/github-copilot/official/07-mcp/extend-chat-with-mcp" />
</Cards>
