- Дата публикации
Mcp2cli: как сократить расход токенов на инструменты до 99%
Что появилось / что изменилось
Mcp2cli — это утилита, которая превращает любой MCP‑сервер или OpenAPI‑спеку в CLI‑команду прямо на лету, без генерации кода.
Ключевые изменения по сравнению с «чистым» MCP:
- Поддержка трёх режимов работы:
- MCP по HTTP/SSE (
--mcp https://.../sse) - MCP через stdio (
--mcp-stdio "npx @modelcontextprotocol/server-filesystem /tmp") - Любая OpenAPI‑спека как источник CLI (
--spec URL|FILE).
- MCP по HTTP/SSE (
- Снижение расхода токенов на схемы инструментов на 96–99% по сравнению с нативным MCP.
- Встроенный формат вывода TOON, который экономит ещё 40–60% токенов по сравнению с JSON на больших однотипных массивах.
- Кэширование спек и списков MCP‑инструментов в
~/.cache/mcp2cli/с TTL по умолчанию 1 час и ручным управлением--refresh,--cache-ttl,--cache-key. - Навык для AI‑агентов (Claude Code, Cursor, Codex): через
агент учится сам находить MCP‑серверы и OpenAPI‑эндпоинты и вызывать их как CLI.npx skills add knowsuchagency/mcp2cli --skill mcp2cli
Дополнительно появились удобные опции:
- Авторизация через
--auth-header "K:V"(можно указывать несколько раз). - Принудительный
--base-urlдля спек, где это не прописано. - Управление окружением для MCP stdio через
--env KEY=VALUE. - Переключатели вывода:
--pretty,--raw,--toon.
Как это работает
Идея простая: вместо того чтобы каждый раз заливать в контекст LLM полные схемы MCP или OpenAPI, Mcp2cli выносит всё общение с API в отдельный CLI.
Под капотом происходит следующее:
-
Динамическая генерация подкоманд.
- При запуске с
--spec,--mcpили--mcp-stdioутилита загружает OpenAPI или список MCP‑инструментов. - На основе этой схемы она строит CLI‑подкоманды и их флаги. Например,
list-pets,create-item,search. - Никакой генерации Python‑кода на диск нет, всё работает в рантайме.
- При запуске с
-
Кэширование схем.
- Спеки и списки MCP‑инструментов сохраняются в
~/.cache/mcp2cli/. - По умолчанию TTL — 3600 секунд. Можно менять через
--cache-ttlили форсировать обновление через--refresh. - Локальные файлы (
./spec.json,./api.yaml) не кэшируются.
- Спеки и списки MCP‑инструментов сохраняются в
-
Транспорт MCP.
- В HTTP/SSE‑режиме утилита подключается к MCP‑серверу по URL (
--mcp https://.../sse) и вызывает инструменты напрямую. - В stdio‑режиме она запускает произвольную команду (
--mcp-stdio "node server.js") и общается с MCP‑сервером через стандартный ввод/вывод. Переменные окружения передаются через--env.
- В HTTP/SSE‑режиме утилита подключается к MCP‑серверу по URL (
-
Работа с OpenAPI.
- При
--spec URL|FILEMcp2cli парсит JSON/YAML, строит из эндпоинтов команды и аргументы. - Тело запроса можно передать через stdin (
--stdin), например:echo '{"name": "Fido"}' | mcp2cli --spec ./spec.json create-pet --stdin
- При
-
Оптимизация вывода для LLM.
--prettyформатирует JSON для человека.--rawотдаёт тело ответа без парсинга.--toonкодирует большой однотипный массив в формат, который даёт 40–60% экономии токенов относительно JSON при потреблении LLM.
За счёт того, что в контексте LLM оказывается только «инструкция, как дергать CLI», а не весь OpenAPI/MCP, расход токенов на описания инструментов падает на 96–99%.
Что это значит для вас
Если вы строите агента на базе Claude 4, Claude Code, Cursor или Codex и подключаете к нему десятки API, у вас есть конкретная проблема: каждый MCP‑сервер и каждая OpenAPI‑спека раздувают системный промпт.
Пример из реальных измерений: 6 MCP‑серверов с 84 инструментами съедают около 15 540 токенов уже на старте сессии. Даже если модель в итоге вызовет один инструмент, вы платите за все схемы целиком на каждом сообщении.
Mcp2cli предлагает другой подход:
- Подключаете API и MCP‑серверы как внешние CLI‑команды.
- Учитe агента пользоваться
mcp2cliкак одним универсальным инструментом. - Инструменты и эндпоинты подгружаются по требованию, когда агенту реально нужно вызвать конкретный метод.
Где это полезно:
- Много внутренних сервисов, микросервисная архитектура, десятки OpenAPI‑спек.
- Большие MCP‑инсталляции с десятками инструментов, где токены «съедает» только схема.
- Сценарии, где важна максимальная длина контекста (долгие сессии, сложные цепочки запросов).
Где стоит подумать дважды:
- Небольшие проекты с 1–2 простыми инструментами. Там экономия токенов не так заметна, а дополнительный слой CLI может усложнить отладку.
- Сценарии, где требуются строгие ограничения окружения (например, запреты на запуск внешних бинарников). В таких случаях нужно отдельно оценивать, можно ли безопасно вызывать
mcp2cli.
Про доступность: исходный инструмент распространяется через pip и npx. Для России может понадобиться VPN, если блокируются исходные репозитории или регистрация в соответствующих сервисах.
Место на рынке
Похожую задачу — не заливать все инструменты в контекст сразу — решает Tool Search в API Anthropic. Там разработчик помечает инструменты флагом defer_loading: true, а Claude ищет нужный инструмент через индекс примерно на 500 токенов, вместо загрузки всех схем. Это даёт около 85% экономии токенов.
Mcp2cli идёт другим путём:
- Он вообще выносит инструменты из контекста LLM в отдельный CLI.
- Экономия токенов на описаниях инструментов достигает 96–99% по сравнению с нативным MCP.
- Дополнительно формат TOON даёт 40–60% экономии по сравнению с JSON именно на этапе чтения больших ответов моделью.
Разница по сути в архитектуре:
- Tool Search остаётся внутри API Anthropic и работает только с Claude.
- Mcp2cli живёт как обычный CLI и навык, с которым могут работать Claude Code, Cursor, Codex и любые другие агенты, способные вызывать командную строку.
Чётких цифр по сравнению с конкретными реализациями других CLI‑обвязок для MCP или OpenAPI в исходном описании нет, но уже опубликованные измерения по MCP против CLI‑подхода показывают ту же картину: перевод MCP‑серверов в формат CLI даёт экономию токенов в районе 92–98%, а Mcp2cli пытается выжать из этой идеи максимум за счёт динамических команд и формата TOON.