所有節目›AI Engineer Europe 2026World's Fair 2026World's Fair 線上軌AI in HealthcareSoftware Factories
Scaling GitHub for your Agents在 YouTube 看這一場

AI Engineer Europe 2026 · 演講 · 2026-04-27 · 21 分

GitHub MCP 的一年實戰

Scaling GitHub for your Agents · Sam Morrow,GitHub

負責 GitHub MCP server 的 Sam Morrow 回顧開源一年的經驗:如何控制工具數量與輸出量、處理授權與安全,以及無狀態架構。

工具太多權限邊界看原片 ↗

概要

  • 工具一多,agent 反而變差開源後公開貢獻湧入,Sam 說一個月左右 agent 用 GitHub 的表現在某些方面變差,context window 也更快被塞滿。他們當時選了超過一百個工具,回頭看在當時是太多了。
  • 優雅的設定沒人用團隊做了 tool sets、動態工具選擇,也做過沒發布的語意搜尋版本,但大家都用預設值,因為使用者多半不會去改 JSON。
  • 用數據縮減 context依使用情況聚焦工具後,初始載入量減少約 49%,預設設定大約是 40 個工具;list pull requests 的輸出經過調整,token 少了超過 75%。工具呼叫的成功率,Sam 說現在大約超過 95%。
  • 安全是持續的威脅長效、權限過大的 token 讓 Sam 擔心;遠端 server 支援 OAuth 2.1 與 PKCE,但他們評估後拒絕了 dynamic client registration。另外也談到提示注入外洩攻擊,並認為 agent 的實用性與防護是直接衝突的。
  • 每個請求建一個新的 server 實例他們用無狀態架構,沒有 session affinity,session 只用來辨識客戶端自報的身分。
  • 預期工具會到數千個Sam 預期 server 探索會自動化、工具使用更偏組合式,數千個工具很快會變成常態,並鼓勵大家試做古怪的 client。

原話

  • “Everyone used the default settings.”

    大家都用預設值。講的是他們做了各種工具分組與選擇機制之後的結果

    ▶ 04:01
  • “the perfect tool description that makes the agent call it all the time is terrible as is the reverse of that”

    讓 agent 隨時都會呼叫的完美工具描述很糟,反過來也一樣

    ▶ 07:57
  • “for us, it creates more problems than it solves”

    對我們來說,它製造的問題比解決的還多。指的是 dynamic client registration

    ▶ 09:36
  • “the utility of agents is in conflict, direct conflict with kind of protecting this stuff”

    agent 的實用性與保護這些東西是直接衝突的

    ▶ 11:27
  • “I fully expect that thousands of tools will be normal very soon.”

    我完全預期數千個工具很快就會變成常態

    ▶ 16:57

延伸

  • Sam 提到同事寫過一篇談 evals 的部落格,但這場沒有展開細節。
  • Sam 說還沒排除 code mode 這類更進階的做法,但沒有說時程。
  • 講到 GitHub 自己面臨的新挑戰,Sam 只說壓力很大、沒有放緩的跡象,沒有展開。

章節

