MCP съедает контекст: 111 тысяч токенов до первого слова
Вы ещё не написали ни одного слова в чате, а Claude уже «прочитал» текст размером с небольшую книгу. Разработчик под ником mcptokensaver подключил десять популярных MCP-серверов к счётчику токенов и получил число, которое объясняет, почему агентные сессии внезапно «падают с обрыва» посреди работы: 111 713 токенов. Это схемы инструментов, которые протокол загружает в контекстное окно при старте. До первого вопроса, до первого вызова инструмента, просто потому что так устроен стандартный паттерн подключения.
Что такое MCP и где он «тратит» контекст
MCP (Model Context Protocol): открытый протокол Anthropic для подключения LLM к внешним инструментам, базам данных и API через стандартизированные серверы. Его называли «USB-C для ИИ», его поддержали OpenAI и Google, у него 97 миллионов загрузок в месяц и около 17 тысяч серверов в экосистеме.
Проблема не в самом протоколе, а в паттерне реализации: при подключении сервера описание каждого его инструмента (название, параметры, типы, примеры) сериализуется в JSON-схему и целиком вставляется в системный контекст модели. Одна схема занимает от нескольких сотен до нескольких тысяч токенов. Серверов обычно несколько, и схемы суммируются.
Замер: сколько стоят десять серверов
Вот что показал счётчик (tiktoken, cl100k_base, то есть реальные измерения, а не оценки) для десяти популярных серверов:
| Сервер | Инструментов | Токенов схем |
|---|---|---|
| Filesystem | 11 | 3 847 |
| Brave Search | 8 | 2 103 |
| Sequential Thinking | 3 | 890 |
| Memory | 9 | 2 567 |
| Puppeteer | 15 | 5 890 |
| Postgres | 19 | 8 231 |
| Notion | 24 | 13 780 |
| GitHub | 28 | 12 440 |
| Slack | 22 | 14 672 |
| Google Drive | 31 | 47 293 |
| Итого | 170 | 111 713 |
Чемпион по аппетиту: Google Drive с 31 инструментом и почти 47 тысячами токенов. Один этот сервер съедает четверть контекстного окна в 200K. Следом идут Slack и Notion, каждый с заметным пятизначным «весом».
Почему схемы вообще такие тяжёлые
Посмотрите на типичную JSON Schema одного инструмента: название, описание на естественном языке, объект parameters с типами, обязательными полями, вложенными объектами, перечислениями допустимых значений и примерами. Описание параметра вроде «максимальное количество результатов поиска, целое число от 1 до 20» занимает десятки токенов, хотя по смыслу это три слова. Умножьте на 19 параметров Postgres-сервера, добавьте вложенные схемы для фильтров и сортировок, и вот уже восемь тысяч токенов на один сервер. JSON Schema проектировалась для валидации данных программами, а не как компактный формат для чтения моделью, и это видно по каждому килобайту.
Есть и второй, менее очевидный эффект. Даже если контекстное окно технически вмещает схемы, качество модели на длинном контексте не равномерно: исследования типа «Lost in the Middle» показывают, что LLM хуже используют информацию из середины длинного контекста. Сто десять тысяч токенов схем не просто занимают место, они размывают внимание модели и повышают шанс, что она проигнорирует важную инструкцию или перепутает параметры похожих инструментов. Чем больше инструментов подключено, тем выше вероятность неправильного вызова.
Математика, которая злит
Переведём токены в деньги по тарифам Claude Sonnet (3 доллара за миллион входных токенов). Каждый новый разговор стартует с 111K токенов накладных расходов, это 33 цента за сессию. При 20 разговорах в день выходит 6,67 доллара ежедневно, при 22 рабочих днях: 147 долларов в месяц. За год набегает 1764 доллара, и это больше, чем годовая подписка Claude Pro. По сути, вы платите за то, что модель каждый раз заново читает JSON-скобки с описанием инструментов, которыми вы, возможно, вообще не воспользуетесь в этой сессии.
И это только половина истории. Когда инструмент реально вызывается, MCP оборачивает результат в собственную структуру: объект content с массивом, внутри которого объект с полями type и text, а уже внутри него, в виде экранированной строки, лежит сам результат. В примере из замера полезная нагрузка занимает 38 символов, а обёртка: 47. То есть около 55% токенов результата: это служебный JSON. С 20 вызовами инструментов за разговор суммарный оверхед сессии достигает примерно 130 тысяч токенов, которые не несут никакой смысловой нагрузки.
Почему это ударило именно сейчас
Когда Anthropic проектировала MCP в 2024 году, контекстные окна в 200K токенов казались бездонными. Загрузить 100K схем и оставить 100K на работу выглядело приемлемым компромиссом. Но за два года паттерн использования изменился: агентные рабочие процессы стали длинными, многошаговыми, с цепочками рассуждений и десятками вызовов инструментов подряд.
Теперь типичная ситуация выглядит так: вы на тридцатом сообщении отладки продакшн-инцидента, контекст уже занят на 150K токенов логами, кодом и рассуждениями, и тут выясняется, что 111K сверху занято схемами. Модель начинает терять ранние части разговора, качество ответов деградирует, сессия «падает с обрыва». Именно это имел в виду CEO Y Combinator Гарри Тан, когда сказал своё знаменитое «MCP sucks honestly», и именно об этом говорил Питер Штайнбергер, основатель OpenClaw: «MCP были ошибкой, bash лучше».
Самое интересное: Anthropic первая признала проблему
Ирония в том, что самое жёсткое решение предложила сама Anthropic. В инженерном блоге компании описан подход, при котором потребление токенов на работу с инструментами падает со 150 тысяч до 2 тысяч, то есть на 98,7%. Суть: перестать загружать схемы инструментов в контекст и вместо этого позволить модели писать код, который вызывает инструменты в рантайме. Модель видит не простыню JSON-описаний, а компактный программный интерфейс, и комбинирует вызовы в коде, не протаскивая промежуточные результаты через контекст.
Cloudflare довела идею до предела. Их API насчитывает около 2500 эндпоинтов, и описание всех схем потребовало бы 1,17 миллиона токенов. Вместо этого они оставили ровно две функции: search для поиска нужного эндпоинта и execute для его вызова. Итоговый «вес» интерфейса: около тысячи токенов. Из 1,17 миллиона в тысячу: это уже не оптимизация, а признание того, что исходная архитектура загрузки схем была ошибочной для систем такого масштаба.
В агентных пайплайнах проблема умножается. Когда оркестратор порождает субагентов, каждый из них получает собственную копию схем инструментов в своём контексте. Пять субагентов с тем же набором серверов: это уже полмиллиона токенов схем на один рабочий процесс, и за каждую копию вы платите по полному тарифу. Именно поэтому команды, которые строят мультиагентные системы, первыми и переходят на код вместо схем: при их масштабах оверхед превращается из досадной мелочи в главную статью расходов на инференс.
«Но у MCP 97 миллионов загрузок»
Возражение понятное, но популярность не доказывает правильность дизайна. У jQuery были миллиарды загрузок, и это не помешало индустрии уйти на современные фреймворки, когда появились альтернативы. MCP был первым, его поддержал крупный игрок, а альтернативы просто не успели созреть.
Показателен эксперимент разработчика с Hacker News, который три месяца гонял 15 MCP-серверов в реальной работе и оставил только шесть. Верхний комментарий в обсуждении формулирует правило жёстко: «GitHub MCP бесполезен, у Claude Code есть встроенный gh CLI. То же с Playwright». Как только существует CLI-эквивалент, MCP проигрывает: командная строка не тащит за собой схемы в контекст. Выживают только те серверы, для которых CLI-альтернативы нет.
Что с этим делать
Первый шаг: аудит. Посчитайте, сколько токенов съедают ваши подключённые серверы, и отключите всё, чем не пользуетесь ежедневно. Разница между «десятью серверами на всякий случай» и «тремя нужными прямо сейчас» измеряется десятками тысяч токенов в каждой сессии.
Второй шаг: там, где есть CLI-инструмент, используйте его вместо MCP-сервера. gh для GitHub, psql для Postgres, обычный bash для файловой системы. Модель отлично вызывает команды, а описание команды весит на порядки меньше JSON-схемы.
Третий шаг: если серверы всё же нужны, смотрите в сторону прокси-слоёв, которые кешируют схемы и подгружают их по требованию. Автор замера, например, собрал mcptoon: CLI-прокси, который инжектирует описания инструментов один раз, срезает обёртку результатов и сжимает 170 инструментов со 111 тысяч токенов до 3,2 тысячи за счёт компактного формата TOON. Стоимость сессии при этом падает с 33 центов до одного. Инструмент открытый, Apache 2.0, но главное не конкретная реализация, а сам паттерн: схемы по запросу, чистый текст в ответах, никакого JSON ради JSON.
Часто задаваемые вопросы
MCP мёртв?
Нет. Стандартизованный интерфейс инструментов нужен, и протокол свою задачу решает. Проблема в паттерне «загрузить все схемы в контекст при старте». Anthropic с code execution и Cloudflare с search/execute показали, как тот же протокол использовать иначе: модель обращается к инструментам через код и поиск, а не через простыню схем в системном промпте.
У меня два сервера, мне тоже надо беспокоиться?
Зависит от серверов. Два лёгких сервера вроде Brave Search и Sequential Thinking стоят около 3 тысяч токенов, это терпимо. Но один Google Drive или Slack потянут 15–47 тысяч. Проверьте свою конфигурацию счётчиком токенов, это вопрос пяти минут, а не догадок.
Чем заменить MCP, если сервер нужен постоянно?
Сначала проверьте, нет ли CLI-альтернативы: для GitHub, Postgres и файловой системы она есть. Если нет, используйте прокси с кешированием схем или переходите на паттерн code execution, где модель сама пишет код вызовов. В обоих случаях контекст тратится на работу, а не на описание инструментов.
Итог
MCP как протокол останется, а вот привычка загружать все схемы инструментов в контекст уходит: Anthropic и Cloudflare уже показали альтернативу с экономией в 98%+ токенов. Практический вывод простой: прямо сейчас откройте свою конфигурацию MCP, посчитайте стоимость схем в токенах и отключите всё лишнее. Если после очистки осталось больше 10–15 тысяч токенов схем, значит, вы всё ещё платите за JSON-скобки, и пора переносить часть интеграций на CLI или прокси-слой.