訂閱以接收新文章的通知:

Code Mode:用 1000 個詞元為智慧體開放整個 API

2026-02-20

閱讀時間:6 分鐘
本貼文還提供以下語言版本:EnglishItaliano日本語한국어Tiếng Việt简体中文

模型情境通訊協定 (MCP) 已成為 AI 智慧體使用外部工具的標準方式。但其核心存在一個矛盾:智慧體需要大量工具才能完成有意義的工作,然而每新增一個工具,就會佔用模型的上下文視窗空間,導致實際任務可用的空間減少。

Code Mode 是我們最初提出的一種技術,旨在降低智慧體在使用工具時對上下文視窗的消耗。與其將每一項操作都描述為獨立的工具,不如讓模型針對具型別的 SDK 撰寫程式碼,並在一個 Dynamic Worker Loader 中安全地執行該程式碼。程式碼就像是一份精簡的行動計畫。模型可以探索工具的操作方式、組合多個呼叫,並只回傳所需的資料。Anthropic 也在其文章 Code Execution with MCP(使用 MCP 執行程式碼)一文中獨立探索了相同的模式。

今天,我們推出一個全新的 MCP 伺服器,涵蓋整個 Cloudflare API(從 DNSZero Trust,到 WorkersR2)並採用 Code Mode。這個伺服器僅需兩個工具:search() 與 execute(),就能透過 MCP 提供對整個 Cloudflare API 的存取,同時僅消耗約 1000 個詞元。無論存在多少 API 端點,佔用空間都維持不變。

對於像 Cloudflare API 這樣龐大的 API,Code Mode 能將輸入詞元的使用量減少 99.9%。若沒有 Code Mode,等效的 MCP 伺服器將消耗 117 萬個詞元——超過最先進基礎模型整個上下文視窗的容量。

images/BLOG-3184 3

Code Mode 與原生 MCP 的節省比較(以 tiktoken 測量)

您現在即可開始使用這個新的 Cloudflare MCP 伺服器。此外,我們也同步開源了 Cloudflare Agents SDK 中的全新 Code Mode SDK,讓您可以在自己的 MCP 伺服器與 AI 智慧體中套用相同的方法。

伺服器端 Code Mode

images/BLOG-3184 2

這個新的 MCP 伺服器是在伺服器端套用 Code Mode。相較於數千個工具,此伺服器僅匯出兩個工具:search()execute()。這兩者皆由 Code Mode 驅動。以下是完整載入到模型情境中的工具介面:

[
  {
    "name": "search",
    "description": "Search the Cloudflare OpenAPI spec. All $refs are pre-resolved inline.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "JavaScript async arrow function to search the OpenAPI spec"
        }
      },
      "required": ["code"]
    }
  },
  {
    "name": "execute",
    "description": "Execute JavaScript code against the Cloudflare API.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "JavaScript async arrow function to execute"
        }
      },
      "required": ["code"]
    }
  }
]

為了探索它能做什麼,智慧體會呼叫 search()。它會根據具型別的 OpenAPI 規格表示法撰寫 JavaScript。智慧體可以依產品、路徑、標籤或任何其他中繼資料篩選端點,將數千個端點縮減為它需要的少數幾個。完整的 OpenAPI 規格永遠不會進入模型情境,智慧體僅透過程式碼與之互動。

當智慧體準備好採取行動時,它會呼叫 execute()。智慧體編寫的程式碼可以發出 Cloudflare API 請求、處理分頁、檢查回應,並在一次執行中串連多個操作。

這兩個工具都在 Dynamic Worker 隔離環境中執行所產生的程式碼——這是一個輕量級的 V8 沙箱,沒有檔案系統、不會因提示插入洩漏環境變數,且預設停用外部 fetch。如有需要,也可透過明確設定的 outbound fetch handler 來控制外發請求。

範例:保護源站免受 DDoS 攻擊

假設使用者告訴他們的智慧體:「保護我的源站免受 DDoS 攻擊。」智慧體的第一步是查閱文件。它可能會呼叫 Cloudflare Docs MCP 伺服器、使用 Cloudflare Skill,或直接搜尋網路。從文件中它學到:在源站前加上 Cloudflare WAFDDoS 防護規則。

步驟 1:搜尋正確的端點 search 工具為模型提供一個 spec 物件:完整的 Cloudflare OpenAPI 規範,所有 $ref 都已預先解析。模型針對它編寫 JavaScript。在此案例中,智慧體在區域上尋找 WAF 和規則集端點:

async () => {
  const results = [];
  for (const [path, methods] of Object.entries(spec.paths)) {
    if (path.includes('/zones/') &&
        (path.includes('firewall/waf') || path.includes('rulesets'))) {
      for (const [method, op] of Object.entries(methods)) {
        results.push({ method: method.toUpperCase(), path, summary: op.summary });
      }
    }
  }
  return results;
}

