mcp-context-proxy: сжатие ответов MCP для экономии контекста LLM | AiManual
AiManual Logo Ai / Manual.
03 Янв 2026 Инструмент

Когда MCP отвечают как бабушки в очереди: как mcp-context-proxy режет болтовню

Обзор инструмента для сжатия ответов Model Context Protocol. Экономим токены, ускоряем работу локальных LLM. Установка, настройка, сравнение с альтернативами.

Ты просил погоду, а получил историю метеорологии

Знакомо? Запускаешь MCP-сервер для получения данных, а в ответ приходит не просто температура за окном, а целый трактат о климатических изменениях с 1900 года. Сервера Model Context Protocol иногда забывают, что они не профессора на лекции. Особенно когда работаешь с локальными LLM с ограниченным контекстом.

Каждый лишний токен в ответе MCP - это минус один токен для твоей основной модели. А когда их набирается сотня-другая... В общем, контекстное окно плачет.

Попробуй запустить MCP для работы с базой данных. Запрос "сколько пользователей в системе" может вернуть не только число, но и структуру таблиц, типы полей и философское размышление о природе данных. Бесплатно, конечно.

Что за зверь mcp-context-proxy?

Простой прокси-сервер, который сидит между твоим LLM и MCP-серверами. Его задача - взять раздутый ответ, пропустить через маленькую модель (типа Phi-3 Mini или даже Llama 3.1 8B), и выдать сжатый вариант. Не просто обрезать, а именно пересказать кратко.

Автор (анонимный, как и положено в open-source) называет это "квентизацией ответов". По сути - lossy компрессия для текста. Как с JPEG для изображений, только для данных.

1 Установка за пять минут

Клонируем, ставим зависимости, запускаем:

git clone https://github.com/anon/mcp-context-proxy
cd mcp-context-proxy
pip install -r requirements.txt

# Запускаем прокси
python proxy.py --port 8000 \
  --compression-model "microsoft/Phi-3-mini-4k-instruct" \
  --target-mcp-server http://localhost:3000

Порт 8000 - это теперь твой новый endpoint для LLM. Прокси будет перехватывать запросы, сжимать ответы от сервера на порту 3000, и отдавать уже оптимизированное.

💡
Если используешь LM Studio с MCP, просто поменяй адрес сервера в настройках. Никаких изменений кода.

2 Настройка компрессии

Самое интересное - как именно сжимать. Инструмент предлагает несколько стратегий:

# Пример конфигурации
config = {
    "strategy": "summarize",  # или "extract", "rewrite"
    "target_length_ratio": 0.3,  # оставить 30% от оригинала
    "preserve_numbers": True,   # числа не трогать!
    "preserve_dates": True,
    "model_max_length": 512,    # не грузить модель длинными текстами
    "cache_compressed": True    # кэшировать сжатые ответы
}

Стратегия "extract" просто выдергивает ключевые факты. "Summarize" - пересказывает. "Rewrite" - пытается сохранить стиль, но короче. Последний вариант самый ресурсоемкий, зато для некоторых MCP-серверов (особенно тех, что возвращают структурированные данные) может быть полезнее.

Что получаем на выходе?

Без прокси С прокси (сжатие 30%) Экономия
247 токенов 74 токена 70%
"Текущая температура в Москве: -5°C. Ветер северо-западный 3 м/с. Относительная влажность 78%. Атмосферное давление 748 мм рт.ст. Видимость хорошая. Осадков не ожидается. По данным Гидрометцентра России, такая погода характерна для..." "Москва: -5°C, ветер 3 м/с, влажность 78%, без осадков." Информация сохранена

Для баз данных экономия еще заметнее. Особенно если использовать Basis Router или другие инструменты подключения к БД через MCP.

А что с производительностью?

Здесь начинается trade-off. Добавляем задержку на сжатие, но экономим время на обработке основной моделью.

На моем тесте (RTX 4070, Phi-3 Mini для сжатия):

  • Добавляет 50-150 мс на сжатие одного ответа
  • Экономит 200-500 мс на генерации основной моделью (зависит от сложности промпта)
  • При последовательных запросах к нескольким MCP-серверам выигрыш накапливается

Для интерактивных диалогов с Claude или локальными моделями типа Solar 100B каждый сохраненный токен - это возможность задать дополнительный вопрос или получить более развернутый ответ.

Альтернативы? Есть, но...

Можно просто ограничивать длину ответа в MCP-сервере. Но это грубо и часто ломает структуру данных. Особенно JSON.

Можно писать кастомные промпты для каждого сервера с просьбой отвечать кратко. Работает в 60% случаев. Остальные 40% - это когда сервер "забывает" инструкцию или интерпретирует ее слишком творчески.

Еще вариант - использовать LLMRouter для маршрутизации запросов. Но он решает другую задачу - выбор модели, а не оптимизацию ответов.

mcp-context-proxy хорош тем, что работает прозрачно. Не нужно переписывать существующие MCP-серверы. Особенно полезно для тех, кто использует MCP Tool Registry или другие готовые решения.

Подводные камни (они есть всегда)

  1. Потеря контекста: слишком агрессивное сжатие может выкинуть важные детали. Особенно опасно с числовыми данными или специфичными терминами.
  2. Накладные расходы: маленькая модель для сжатия все равно требует памяти. На слабом железе может не стоить того.
  3. Кэширование: включил кэш - получил ускорение, но рискуешь устаревшими данными. Особенно для динамических источников вроде погоды или биржевых котировок.

Для отладки проблем советую Syrin - дебаггер для MCP. Он покажет, что именно теряется при сжатии.

Кому это нужно?

Не всем. Если работаешь с GPT-4 через API и платишь за токены - возможно, проще заплатить. Если используешь модели с огромным контекстом (128K+) - тоже не критично.

Но вот кому точно пригодится:

  • Локальные LLM-энтузиасты: те, кто гоняет модели на домашних видеокартах с 8-16ГБ памяти. Каждый токен на вес золота.
  • Разработчики MCP-агентов: когда нужно подключить несколько "болтливых" серверов и не словить переполнение контекста.
  • Те, кто работает с MCP Chat Studio: для тестирования воркфлоу с большим количеством инструментов.
  • Экономисты: когда каждый запрос к API стоит денег, а MCP-сервер возвращает неоптимизированные JSON'ы.

Что в итоге?

mcp-context-proxy - не панацея, а конкретный инструмент для конкретной проблемы. Как шуруповерт: бесполезен, если нужно забить гвоздь, но незаменим для сборки мебели.

Начинай с умеренных настроек сжатия (50-60% от оригинала). Следи за тем, что теряется. Используй для MCP-серверов, которые действительно страдают многословием.

И помни: иногда лучше потратить время на оптимизацию самого MCP-сервера, чем на сжатие его ответов. Особенно если пишешь его сам. Но для сторонних серверов, где код не трогаешь, этот прокси - спасение.

P.S. Если после внедрения заметишь, что модель начала "забывать" важные детали из предыдущих ответов - проверь, не слишком ли агрессивно сжимаешь. Иногда краткость не сестра таланта, а просто потеря информации.