Перейти к основному содержимому

Налог на токены MCP

Продвинутый

В этом месяце на Hacker News и в X идёт спор: зачем сжигать десятки тысяч токенов на одну операцию MCP, когда то же самое через CLI стоит пару сотен? Звучит как критика MCP. Это не так. Самые громкие критики — это те, кто любит агентов, просто они уже увидели счёт. Эта страница — практическое руководство по этому счёту: куда на самом деле уходят токены, две затраты, которые почти никто не разделяет, и три исправления, превращающие рабочий процесс на 150 000 токенов в процесс на 2 000.

What you'll learn
  • Разделить ДВЕ различные затраты токенов MCP: загрузку определений инструментов и промежуточные результаты
  • Понять, почему стоимость схемы платится за каждый разговор, а не единожды
  • Использовать defer_loading и Tool Search Tool для загрузки схем инструментов по требованию
  • Использовать выполнение кода / Programmatic Tool Calling, чтобы держать большие результаты вне контекста
  • Решать для каждой задачи, когда MCP-инструмент того стоит, а когда выигрывает обычный вызов CLI

Две затраты, а не одна

Когда вы подключаете MCP-сервер, клиент запрашивает у него tools/list и получает обратно каждый инструмент с его полной JSON-схемой. Весь этот блок внедряется в контекст модели. Большинство людей на этом заканчивают свой мысленный подсчёт. Но существует два отдельных налога, и второй обычно больше.

Затрата 1 — Определения инструментов. Имя, описание и схема параметров каждого подключённого инструмента находятся в контексте. Собственная формулировка Anthropic: "В случаях, когда агенты подключены к тысячам инструментов, им нужно обрабатывать сотни тысяч токенов ещё до прочтения запроса." Один корпоративный сервер может публиковать десятки или сотни инструментов; сторонние анализы оценивают сервер с 400 инструментами примерно в 400 000 токенов только на схемы — больше, чем может вместить 200-тысячное контекстное окно Claude.

Затрата 2 — Промежуточные результаты. Когда модель вызывает инструмент напрямую, каждый результат возвращается через контекст модели, даже те части, которые вы никогда не хотели, чтобы она читала. Пример Anthropic: получить транскрипт двухчасовой встречи из одного инструмента и передать его в другой — и полный транскрипт пройдёт через модель дважды — потенциально ~50 000 токенов — просто чтобы получить однострочное резюме.

Watch out
  • Затрата 1 платится КАЖДЫЙ ход, пока не сработает prompt caching — схемы пересылаются с каждым запросом в разговоре, а не загружаются один раз. Большой каталог инструментов — это налог на всю сессию, а не разовая плата.
  • Затрата 2 масштабируется с вашими ДАННЫМИ, а не с количеством инструментов. Десять крошечных инструментов могут быть дешевле одного инструмента, возвращающего гигантский блок.

Цифры из первоисточников

ИсправлениеЗадачаДоПослеСокращение
Выполнение кода с MCPРабочий процесс Google Drive → Salesforce150 0002 00098,7%
Tool Search ToolЗагрузка определений до начала работы~77 000~8 70085%
Programmatic Tool CallingСложная исследовательская задача43 58827 29737%

Все три строки — это опубликованные цифры Anthropic. Удивляет не стоимость, а точность: с Tool Search Tool точность выбора инструментов выросла (Opus 4.5: 79,5% → 88,1%; Opus 4: 49% → 74%). Меньше инструментов, забивающих контекст, — и модель чаще выбирает правильный. Стоимость и качество здесь движутся в одном направлении, что бывает редко.

Исправление 1 — Загружайте схемы инструментов по требованию

Вместо того чтобы внедрять все схемы заранее, помечайте их defer_loading: true. Claude тогда видит только облегчённый индекс; когда ему нужен GitHub, он вызывает Tool Search Tool, который возвращает только соответствующие схемы GitHub — а не 50+ инструментов со всех остальных серверов. Anthropic сообщает, что это сохраняет ~191 300 токенов контекста против ~122 800 при предварительной загрузке всего.

Вы наблюдаете этот паттерн прямо сейчас, если используете Claude Code с большим количеством MCP-серверов: инструменты приходят отложенными, и агент получает каждую схему через шаг поиска только тогда, когда задача этого требует. Согласно сообщениям сообщества, Claude Code автоматически включает MCP Tool Search, как только описания ваших подключённых инструментов превышают ~10% контекстного окна — проверяйте точный триггер в вашей версии.

Guided walkthrough1 of 3
  1. Перечислите активные серверы и примерное количество публикуемых каждым инструментов. Сервер, который вы подключили для одной задачи неделю назад, до сих пор облагает налогом каждый ход.

Исправление 2 — Держите результаты вне контекста с помощью выполнения кода

Более глубокое исправление нацелено на Затрату 2. Вместо того чтобы модель вызывала инструменты один за другим, пропуская каждый результат через себя, модель пишет код, который вызывает инструменты, а промежуточные данные остаются в среде выполнения. Anthropic предоставляет MCP-серверы как файловое дерево инструментов, которое агент исследует как файловую систему, загружая только нужные определения — и "промежуточные результаты по умолчанию остаются в среде выполнения… агент видит только то, что вы явно логируете или возвращаете."

Именно это единственное изменение дизайна и сокращает рабочий процесс Drive→Salesforce со 150 000 до 2 000 токенов: записи проходят через код, и только финальный подсчёт возвращается в модель. На Developer Platform та же идея выпущена как Programmatic Tool Calling — Claude пишет Python, который оркестрирует несколько инструментов и фильтрует выходные данные ещё до того, как они попадают в её контекст.

Pro tip
  • Правило большого пальца: если инструмент ВОЗВРАЩАЕТ что-то большое (транскрипт, дамп запроса, файл), вам нужно выполнение кода, чтобы блок обрабатывался вне контекста. Если инструмент просто ДЕЛАЕТ что-то маленькое (создаёт issue, отправляет одну строку), прямой вызов подойдёт.

Исправление 3 — Знайте, когда вызов CLI просто побеждает

Иногда правильный ответ — не лучшая настройка MCP, а полное отсутствие MCP. У аргумента с HN/X есть реальный смысл: команда оболочки вроде gh pr list или psql -c '…' стоит пару сотен токенов туда-обратно, тогда как эквивалентный путь через MCP платит за схемы плюс структурированный результат. Если у агента уже есть терминал и существует CLI, это часто самый экономичный путь.

Предпочитайте CLI, когда инструмент уже является CLI

# Instead of connecting a GitHub MCP server for read-only work,
# let the agent use the gh CLI it already has:
gh pr list --state open --json number,title,author

# ~200 tokens of command + compact output, no schema tax,
# no server to keep connected across the session.

MCP оправдывает свои накладные расходы, когда вам нужна типизированная, с разрешениями, кросс-платформенная возможность — база данных с ролью только для чтения, браузер, которым он может управлять, SaaS API с OAuth — или когда одни и те же инструменты повторно используются во многих ходах, так что кэширование амортизирует стоимость схемы. Тянитесь к CLI, когда возможность разовая, уже скриптуема и возвращает что-то маленькое. Ни одно не "лучше"; это разные точки на кривой стоимости.

Key takeaways
  • У MCP есть две затраты токенов: схемы определений инструментов (платятся ~каждый ход) и промежуточные результаты (масштабируются с вашими данными).
  • Tool Search + defer_loading сокращают стоимость схем на ~85% И повышают точность выбора инструментов — загружайте схемы только при поиске.
  • Выполнение кода / Programmatic Tool Calling держат большие результаты в среде выполнения; в модель попадает только то, что вы логируете или возвращаете (150k → 2k в примере Anthropic).
  • Самая дешёвая оптимизация — подключать меньше серверов на задачу.
  • Когда возможность разовая, возвращает что-то маленькое и уже имеет CLI, вызов оболочки (~200 токенов) побеждает MCP-обмен.
Термины экономики MCP
Нажмите Enter или пробел, чтобы перевернуть карточку. Используйте стрелки влево и вправо для перехода между карточками.Показан термин.
1 / 5

Проверьте себя

0/4
  1. Почему стоимость определений инструментов хуже, чем разовая плата?
  2. Инструмент вытаскивает 2-часовой транскрипт и передаёт его инструменту-суммаризатору через прямые вызовы. Какая скрытая стоимость?
  3. Вам нужен единичный 'список открытых PR' только для чтения во время сессии кодирования, и у агента есть терминал. Самый экономичный вариант?
  4. Что удивительного происходит с точностью выбора инструментов при использовании Tool Search Tool?

По теме на AILmanac

Источники и дальнейшее чтение