/ 目錄 / 演練場 / GitHub
● 官方 github 🔑 需要你的金鑰

GitHub

作者 github · github/github-mcp-server

讓 Claude 完整存取 GitHub — 議題、PR、程式碼搜尋、檔案編輯 — 全程不需離開聊天視窗。

GitHub 官方 MCP 伺服器。所有能透過 GitHub REST 或 GraphQL API 完成的事,你的 AI 代理也能做:分類議題、審查 PR、跨組織搜尋程式碼、起草提交。支援唯讀模式,建議第一次使用時採用。

為什麼要用

核心特性

即時演示

實際使用效果

github.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "github",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "github": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "GITHUB_PERSONAL_ACCESS_TOKEN",
          "ghcr.io/github/github-mcp-server"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add github -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: GitHub

如何找到適合新手的議題並在一小時內送出修復

👤 希望低摩擦送出第一個 PR 的開源貢獻者 ⏱ ~60 min beginner

何時使用: 你想為某個專案貢獻,但完全不知道從哪裡開始。維護者的 CONTRIBUTING.md 過於泛泛,幫助有限。

前置條件
  • 具備 repo:readissues:read 的 GitHub PAT — 至 github.com/settings/tokens 建立細粒度 Token,限定範圍至你想貢獻的儲存庫
  • 同時安裝 filesystem MCP — 讓 Claude 能在本機 clone 並讀取儲存庫,以便實際撰寫修復內容
步驟
  1. 請 Claude 找出標記為 good first issue、沒有留言的議題,並依難易度排序
    找出 modelcontextprotocol/servers 中標記為 'good first issue'、無指派人且零留言的開放議題。選出看起來最容易修復的一個並說明原因。✓ 已複製
    → Claude 回傳 3-5 個候選項目,每項附上一行難度評估
  2. 讓 Claude 取得議題內容與相關連結的程式碼
    取得 #<num> 的完整議題內容,並讀取其中提到的檔案。告訴我實際需要做的變更。✓ 已複製
    → 具體的差異意圖,而非只是重述議題內容
  3. 使用 filesystem MCP 進行編輯,再透過 GitHub MCP 起草 PR
    套用變更,並撰寫一份感謝維護者、用三句話說明修復內容的 PR 描述。✓ 已複製
    → PR 已開啟並回傳連結

結果: 一個符合專案風格、有引用議題、小到當天就能合併的開放 PR。

注意事項
  • Claude 選到一個其實已擱置兩年、因為沒人能達成共識而無人修復的「新手議題」 — 新增篩選條件:「最近 90 天內維護者無新留言」
  • PR 描述充滿 AI 制式語氣 — 先告訴 Claude 模仿該專案最近 3 個已合併 PR 的語氣風格
搭配使用: filesystem · git

為團隊產生每週 PR 摘要

👤 工程主管、技術負責人 ⏱ ~10 min intermediate

何時使用: 每週一早上,當你不想逐一點開 40 則 PR 通知時。

前置條件
  • 限定團隊儲存庫、具備 pull_requests:read 的 PAT — 使用細粒度 Token,絕對不要使用傳統的「所有儲存庫」Token
步驟
  1. 取得上週已合併的 PR 及其差異大小
    列出上週一到今天合併進 org/repo 的所有 PR。包含作者、增減行數,以及一行摘要。✓ 已複製
    → 包含具體增減數值的 10-30 列表格
  2. 依作者與主題分組
    將這些 PR 依領域分組(身分驗證、金流、前端、基礎設施……),並標記看起來像是還原或緊急修復的項目。✓ 已複製
    → 依主題分類的各區塊內容
  3. 起草適合貼到 Slack 的摘要
    現在撰寫一篇 Slack 貼文,總結本週進度 — 慶賀重大成果,點出高風險變更,並提及完成這些工作的成員。✓ 已複製
    → 含 @mentions 與 emoji 的 Markdown 格式,可直接貼上

結果: 一份五點摘要,讓你週一早上真的想看。

注意事項
  • 組織儲存庫較多時容易觸發速率限制 — 一次只查詢一個儲存庫,或升級為 GitHub App Token(每小時 15k 次,而非 5k 次)
搭配使用: linear · sentry

找出程式碼庫中所有使用已棄用 API 的位置

👤 規劃遷移的後端工程師 ⏱ ~30 min intermediate

何時使用: 你即將棄用一個內部類別或函式,需要在公告前先確認誰正在使用它。