點時碼直接跳到原片的那一段。

  1. 開場與舉手調查Sam 自介是負責 GitHub MCP server 開發的人,先問現場有誰用過 MCP server、用過 GitHub 的、做過 server 或 client、參與過規格。
  2. 開源一週年與湧入的貢獻本地 MCP 在去年四月開源,當週是 GitHub 上星數最多的 repo;大量公開貢獻快速補上平台覆蓋的缺口,但也不是都好。
  3. 工具太多拖垮 agent新功能加了一個月左右,agent 表現變差、context 更快用完;Sam 引用 LangChain 二月發布的研究,指出工具塞進 context 越多,agent 越容易混亂。
  4. tool sets 與動態發現Sam 加了把相關工具分組的 tool sets,讓使用者挑選,也做了讓 agent 自己發現工具組的動態選擇,還做過沒發布的語意搜尋版本。
  5. 大家都用預設值這些方案都要改 JSON,多數人不會改;Sam 說 MCP 規格裡的分組提案都被否決過,read-only 模式約 17% 使用者在用,卻沒有 client 用 read-only hint 過濾。
  6. 縮減輸入與輸出的 token依遠端 server 的使用模式聚焦工具,初始載入減少約 49%,預設約 40 個工具;list pull requests 的輸出 token 少了超過 75%。
  7. 降低失敗率與跑 evals成功率大約超過 95%;把 agent 的意圖編進工具表面,由 server 端做多次 API 呼叫;用 evals 讓工具描述互相比較,不要過度追求被呼叫或不被呼叫。
  8. 安全:長效 tokenSam 說 token 常存放在 agent 讀得到的地方、期限長、權限過大;設定要同時簡單又安全很難,client 應該用 keyring 或加密儲存。
  9. 遠端 OAuth 與拒絕 DCR遠端 server 支援 OAuth 2.1,團隊也替 GitHub 授權伺服器加了 PKCE;但評估 dynamic client registration 後決定不支援,Sam 希望改支援 client ID metadata,但不能保證。
  10. 提示注入與致命三要素有人公開了針對 GitHub MCP server 的提示注入外洩攻擊;Sam 說這適用於幾乎所有 agent 設置,agent 的用途與防護直接衝突,尚未解決。
  11. 用授權範圍管理工具用 PAT 登入時依 token 的 scope 直接過濾工具;OAuth 支援 step up auth,缺權限時詢問使用者而不是失敗;server token 沒有使用者,所以移除了使用者專屬工具。
  12. 無狀態 server 架構用 Redis 存 session,每個請求都新建一個 server 實例並加上工具,沒有 session affinity,session 只用來看客戶端自報身分。
  13. Insiders 模式與 MCP appsInsiders 模式開啟實驗性功能旗標;MCP apps 還沒正式發布,可以在發出前編輯 AI 產生的 issue。
  14. 未來:數千個工具預期 server 探索自動化、工具使用更組合式,提到 Cloudflare 的 code mode 與 Anthropic 的 tool search tool API,認為數千個工具會很快成為常態,並鼓勵試做古怪的 client。
  15. 專案數字Docker 下載超過 11 million 次(Sam 說這還遠不是用得最多的版本),126 位貢獻者,超過 2300 個 issue 與 PR,將近 4,000 個 fork,近 30,000 顆星,每週將近 8 million 次工具呼叫。
  16. 收尾與 MCP CLI 建議Sam 說 GitHub 自己也面臨新挑戰,仍希望大家繼續開 issue 與 PR;結尾建議把 MCP 的唯讀工具包成 CLI 並寫好 help 試試看。

名詞

GitHub MCP server
Sam 負責開發的 server,去年四月開源本地版本,也有遠端版本
tool sets
Sam 加的概念,把相關的產品工具分組,讓使用者自選
read-only hint annotation
MCP 規格裡標示唯讀的註記,Sam 說沒有 client 用它過濾 server
dynamic client registration
OAuth 動態註冊 client 的機制,GitHub 評估後拒絕支援
PKCE
授權碼交換的證明金鑰,Sam 說通稱 Pixie,團隊協助加到 GitHub 授權伺服器
client ID metadata
Sam 說 MCP 認為比較可行的做法,正努力讓 GitHub 支援
step up auth
缺少授權範圍時回傳 scope challenge、互動詢問使用者的機制,VS Code 有支援
Insiders mode
開啟實驗功能旗標的模式,用來提前釋出實驗
MCP apps
在 Insiders 上的功能,讓使用者能編輯 AI 產生的 issue
lethal trifecta
Sam 提到 Simon Willison 的部落格文章談的提示注入風險
code mode
Cloudflare 的做法,Sam 列為工具使用組合化的方向

相關影片 同屬「工具太多」「權限邊界」