←Все статьи блога
грабли·1 сентября 2026 г.·8 мин чтения·8 просмотров

Умный агент, глупые счета: как три MCP-сервера сожрали 72% вашего бюджета ещё до первого слова

Вы подключили гитхаб и слэк к ИИ-агенту. Он стал умнее, но треть окна контекста сгорела на описания инструментов — платите за это в каждом диалоге.

Умный агент, глупые счета: как три MCP-сервера сожрали 72% вашего бюджета ещё до первого слова

Знакомая картина. Вы собрали себе идеального цифрового помощника. Подключили через протокол MCP (Model Context Protocol — стандарт, по которому нейросеть видит внешние инструменты) три полезных сервера: Гитхаб для кода, Слак для общения с командой и таск-трекер вроде Джиры или Ютрэка. Агент действительно начал соображать лучше. Он знает, кто кому написал в чат, какие задачи висят в бэклоге (списке дел), где открыт пулл-реквест (запрос на добавление кода).

Но открываете биллинг провайдера и видите цифру, от которой хочется протереть глаза. За каждый новый разговор вы отдаёте деньги так, будто модель решает сложнейшие математические теоремы. А она даже не услышала вашу задачу.

Шаг первый. Поймайте агента за руку прямо перед стартом

Давайте посчитаем ваши невидимые расходы. В интерфейсе вашей платформы есть счётчик токенов при вводе. Токен — это минимальная единица текста для модели, обычно кусочек слова из трёх-четырёх букв. Напишите пустое сообщение или просто нажмите «Старт диалога». Посмотрите на число входных токенов до того, как появится курсор для ввода вопроса.

В реальном кейсе автора было ровно то, что описано в коротком посте: три сервера (Гитхаб, Слак, трекер ошибок), суммарно около 40 инструментов. На старте каждого нового чата улетало 143 тысячи токенов из лимита в 200 тысяч. Это 72%. Модель тратит больше двух третей своей оперативной памяти только на чтение меню ресторана, хотя вы ещё даже не сделали заказ. При средней цене API-провайдера около 0,002 доллара за тысячу токенов получается примерно 28 центов налога на воздух с каждого запуска. Если команда делает сто таких запросов в день — почти тридцать долларов в сутки сгорает на описание кнопок, которые никто не нажимает.

Почему так происходит? При инициализации сессии ваш агент получает не только приветствие. Он грузит в своё окно контекста полное техническое описание каждого инструмента каждого MCP-сервера. Имя функции, тип данных каждого параметра, обязательность поля, примеры вызова, ограничения формата. У одного сервера типа Слака легко набегает пять-шесть тысяч токенов документации на десяток методов отправки сообщений и чтения каналов. Умножьте на количество серверов. Десять коннекторов по пятнадцать инструментов превращаются в семьдесят-восемьдесят тысяч токенов служебного текста. Это не ошибка протокола, это его специфика: чтобы модель могла гарантированно вызвать функцию, ей нужно выдать исчерпывающую инструкцию.

Шаг второй. Загляните под капот и ужаснитесь составу этого мусора

Теперь разберём эти 143 тысячи токенов из примера. Откройте логи загрузки контекста (они обычно доступны в режиме разработчика) или попросите самого агента честно расписать структуру своего системного промпта. Вы увидите там монструозный JSON-блок. Внутри — массив tools.

Возьмём один безобидный инструмент из нашего кейса, например get_slack_channel_history. Его описание занимает не строчку «прочитать канал». Там будет имя, подробное текстовое описание («возвращает последние N сообщений из указанного канала...»), объект parameters со свойствами channel_id (строка, пример C12345), limit (целое число от 1 до 999, по умолчанию 100), inclusive_start (булево значение true/false). Плюс отдельный блок examples: вот так запросить публичный канал, вот так приватный, вот так с пагинацией (постраничной выдачей). Один этот метод отъедает триста-четыреста токенов. Сорок таких методов дают те самые десятки тысяч символов, которые модель вынуждена держать в голове на случай, если вы вдруг захотите прочитать историю переписки.

