Дата публикации
ai_products

Cloudflare запустила MCP‑сервер для всей API: 2500 эндпоинтов в 1000 токенов

Что нового

Cloudflare открыла публичную бету MCP‑сервера для своей API. Это сервер, который подключается к агентам (MCP‑клиентам) и даёт им доступ ко всей API Cloudflare через два инструмента, а не через тысячи отдельных.

Ключевые изменения и цифры:

  • Поддержка всей Cloudflare API — около 2500 эндпоинтов.
  • Вся интеграция укладывается примерно в 1000 токенов контекста при использовании Code Mode.
  • Для сравнения по токенам контекста (при общем лимите 200K токенов):
    • Сырая OpenAPI‑спека в промпте: ~2 000 000 токенов (977% от 200K) — фактически непригодно.
    • Native MCP с полными схемами: 1 170 523 токена (585%).
    • Native MCP с минимальными схемами (только обязательные параметры): 244 047 токенов (122%).
    • Code Mode: 1 069 токенов (~0,5%).
  • Два режима работы:
    • Code Mode (по умолчанию) — 2 инструмента, минимальный расход токенов.
    • Без Code Mode — отдельный инструмент под каждый эндпоинт (~2500 штук), около 244K токенов.
  • Два варианта аутентификации:
    • OAuth — рекомендованный способ.
    • API Token — под CI/CD и автоматизацию.
  • Поддержка GraphQL Analytics API через тот же execute‑инструмент.

По сути, Cloudflare упаковывает огромную OpenAPI‑спеку (около 2 млн токенов) в компактный сервер, который почти не съедает контекст агента.

Как это работает

MCP‑сервер Cloudflare реализует паттерн Code Mode:

  • Спецификация Cloudflare API (те самые ~2 млн токенов) живёт на стороне сервера, а не в контексте агента.
  • Агент не видит всю спеку, он только отправляет кусок JavaScript‑кода в инструменты сервера.
  • Сервер выполняет этот код в изолированных Workers через Dynamic Worker Loader API.
  • Код получает доступ к:
    • spec.paths — для поиска нужных эндпоинтов.
    • cloudflare.request() — для фактических HTTP‑запросов к API Cloudflare.

Доступные инструменты в Code Mode:

  • search — агент пишет JS, который ходит по spec.paths, фильтрует по тегам, методам, путям, summary и возвращает список подходящих эндпоинтов.
  • execute — агент пишет JS, который вызывает cloudflare.request({ method, path, body, ... }) и возвращает ответ API.

Схема взаимодействия:

  1. Агент отправляет search({ code: "..." }).
  2. MCP‑сервер выполняет код против spec.json и возвращает список подходящих эндпоинтов.
  3. Агент выбирает нужный эндпоинт и отправляет execute({ code: "..." }).
  4. MCP‑сервер выполняет код против реальной Cloudflare API и возвращает результат.

Если вы отключаете Code Mode (?codemode=false), сервер работает по классической MCP‑модели:

  • Каждый эндпоинт API — отдельный инструмент (например, get_workers_scripts, post_d1_database).
  • Схемы входных параметров формируются из path‑параметров, query‑параметров и тела запроса.
  • Инструменты напрямую вызывают API, без выполнения кода.
  • Параметры вроде account_id сервер подставляет автоматически, если у аккаунта один ID.
  • Цена — сильно больший расход токенов: около 244K против ~1K.

Что это значит для вас

Для чего это удобно

Если вы строите агентов или ассистентов, которые должны управлять инфраструктурой на Cloudflare, MCP‑сервер решает сразу несколько задач:

  • Автоматизация рутинных операций через язык:
    • «Список всех Workers в моём аккаунте».
    • «Создай KV‑namespace с именем my-cache».
    • «Добавь A‑запись для api.example.com на IP 192.0.2.1».
  • Агент сам:
    • находит нужный эндпоинт через search;
    • формирует запрос;
    • вызывает его через execute.