伺服器在 Workers 隔離環境中執行此程式碼,並傳回:

[
  { "method": "GET",    "path": "/zones/{zone_id}/firewall/waf/packages",              "summary": "List WAF packages" },
  { "method": "PATCH",  "path": "/zones/{zone_id}/firewall/waf/packages/{package_id}", "summary": "Update a WAF package" },
  { "method": "GET",    "path": "/zones/{zone_id}/firewall/waf/packages/{package_id}/rules", "summary": "List WAF rules" },
  { "method": "PATCH",  "path": "/zones/{zone_id}/firewall/waf/packages/{package_id}/rules/{rule_id}", "summary": "Update a WAF rule" },
  { "method": "GET",    "path": "/zones/{zone_id}/rulesets",                           "summary": "List zone rulesets" },
  { "method": "POST",   "path": "/zones/{zone_id}/rulesets",                           "summary": "Create a zone ruleset" },
  { "method": "GET",    "path": "/zones/{zone_id}/rulesets/phases/{ruleset_phase}/entrypoint", "summary": "Get a zone entry point ruleset" },
  { "method": "PUT",    "path": "/zones/{zone_id}/rulesets/phases/{ruleset_phase}/entrypoint", "summary": "Update a zone entry point ruleset" },
  { "method": "POST",   "path": "/zones/{zone_id}/rulesets/{ruleset_id}/rules",        "summary": "Create a zone ruleset rule" },
  { "method": "PATCH",  "path": "/zones/{zone_id}/rulesets/{ruleset_id}/rules/{rule_id}", "summary": "Update a zone ruleset rule" }
]

完整的 Cloudflare API 規範有超過 2,500 個端點。模型將其縮小到所需的 WAF 和規則集端點,而沒有任何規範內容進入情境視窗。

模型還可以在呼叫特定端點前,深入查看其結構描述。在這裡它檢查區域規則集有哪些階段可用:

async () => {
  const op = spec.paths['/zones/{zone_id}/rulesets']?.get;
  const items = op?.responses?.['200']?.content?.['application/json']?.schema;
  // Walk the schema to find the phase enum
  const props = items?.allOf?.[1]?.properties?.result?.items?.allOf?.[1]?.properties;
  return { phases: props?.phase?.enum };
}

{
  "phases": [
    "ddos_l4", "ddos_l7",
    "http_request_firewall_custom", "http_request_firewall_managed",
    "http_response_firewall_managed", "http_ratelimit",
    "http_request_redirect", "http_request_transform",
    "magic_transit", "magic_transit_managed"
  ]
}

智慧體現在知道它需要的確切階段:用於 DDoS 防護的 ddos_l7 和用於 WAF 的 http_request_firewall_managed

步驟 2:對 API 採取行動 智慧體切換為使用 execute。沙箱獲得一個 cloudflare.request() 用戶端,可以對 Cloudflare API 進行經過驗證的呼叫。首先智慧體會檢查區域上已存在哪些規則集:

async () => {
  const response = await cloudflare.request({
    method: "GET",
    path: `/zones/${zoneId}/rulesets`
  });
  return response.result.map(rs => ({
    name: rs.name, phase: rs.phase, kind: rs.kind
  }));
}

[
  { "name": "DDoS L7",          "phase": "ddos_l7",                        "kind": "managed" },
  { "name": "Cloudflare Managed","phase": "http_request_firewall_managed", "kind": "managed" },
  { "name": "Custom rules",     "phase": "http_request_firewall_custom",   "kind": "zone" }
]

智慧體發現已有受管理的 DDoS 與 WAF 規則集。接著它可以一次執行多個呼叫,檢查規則並調整敏感度等級:

async () => {
  // Get the current DDoS L7 entrypoint ruleset
  const ddos = await cloudflare.request({
    method: "GET",
    path: `/zones/${zoneId}/rulesets/phases/ddos_l7/entrypoint`
  });

  // Get the WAF managed ruleset
  const waf = await cloudflare.request({
    method: "GET",
    path: `/zones/${zoneId}/rulesets/phases/http_request_firewall_managed/entrypoint`
  });
}

從搜尋規範、檢查結構描述,到列出規則集並取得 DDoS 和 WAF 組態,整個操作只用了四次工具呼叫。

Cloudflare MCP 伺服器

我們最初是為個別產品提供各自的 MCP 伺服器。想要一個能管理 DNS 的智慧體?那就加入 DNS MCP 伺服器。需要 Workers 記錄?那就加入 Workers Observability MCP 伺服器。每個伺服器都匯出一組固定的工具,對應到特定的 API 操作。當工具組合規模很小時,這種方式還能運作,但 Cloudflare API 擁有超過 2500 個端點。任何手動維護的伺服器集合都無法跟上這樣的規模。