前置條件
  • 具備組織內所有儲存庫 repo:read 權限的 PAT — 使用 GitHub App 取得全組織存取權 — 比管理多個 per-repo PAT 更省事
步驟
  1. 在整個組織中執行程式碼搜尋
    搜尋整個 acme-corp 組織中所有使用 LegacyAuth 類別的位置。依儲存庫分組回傳檔案路徑。✓ 已複製
    → 列出儲存庫與檔案,含行號
  2. 取得每個搜尋結果的上下文
    針對每個搜尋結果,取得使用位置前後 5 行,並告訴我這是實際呼叫還是只是註解或 import。✓ 已複製
    → 篩選後的清單,區分真實呼叫與雜訊
  3. 建立遷移追蹤議題
    acme-corp/platform 建立一個標題為「Migrate off LegacyAuth」的追蹤議題,包含所有真實呼叫點的清單,以及各儲存庫對應的負責團隊。✓ 已複製
    → 議題已建立,包含完整清單

結果: 一個可讓平台團隊用來推動遷移的單一來源追蹤議題。

注意事項
  • 程式碼搜尋每次查詢上限為 1000 筆結果 — 如果觸及上限,可縮小搜尋範圍,例如加上語言或路徑限定:LegacyAuth language:python,或依儲存庫前綴拆分查詢
  • GitHub 僅索引預設分支 — 無法找到功能分支中的使用情況 — 可補充在本機 clone 的儲存庫上執行 grep
搭配使用: filesystem

在核准複雜 PR 前取得第二意見

👤 面對不熟悉領域 PR 的程式碼審查者 ⏱ ~15 min intermediate

何時使用: 你被指派審查一個涉及你不熟悉程式碼的 PR,但你不想只是草草蓋章通過。

步驟
  1. 取得 PR 差異與描述
    取得 org/repo 中 PR #<num> 的內容 — 給我差異與描述。作者宣稱這個 PR 做了什麼?✓ 已複製
    → 清楚重述 PR 意圖
  2. 請 Claude 進行架構層面的解讀
    現在看看這個 PR 修改了哪些現有檔案。這個變更符合現有模式,還是引入了新模式?如果是新模式,這樣做是否合理?✓ 已複製
    → 具體指出問題,而非泛泛稱讚
  3. 探查潛在風險
    這份差異中,哪個地方最可能在六個月後的正式環境中出問題?請具體指出是哪一行。✓ 已複製
    → 具體到行層級的疑慮,而非「補充更多測試」

結果: 三條具體且可執行的評論,可直接貼到 PR 上 — 讓你的審查實質上優於草草瀏覽一遍。

注意事項
  • Claude 變成應聲蟲,對一切都給予稱讚 — 明確詢問「公司的資深工程師會對哪個部分提出質疑?」 — 對抗性的提問框架有助於帶出真正的問題
搭配使用: filesystem

找出並推動卡在審查中的 PR

👤 工程主管、儲存庫維護者 ⏱ ~20 min beginner

何時使用: 每個 sprint 進行一次,當你懷疑有 PR 在無人注意的情況下悄悄老化。

步驟
  1. 列出超過 5 天沒有活動的開放 PR
    找出 org/repo 中超過 5 天未更新的開放 PR。針對每個,告訴我作者、指派的審查者,以及延誤原因(查看最後一則留言)。✓ 已複製
    → 附有每個 PR 診斷資訊的表格
  2. 分類延誤原因
    將這些 PR 分成:「等待審查者」、「等待作者」、「等待 CI」、「等待決策」。請具體說明各屬哪類。✓ 已複製
    → 四個分類,各含具體 PR 項目
  3. 起草催促留言
    針對「等待審查者」這個分類,為每個 PR 起草一則禮貌的催促留言。若審查者與作者是同儕或資深關係,語氣應有所不同。✓ 已複製
    → 每個 PR 的留言文字,可直接貼上

結果: 一份可在 15 分鐘內解除卡關的 PR 清單,每個 PR 附有具體行動建議。

注意事項
  • 自動發布留言感覺像在洗版 — 讓 Claude 起草留言,但由你自行發布 — 保持人工在迴路中
搭配使用: linear

組合

與其他 MCP 搭配,撬動十倍槓桿

github + sentry

Sentry 出現新錯誤 → GitHub MCP 透過發布標籤找出引入該錯誤的提交 → 你在同一個聊天視窗中起草緊急修復 PR,一氣呵成