Это полезно, если вы:

  • Разрабатываете внутренних ассистентов DevOps/SRE.
  • Интегрируете Cloudflare в CI/CD пайплайны через агентов.
  • Строите панели управления, где пользователь говорит текстом, а агент ходит в Cloudflare API.
  • Собираете аналитику на базе GraphQL Analytics API и хотите запускать запросы через агента.

Где это помогает сильнее всего

  • Большие мультипродуктовые инсталляции Cloudflare: Workers, KV, R2, D1, Pages, DNS, Firewall, Load Balancers, Stream, Images, AI Gateway, Vectorize, Access, Gateway и другие продукты — всё доступно через один MCP‑сервер.
  • Сценарии с жёсткими лимитами контекста: Code Mode укладывается примерно в 1 069 токенов. Это почти не влияет на доступный контекст агента.
  • CI/CD и автоматизация: можно использовать API‑токены и запускать агентов в пайплайнах без ручного OAuth.

Где лучше не использовать

  • Если у вас нет доступа к Cloudflare или вы не управляете его конфигурацией — MCP‑сервер вам просто нечем будет кормить.
  • Если ваш MCP‑клиент не умеет выполнять код или уже использует собственный Code Mode, придётся либо:
    • отключить Code Mode у Cloudflare (?codemode=false) и смириться с ростом токенов до ~244K;
    • либо продумывать композицию нескольких Code Mode‑серверов.
  • Если у вас строгие ограничения по безопасности на выполнение динамического кода со стороны агентов, Code Mode может потребовать дополнительных проверок.

Доступность из России

Cloudflare — американская компания. Доступ к её сервисам и авторизации может зависеть от сетевых ограничений, локальных блокировок и требований регуляторов. В ряде сценариев вам может понадобиться VPN или прокси, чтобы стабильно работать с API и OAuth‑авторизацией.

Место на рынке

Этот MCP‑сервер решает довольно узкую, но болезненную задачу: как дать агенту полный доступ к огромной API без слива всей спеки в контекст.

Конкретные параметры, на которых он выигрывает:

  • Размер контекста:
    • Сырая OpenAPI‑спека: ~2 000 000 токенов.
    • Native MCP (минимальные схемы): ~244 047 токенов.
    • Code Mode: 1 069 токенов.
  • Число инструментов:
    • Классический MCP‑подход: тысячи инструментов под каждый эндпоинт.
    • Code Mode: 2 инструментаsearch и execute.

В экосистеме MCP‑серверов под крупные API это один из самых агрессивных вариантов по экономии токенов: вся логика перенесена на сторону сервера, а агенту остаётся только писать код.

Если вы сравниваете подходы для работы с большими OpenAPI‑спеками, у Cloudflare получился референсный кейс Code Mode: минимум контекста, максимум покрытия API.

Установка

MCP‑сервер доступен по URL:

  • MCP URL: https://mcp.cloudflare.com/mcp

Вариант 1: OAuth (рекомендуется)

  1. Укажите URL MCP‑сервера в конфиге MCP‑клиента.
  2. Клиент перенаправит вас на Cloudflare для авторизации и выбора прав доступа.

Пример JSON‑конфигурации:

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

Вариант 2: API Token

Подходит для CI/CD, автоматизации или если вы хотите самостоятельно управлять токенами.

  1. Создайте API‑токен Cloudflare с нужными правами.
  2. Поддерживаются user tokens и account tokens.
  3. Для account‑токенов добавьте разрешение Account Resources : Read, чтобы сервер смог автоматически определить account_id.
  4. Учтите ограничение: API‑токены с Client IP Address Filtering сейчас не поддерживаются.

Дальше добавьте сервер в агента:

  • MCP URL: https://mcp.cloudflare.com/mcp
  • Bearer Token: ваш Cloudflare API Token

Как запустить

Вариант с Code Mode (по умолчанию)

Минимальный JSON‑конфиг MCP‑клиента:

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

После этого можно общаться с агентом естественным языком:

  • «List all my Workers»
  • «Create a KV namespace called 'my-cache'»
  • «Add an A record for api.example.com pointing to 192.0.2.1»

Под капотом агент выполнит примерно такую последовательность вызовов.

