AI Engineer Europe 2026 · 演講 · 2026-04-25 · 23 分
讓 agent 寫程式碼來用 API
MCP = Mega Context Problem · Matt Carey
Cloudflare 的 Matt 從 API 撐爆 context 的經驗出發,比較 CLI、tool search 與讓模型寫程式碼三條路,也談執行不受信任程式碼的隔離與 MCP 的走向。
概要
- 工具一多 context 就爆Cloudflare 的 OpenAPI spec 是 2.3 million tokens,直接做成工具約 1.1 million tokens,連最大的模型都無法負荷;拆成 16 個產品 MCP server 又讓使用者得自己挑,覆蓋也不完整。
- MCP 沒死,問題是別全倒進 contextMatt 認為 MCP 只是協定,真正要避免的是一次載入所有工具,解法是 progressive discovery,並列出 CLI、tool search 與讓模型寫程式碼三條路。
- CLI 與 tool search 各有限制CLI 需要 shell 存取;tool search 依關鍵字載入相關工具,Matt 舉的例子是 2,100 tokens 裡只用到 500。
- 讓模型對型別寫程式碼Cloudflare 的 code mode 把 API 轉成 TypeScript 型別,模型據此寫程式再執行;難點是跑不受信任的程式碼,Matt 用 V8 isolate 的 dynamic worker 做隔離,並示範了讀不到密鑰與可開關的網路存取。
- 服務端與客戶端都要準備使用者變成 AI 後會對服務寫程式,API 要有 rate limiting;客戶端會出現 programmatic tool calling、存下來重跑的小腳本,以及更多 MCP client。
- MCP 會變成 middlewareMatt 預期 SDK 越來越輕,到今年底至少 TypeScript 的大型全端框架會原生內建,一個旗標就能把 API 以 MCP 公開。
原話
▶ 04:57“we just shouldn't be dumping loads of tools into context”
我們就是不該把一大堆工具倒進 context
▶ 09:29“And that's because running untrusted code is mega, mega scary.”
那是因為執行不受信任的程式碼實在太可怕了,指的是 client 為何沒實作 code mode
▶ 14:47“code is actually a very compact plan”
程式碼其實是一種非常精簡的計畫
▶ 17:05“your APIs have to be ready to take a beating”
你的 API 得準備好承受猛烈的打擊
▶ 20:51“I think we're going to see MCP as a middleware”
我認為我們會看到 MCP 變成一種 middleware
延伸
- Matt 把現在比作 1950 年代:當時要用電腦,得把程式交給鎮上那台機器跑,等於在跑不受信任的程式碼。上雲之後大家遠離了這件事,但使用者變成 AI 之後,又會回到那種模式。
- Matt 也提醒,每個人背後有上百個 agent 時,一個 agent 配一個沙盒會撐不住,得改用雲端原生、狀態可開可關的 agent 迴圈。
章節
點時碼直接跳到原片的那一段。
- 開場與主題Matt 自我介紹在 Cloudflare 做 MCP 與 agent,這場要講怎麼讓每個 API 都成為 agent 的工具,自己的日常就是想辦法給 agent「手」去碰外部世界。
- 從 tool calling 到 MCP先講 tool calling:LLM 寫函式、由程式執行;早期工具各自綁在 agent 裡,每個人都要重做一遍。約去年四月 MCP 與 remote MCP 爆發,服務商提供標準化的工具,當作 API 之外的另一個介面。
- 工具一多,context 就爆八個工具還行,但想讓 agent 碰整個 API 就會把 context window 撐爆。Cloudflare 的 OpenAPI spec 是 2.3 million tokens,直接轉成工具約 1.1 million tokens,再大的模型也吃不下。
- 拆成多個 MCP server 的代價Cloudflare 一度把 API 依產品拆成 16 個 MCP server,context 變小,但使用者得自己挑,而且覆蓋不完整;Matt 舉例某產品線的 server 只有六個工具,整個 API 卻約有 30 個 endpoint。
- 需要 progressive discoveryendpoint 數量一度在兩千五百個左右,拆分行不通,需要的是工具的漸進式探索。Matt 認為 MCP 沒有死,問題在於不該把大量工具一次倒進 context。
- CLI 與 tool search 兩條路CLI 路線讓 agent 讀 help 輸出、逐步操作,OpenClaw 等工具很愛用,但前提是要有 shell 存取。tool search 則依關鍵字只把幾個相關工具載入 context(例如 K 等於 8),結果是 2,100 tokens 裡只用到 500。
- 第三條路:讓模型寫程式碼Cloudflare 去年夏天的部落格提出,讓 agent 直接對 API 寫程式。Matt 認為 TypeScript 的型別很精簡,適合讓模型理解輸入與輸出,可以從 OpenAPI spec 產生型別化的 SDK。
- Code mode 示範示範模型針對型別寫出程式碼來列出 worker、部署 hello world,並用 Access(Cloudflare 的託管 IDP)加上存取政策。Matt 說這種做法能隨模型進步與 OpenAPI spec 改善而受益。
- 為什麼用戶端沒跟進八、九個月前就有這個做法,但 client(即 agent)端沒有實作。Matt 的解釋是執行不受信任的程式碼太可怕:可能讀密鑰、外傳、跑無窮迴圈或挖礦。
- 過去的做法與 dynamic worker過去的解法包括自訂 DSL、大型 VM 或沙箱,以及人工審查。Cloudflare 的做法是從字串執行一個 worker,也就是 V8 的 isolate,Matt 說這類原語之後還會有別家。
- 隔離示範與可程式化護欄示範產生的程式碼在後端的 dynamic worker 裡執行,印出環境變數看不到任何密鑰,關掉 Node 相容後連 process.env 都沒有。對外網路存取也能用開關或網域限制函式來控管。
- MCP client 實機示範在簡報裡的 MCP client 問問題、跳出授權畫面後,列出帳號上的 worker。Matt 說這樣就能碰到整個 Cloudflare API 的兩千多個 endpoint,可以部署 worker、加 Access、查 DNS,之後還會支援寄信。
- 程式碼是精簡的計畫Matt 認為網路上會出現大量隔離環境,一個叫 code 的工具比一堆個別 tool call 有更大的自由度,並展示 workerd、Deno 與 Pydantic Monty(跑不受信任 Python 的新直譯器)執行同一類程式。
- 伺服器端要扛得住使用者變成 AI 之後,他們會對你的服務寫程式;Matt 提醒 API 要有良好的 rate limiting,因為可以在多個沙箱裡用 for 迴圈猛打。
- 客戶端的創新Matt 說做 MCP client 很痛苦,要管有狀態的連線,所以大家只做最精簡的版本。接下來會出現 programmatic tool calling、把產生的程式存成小腳本(例如排程的爬蟲,壞了由 agent 修好再存),也會有更多 client。
- MCP 變成 middlewareMatt 預期 MCP 會像框架裡的一個旗標,SDK 會輕到原生內建,到今年底至少 TypeScript 的大型全端框架都會有。最後推薦 Cloudflare 的 code mode 部落格,並呼籲 observability 業者照做。
名詞
- progressive discovery
- 不一次載入所有工具,而是需要時才逐步取得,是這場要解的核心問題
- tool search
- 一個搜尋工具,依使用者問題做關鍵字比對,把相關的幾個工具載入 context,Matt 說 Claude Code 採用這種做法
- code mode
- Cloudflare 去年夏天部落格提出的做法:產生 API 的型別,讓模型寫程式碼來呼叫
- Dynamic Worker
- Cloudflare 的功能,可從字串執行一個 worker,也就是 V8 的 isolate,用來隔離不受信任的程式碼
- workerd
- Cloudflare 的 worker 執行環境,Matt 用它示範前面的 dynamic worker,和 Deno、Pydantic Monty 並列
- Pydantic Monty
- Matt 說是 Pydantic 新推出、用來執行不受信任 Python 的 code interpreter
- Access
- Cloudflare 的託管 IDP,示範中用來替部署的 worker 加上存取政策
- programmatic tool calling
- 讓模型產生程式碼來串接工具呼叫,Matt 預期客戶端會普遍採用
- OpenClaw
- Matt 舉例說很常使用 CLI 的工具