А теперь главное. Сколько раз за последний месяц работы над вашим проектом вам реально нужен был именно этот get_slack_channel_history? Скорее всего, ноль или один. Но платить за него приходится в каждом из ста ежедневных диалогов. Таск-трекер добавляет свои сорок-пятьдесят тысяч токенов ради функций смены статусов задач, которых у вас девяносто процентов времени нет в сценарии. Гитхаб тянет документацию по созданию форков (копий репозитория) и деплоев (выкатки кода на сервер), хотя сегодня вы просто хотите спросить: «почему упал тест номер семнадцать».

Шаг третий. Проведите хирургию без анестезии и замерьте пульс

Решение не требует писать код. Оно требует включить режим скряги. Зайдите в настройки ваших MCP-коннекторов. Перед вами список всех активных серверов. Ваша задача — оставить включенным только тот, который нужен для конкретной рабочей сессии. Прямо сейчас вы чините упавший тест? Оставляйте только Гитхаб. Всё остальное отключайте одним кликом. Нужно обсудить в команде правки в задаче? Оставляйте только трекер. Нужны цитаты из рабочего чата — только Слак.

Сделайте это прямо сегодня. Отключите два сервера из трёх. Запустите пустой диалог снова. Было 143 тысячи токенов на входе? Станет около сорока-пятидесяти тысяч. Освободилось почти сто тысяч токенов чистого пространства под вашу реальную задачу. В окне 200К это разница между работой на пределе возможностей и комфортным запасом в половину окна.

Для закрепления привычки заведите себе четыре профиля конфигурации. Profile A — соло-кодинг (только Гитхаб). Profile B — дейли стендап (Слак плюс трекер). Profile C — рефакторинг базы (только база данных, все остальные MCP вырублены наглухо). Profile D — полный фарш, когда вы запускаете сложный многоступенчатый сценарий, где агенту правда нужно прыгать между всеми системами сразу. Переключение профилей в современных платформах делается двумя кликами в сайдбаре (боковой панели).

Шаг четвёртый. Научитесь отличать нужду от хотелки (и почистите сами описания)

Если отключить сервер нельзя, потому что проект монолитный, идите внутрь настроек конкретного MCP. Большинство платформ позволяют редактировать манифест (описание) сервера. Удалите оттуда всё, чем не пользуетесь полгода. Кнопка «пересоздать вебхук», метод «архивировать организацию», функция «импорт из CSV» — если они не нужны вашему текущему процессу, ножницами их из описания. Каждый выпиленный метод возвращает вам сотни токенов навсегда.

Второй уровень чистки — агрессивная краткость. Замените витиеватые тексты примеров на сухие схемы. Вместо абзаца «данная функция позволяет пользователю получить актуальную информацию о состоянии репозитория...» напишите «статус репы [owner/repo]». Вместо пяти вариантов использования оставьте один самый частый. Описание параметров сократите до имени и типа. Грамотно обрезанное описание одного инструмента с четырёхсот токенов легко ужимается до восьмидесяти без потери работоспособности. На сорока инструментах это экономия в двенадцать тысяч токенов на ровном месте.

Что произойдёт завтра, когда вы это внедрите? Во-первых, просядут счета. Те же сто диалогов в день вместо тридцати долларов будут стоить десять. Двенадцать тысяч рублей разницы в месяц просто за счёт дисциплины подключения. Во-вторых, агент перестанет галлюцинировать. Чем меньше инструкций болтается в контексте, тем реже модель путает похожие названия методов разных серверов и вызывает гитхаб вместо слака. В-третьих, ответы станут быстрее. Модели физически проще искать иголку в стоге сена из пятидесяти тысяч токенов, чем в плотном бурьяне на двести тысяч.

Проведите эксперимент длиной в одну рабочую неделю. Понедельник — работаете на полном фарше, записываете сумму счёта и среднее время ответа. Вторник, среда, четверг — жёстко держите только один активный MCP под задачу дня. Пятница — сравниваете цифры. Разница в потраченных токенах составит два-три раза, а субъективное ощущение скорости работы мозга у ассистента вырастет вдвое. Ваши грабли закончились. Теперь агент работает на вас, а не на оплату облачных грантов.