Поиск эндпоинтов по тегу workers:

// 1. Search for endpoints
search ( {
  code : `async () => {
    const results = [];
    for (const [path, methods] of Object.entries(spec.paths)) {
      for (const [method, op] of Object.entries(methods)) {
        if (op.tags?.some(t => t.toLowerCase() === 'workers')) {
          results.push({ method: method.toUpperCase(), path, summary: op.summary });
        }
      }
    }
    return results;
  }` ,
} ) ;

Выполнение запроса с user‑токеном (нужно явно передать account_id):

// 2. Execute API call (user token - account_id required)
execute ( {
  code : `async () => {
    const response = await cloudflare.request({
      method: "GET",
      path: `/accounts/${accountId}/workers/scripts`
    });
    return response.result;
  }` ,
  account_id : "your-account-id" ,
} ) ;

Выполнение запроса с account‑токеном (сервер сам определяет account_id):

// 2. Execute API call (account token - account_id auto-detected)
execute ( {
  code : `async () => {
    const response = await cloudflare.request({
      method: "GET",
      path: `/accounts/${accountId}/workers/scripts`
    });
    return response.result;
  }` ,
} ) ;

Отключение Code Mode

Если ваш MCP‑клиент уже использует собственный Code Mode или вы компонуете несколько серверов с Code Mode, можно отключить режим кода для Cloudflare.

Для этого добавьте к URL параметр ?codemode=false:

  • MCP URL: https://mcp.cloudflare.com/mcp?codemode=false

Пример JSON‑конфигурации:

{ "mcpServers" : { "cloudflare-api" : { "url" : " https://mcp.cloudflare.com/mcp?codemode=false " } } }

Что меняется при отключённом Code Mode:

  • Каждый эндпоинт Cloudflare API становится отдельным инструментом (например, get_workers_scripts, post_d1_database).
  • Схемы входных данных строятся из path‑параметров, query‑параметров и тела запроса.
  • Инструменты делают прямые вызовы к API, без выполнения произвольного кода.
  • Параметры вроде account_id подставляются автоматически, если у вас один аккаунт.
  • Расход токенов резко растёт: примерно до 244K вместо ~1K. Имеет смысл отключать Code Mode только если вам действительно нужно составлять этот сервер с другими Code Mode‑системами и ваш стек так устроен.

GraphQL Analytics API

MCP‑сервер умеет автоматически распознавать и обрабатывать GraphQL Analytics API Cloudflare. Запросы GraphQL идут через тот же инструмент execute.

Пример запроса аналитики по зоне за 7 дней:

execute ( {
  code : `async () => {
    const response = await cloudflare.request({
      method: "POST",
      path: "/client/v4/graphql",
      body: {
        query: `query {
          viewer {
            zones(filter: { zoneTag: "your-zone-id" }) {
              httpRequests1dGroups(limit: 7, orderBy: [date_ASC]) {
                dimensions { date }
                sum { requests bytes cachedBytes }
              }
            }
          }
        }`,
        variables: {}
      }
    });
    return response.result;
  }` ,
  account_id : "your-account-id" ,
} ) ;

Это позволяет агенту строить запросы к аналитике Cloudflare тем же способом, что и к остальной API, без отдельной интеграции под GraphQL.

Если вы хотите собрать свой Code Mode MCP‑сервер

Cloudflare использует Dynamic Worker Loader API, чтобы запускать сгенерированный агентом код в изолированных Workers по паттерну Code Mode.

Если вы планируете повторить такой подход для другой крупной API:

  • Храните OpenAPI‑спеку на стороне сервера.
  • Давайте агенту только инструменты для поиска по спека и выполнения HTTP‑запросов.
  • Используйте SDK Code Mode (Cloudflare даёт документацию по этому паттерну), чтобы упростить запуск динамического кода.

Для разработчиков агентов это хороший ориентир, как упаковать большую API в MCP‑сервер, который почти не трогает контекст, но даёт полное покрытие возможностей.


Читайте также

🔗 Источник: https://github.com/cloudflare/mcp