Cloudflare MCP 伺服器簡化了這一切。只需兩個工具、大約 1000 個詞元,就能涵蓋 API 中的所有端點。當我們新增產品時,同樣的 search()execute() 程式碼路徑就能發現並呼叫它們——不需要定義新工具,也不需要新的 MCP 伺服器。它甚至支援 GraphQL Analytics API

我們的 MCP 伺服器建立在最新的 MCP 規範之上。它符合 OAuth 2.1 標準,並使用 Workers OAuth Provider 將詞元降級為使用者在連線時明確同意的特定權限。智慧體僅能取得使用者授權的能力,不會有多餘的存取權。

對開發人員而言,這意味著您可以使用簡單的智慧體迴圈,同時讓您的智慧體憑藉內建的漸進式能力探索功能,存取完整的 Cloudflare API。

images/BLOG-3184 4

比較不同的上下文縮減方法

為了減少 MCP 工具消耗的詞元數量,業界已經出現幾種不同的做法:

用戶端 Code Mode 是我們最早的實驗。模型針對具型別的 SDK 撰寫 TypeScript,並在用戶端的 Dynamic Worker Loader 中執行程式碼。這種方式的代價是,智慧體必須搭載安全的沙箱存取權限。Code Mode 已被實作於 Goose 與 Anthropic 的 Claude SDK 中,作為「程式化工具呼叫」(Programmatic Tool Calling)

命令列介面 (CLI) 是另一條可行路徑。CLI 具有自我文件化的特性,能讓智慧體在探索過程中逐步揭露功能。像 OpenClawMoltworker 這類工具,會使用 MCPorter 將 MCP 伺服器轉換成 CLI,以提供漸進式揭露能力。但限制也很明顯:智慧體必須擁有 Shell 環境,這並非所有環境都能提供,而且與沙箱化的隔離環境相比,Shell 會引入更廣泛的攻擊面。

動態工具搜尋,如 Anthropic 在 Claude Code 中所使用的,只呈現一小組可能與當前任務相關的工具。這能減少上下文用量,但同時需要維護與評估一套搜尋功能,而且每個匹配到的工具仍會佔用詞元。

images/BLOG-3184 5

每種方法都解決了某個實際存在的問題。但針對 MCP 伺服器,伺服器端 Code Mode 綜合了它們的優勢:不論 API 大小,詞元成本固定;不需修改智慧體端邏輯;內建漸進式功能探索;並在沙箱隔離中安全執行。智慧體只需呼叫兩個工具並傳入程式碼,其餘全部在伺服器端完成。

立即開始使用

Cloudflare MCP 伺服器現已推出。只需將您的 MCP 用戶端指向伺服器 URL,系統將會將您重新導向 Cloudflare 進行授權,並選擇要授予智慧體的權限。請在您的 MCP 用戶端中加入以下設定:

{
  "mcpServers": {
    "cloudflare-api": {
      "url": "https://mcp.cloudflare.com/mcp"
    }
  }
}

若是 CI/CD、自動化流程,或是偏好自行管理詞元,您可以建立一個具有所需權限的 Cloudflare API 詞元。系統支援使用者詞元與帳號詞元,並可透過 Authorization 標頭以 Bearer 詞元的形式傳遞。

有關不同 MCP 設定組態的更多資訊,請參閱 Cloudflare MCP 存放庫

未來展望

Code Mode 解決了單一 API 的上下文成本問題。但實際上,智慧體很少只與一個服務互動。一個開發人員的智慧體可能需要同時存取 Cloudflare API、GitHub、資料庫,以及內部文件伺服器。每增加一個 MCP 伺服器,就會重新帶來我們最初想解決的上下文視窗壓力。

Cloudflare MCP Server Portals 讓您可以在單一閘道後組合多個 MCP 伺服器,並享有統一的身分驗證與存取控制。我們正在為所有 MCP 伺服器打造一流的 Code Mode 整合,讓智慧體能以內建的漸進式探索能力存取這些服務,並保有固定的詞元使用量,無論閘道背後有多少服務。

我們保護整個企業網路,協助客戶有效地建置網際網路規模的應用程式,加速任何網站或網際網路應用程式抵禦 DDoS 攻擊,阻止駭客入侵,並且可以協助您實現 Zero Trust

從任何裝置造訪 1.1.1.1,即可開始使用我們的免費應用程式,讓您的網際網路更快速、更安全。

若要進一步瞭解我們協助打造更好的網際網路的使命,請從這裡開始。如果您正在尋找新的職業方向,請查看我們的職缺
開發人員開發人員平台AIWorkers AICloudflare WorkersOptimization開源資源

在 X 上進行關注

Matt Carey|mattzcarey
Cloudflare|@cloudflare

相關貼文

2026年3月11日 下午1:00

AI Security for Apps is now generally available

Cloudflare AI Security for Apps is now generally available, providing a security layer to discover and protect AI-powered applications, regardless of the model or hosting provider. We are also making AI discovery free for all plans, to help teams find and secure shadow AI deployments....