7 уязвимостей шлюза MCP: утечки сессий, мертвый SSE и OAuth в режиме шлюза

После демонстрации счастливого пути пользователь Reddit столкнулся с семью конкретными багами при размещении шлюза MCP между реальными клиентами и серверами. Исправления заключались не в инженерии промптов — это были явные границы сессий, таймауты для каждого инструмента, идемпотентность, структурированные журналы действий, трассировка на уровне шлюза и тесты параллельных вызовов инструментов. Результатом стало значительное сокращение времени выполнения параллельных инструментов, но главной победой было знание того, где возникают сбои.
Семь багов, которые действительно имели значение
- Утечка состояния сессии между клиентами — общее состояние между сессиями вызывало загрязнение данных.
- Молчаливый разрыв SSE-соединений — никаких ошибок не возникало при обрыве соединения с серверными событиями.
- Работа OAuth в локальных тестах, но сбой в режиме шлюза — URI перенаправления или проверка токенов не работали за прокси.
- Обнаружение зондов возвращало устаревшие метаданные сервера — кэшированные возможности не отражали обновления сервера.
- Запись в SQLite блокировала параллельные вызовы инструментов — блокировки базы данных сериализовывали одновременные запросы.
- Логика повторных попыток дублировала побочные эффекты инструментов — повторные попытки заново выполняли мутации, такие как запись или вызовы API.
- Задержка инструментов скрывалась внутри шлюза вместо вызова модели — мониторинг относил время не к тому слою.
Исправление: скучная инфраструктура, а не лучшие промпты
Подход автора к каждому багу:
- Явные границы сессий — отдельное состояние на клиента, никаких общих объектов.
- Политика таймаутов для каждого инструмента — индивидуальные таймауты, чтобы один медленный инструмент не блокировал другие.
- Идемпотентность где возможно — ключи дедубликации или транзакционное поведение для безопасных повторных попыток.
- Структурированные журналы действий — подробные, анализируемые журналы каждого действия шлюза для отладки.
- Трассировка на уровне шлюза — распределенная трассировка для правильного отнесения задержки к разным слоям.
- Тесты параллельных вызовов инструментов — интеграционные тесты, которые отправляют параллельные запросы для выявления состояний гонки.
Это конкретные, практические шаблоны для всех, кто запускает шлюз MCP в продакшене. Ключевая идея поста: сложные проблемы — это изоляция состояния, молчаливые сбои и наблюдательность, а не промпты модели.
📖 Source: r/ClaudeAI
👀 Смотрите также

8 месяцев ежедневного использования Claude: 9 практических советов (не для программирования)
Пользователь Reddit делится 9 выстраданными уроками за 8 месяцев ежедневного использования Claude для написания текстов и исследований (не кода): редактирование, управление контекстом, настройка стиля и использование Claude в качестве партнёра для размышлений.

Пользователь Reddit предупреждает: при работе над сложными проектами в Claude начинайте с самой трудной части
Разработчик на r/ClaudeAI сообщает, что предоставление ИИ возможности планировать поэтапно для сложного редактора документов привело к «супу из сложностей» и сбоям. Пользователь советует заставить модель сначала решить самый сложный вариант использования, так как её производительность ухудшается с увеличением контекста.

Слепые зоны в постах о рабочих процессах Claude Code: восстановление, ограничения и управление разрешениями
Распространенные сценарии использования Claude Code описывают идеальный путь, но упускают восстановление после неудачных правок, контроль ограничений и управление разрешениями — критически важные аспекты для реальной работы.

Пять распространенных ошибок при настройке OpenClaw, которые приводят к потере денег и создают угрозы безопасности
На основе анализа более 50 конфигураций OpenClaw, одни и те же пять проблем возникают снова и снова: использование Opus в качестве модели по умолчанию вместо Sonnet для большинства задач, отсутствие запуска новых сессий, установка навыков без чтения исходного кода, открытие шлюза для сети и добавление второго агента до исправления первого.