Sentry 出現新錯誤 — issue WEB-3a91。找出 main 分支上哪個提交引入了這個問題(交叉比對發布標籤),然後起草最小範圍的還原 PR。✓ 已複製
github + linear

自動將 GitHub 上的 bug 回報轉換為帶有適當標籤與優先序的 Linear 議題

針對本週在 octocat/api 儲存庫中開啟、標記為 'bug' 的所有議題,在 BACKEND 團隊中建立對應的 Linear 議題,優先序設為 Medium。✓ 已複製
github + filesystem + git

端到端貢獻流程:在本機 clone 儲存庫、進行修改、推送分支、開啟 PR — 全程不離開聊天視窗

在本機 clone acme/widgets,修復 src/utils/format.ts:42 的錯字,推送到新分支,並開啟一個 PR。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
search_issues owner: str, repo: str, labels?: str[], state?: str 需要依標籤、狀態、指派人或活動篩選議題時使用 1 GitHub API call
get_issue owner: str, repo: str, issue_number: int 在 search_issues 之後,需要取得完整討論內容時使用 1 API call
create_issue owner, repo, title, body, labels?, assignees? 建立新議題時使用 — 請確認使用者確實有此需求 1 API call (write)
list_pull_requests owner, repo, state?, sort?, base?, head? 依狀態、分支或作者查詢 PR 時使用 1 API call
get_pull_request owner, repo, pull_number 讀取特定 PR 的差異與詳細資訊時使用 1 API call
merge_pull_request owner, repo, pull_number, merge_method? 僅在明確收到指示時執行 — 建議先進行試跑討論 1 API call (write, irreversible)
search_code q: str, sort? 跨組織搜尋符號使用位置時使用 1 API call (lower rate limit: 30/min)
get_file_contents owner, repo, path, ref? 無需 clone 即可讀取儲存庫中單一檔案時使用 1 API call
create_or_update_file owner, repo, path, message, content, sha? 單次檔案編輯時使用;多檔案變更請使用分支搭配 PR 1 API call (write)
list_commits owner, repo, sha?, path? 稽核某個檔案或分支的歷史記錄時使用 1 API call

成本與限制

運行它的成本

API 配額
個人 PAT:每小時 5,000 次請求。GitHub App:每小時 15,000 次。程式碼搜尋:個人帳號每分鐘 30 次,另有獨立限制。
每次呼叫 Token 數
議題或 PR 詮釋資料約 200–500 個 token;大型檔案請求可能膨脹至 5k+ 個 token
費用
任何 GitHub 帳號皆免費使用。GitHub Enterprise 提供更高的速率限制。
提示
若頻繁觸及速率限制,建議改用 GitHub App — 比管理多個 PAT 更省事,速率上限也提升至 3 倍。迭代查詢時建議快取 list_issues 的結果。

安全

權限、密鑰、影響範圍

最小權限: repo:read issues:read
憑證儲存: 將細粒度 PAT 存放於環境變數(例如 GITHUB_PERSONAL_ACCESS_TOKEN)。切勿提交到設定檔中。
資料出站: 所有 API 呼叫僅限 api.github.com。無第三方遙測資料傳送。
切勿授予: admin:org delete_repo admin:enterprise

故障排查

常見錯誤與修復

401 Unauthorized

你的 PAT 已過期,或沒有存取該儲存庫的權限。請至 github.com/settings/tokens 重新建立,並設定正確的範圍。

驗證: curl -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" https://api.github.com/user
403 rate limit exceeded

你已達個人 PAT 每小時 5000 次的請求上限。請等待重置時間,或遷移至 GitHub App Token(每小時 15k 次)。

驗證: curl -H "Authorization: Bearer $TOKEN" https://api.github.com/rate_limit
404 Not Found on a private repo

你的 PAT 未將該儲存庫加入允許清單。請編輯細粒度 PAT 並新增該儲存庫。

Docker: 'unable to find image'

請先拉取映像檔:docker pull ghcr.io/github/github-mcp-server。若為私有映像,請確認已登入 ghcr.io。

驗證: docker images | grep github-mcp-server

替代方案

GitHub 對比其他方案

替代方案何時用它替代權衡
GitLab MCP你使用 GitLab.com 或自架 GitLab,而非 GitHub功能範圍較小,由社群維護
Gitea MCP自架 Gitea 環境工具支援有限,不及官方 GitHub MCP
git MCP只需要本機 git 操作(status、log、diff、blame),不需要存取任何遠端不支援議題、PR 或遠端操作 — 無需驗證即可在任何本機儲存庫上運作

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills