Налог на токены MCP
В этом месяце на Hacker News и в X идёт спор: зачем сжигать десятки тысяч токенов на одну операцию MCP, когда то же самое через CLI стоит пару сотен? Звучит как критика MCP. Это не так. Самые громкие критики — это те, кто любит агентов, просто они уже увидели счёт. Эта страница — практическое руководство по этому счёту: куда на самом деле уходят токены, две затраты, которые почти никто не разделяет, и три исправления, превращающие рабочий процесс на 150 000 токенов в процесс на 2 000.
- Разделить ДВЕ различные затраты токенов 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 токенов — просто чтобы получить однострочное резюме.
- Затрата 1 платится КАЖДЫЙ ход, пока не сработает prompt caching — схемы пересылаются с каждым запросом в разговоре, а не загружаются один раз. Большой каталог инструментов — это налог на всю сессию, а не разовая плата.
- Затрата 2 масштабируется с вашими ДАННЫМИ, а не с количеством инструментов. Десять крошечных инструментов могут быть дешевле одного инструмента, возвращающего гигантский блок.
Цифры из первоисточников
| Исправление | Задача | До | После | Сокращение |
|---|---|---|---|---|
| Выполнение кода с MCP | Рабочий процесс Google Drive → Salesforce | 150 000 | 2 000 | 98,7% |
| Tool Search Tool | Загрузка определений до начала работы | ~77 000 | ~8 700 | 85% |
| Programmatic Tool Calling | Сложная исследовательская задача | 43 588 | 27 297 | 37% |
Все три строки — это опубликованные цифры 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% контекстного окна — проверяйте точный триггер в вашей версии.
- Перечислите активные серверы и примерное количество публикуемых каждым инструментов. Сервер, который вы подключили для одной задачи неделю назад, до сих пор облагает налогом каждый ход.
- Самое дешёвое исправление — меньше серверов. Подключайте два-три, которые действительно использует задача, а не весь ваш каталог.
- Для серверов, которые вы держите подключёнными, но редко используете, предпочитайте клиент/конфигурацию, поддерживающие defer_loading + Tool Search, чтобы их схемы загружались только при поиске.
Исправление 2 — Держите результаты вне контекста с помощью выполнения кода
Более глубокое исправление нацелено на Затрату 2. Вместо того чтобы модель вызывала инструменты один за другим, пропуская каждый результат через себя, модель пишет код, который вызывает инструменты, а промежуточные данные остаются в среде выполнения. Anthropic предоставляет MCP-серверы как файловое дерево инструментов, которое агент исследует как файловую систему, загружая только нужные определения — и "промежуточные результаты по умолчанию остаются в среде выполнения… агент видит только то, что вы явно логируете или возвращаете."
Именно это единственное изменение дизайна и сокращает рабочий процесс Drive→Salesforce со 150 000 до 2 000 токенов: записи проходят через код, и только финальный подсчёт возвращается в модель. На Developer Platform та же идея выпущена как Programmatic Tool Calling — Claude пишет Python, который оркестрирует несколько инструментов и фильтрует выходные данные ещё до того, как они попадают в её контекст.
- Правило большого пальца: если инструмент ВОЗВРАЩАЕТ что-то большое (транскрипт, дамп запроса, файл), вам нужно выполнение кода, чтобы блок обрабатывался вне контекста. Если инструмент просто ДЕЛАЕТ что-то маленькое (создаёт 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, когда возможность разовая, уже скриптуема и возвращает что-то маленькое. Ни одно не "лучше"; это разные точки на кривой стоимости.
- У MCP есть две затраты токенов: схемы определений инструментов (платятся ~каждый ход) и промежуточные результаты (масштабируются с вашими данными).
- Tool Search + defer_loading сокращают стоимость схем на ~85% И повышают точность выбора инструментов — загружайте схемы только при поиске.
- Выполнение кода / Programmatic Tool Calling держат большие результаты в среде выполнения; в модель попадает только то, что вы логируете или возвращаете (150k → 2k в примере Anthropic).
- Самая дешёвая оптимизация — подключать меньше серверов на задачу.
- Когда возможность разовая, возвращает что-то маленькое и уже имеет CLI, вызов оболочки (~200 токенов) побеждает MCP-обмен.
Проверьте себя
0/4По теме на AILmanac
- MCP-серверы в Claude Code — как добавлять, ограничивать и защищать серверы.
- Экономика токенов — сжатие вывода команд перед тем, как он попадёт в модель.
- Динамические рабочие процессы — где проявляется стоимость оркестрации и как её нарезать для оценки расходов.
- Использование инструментов в API — форма запросов/ответов, стоящая за всем этим.
Источники и дальнейшее чтение
- Code execution with MCP: building more efficient AI agents — Anthropic Engineering. Источник цифры 150 000 → 2 000 токенов (98,7%) и паттерна "промежуточные результаты остаются в среде выполнения".
- Introducing advanced tool use on the Claude Developer Platform — Anthropic Engineering. Tool Search Tool (
defer_loading, ~85% сокращение, прирост точности) и Programmatic Tool Calling (43 588 → 27 297 токенов). - Документация Claude Code по MCP — официальный справочник по подключению и ограничению серверов.
- modelcontextprotocol — обсуждение Progressive Tool Discovery — дискуссия сообщества о загрузке инструментов по требованию.
- MCP Progressive Disclosure (Solo.io) — сторонний разбор паттерна облегчённого индекса / получения схемы по требованию.