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

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

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

Сжать файлы CLAUDE.md, чтобы уменьшить раздувание системного промпта в коде Claude
Техника сжатия файлов CLAUDE.md путем удаления удобочитаемого форматирования, такого как заголовки markdown и проза, с заменой на компактные обозначения, такие как списки с разделителями-вертикальными чертами, что позволяет достичь сокращения на 60-70% символов при сохранении той же информации для Claude.
5 команд терминала Claude Code, которые вы могли пропустить
Старший разработчик делится пятью скрытыми командами Claude Code для терминала: настройка статусной строки, выполнение команд оболочки, упоминание файлов, контекст из нескольких репозиториев и параллельные беседы.

11 глубоких советов по работе с Claude от пользователя с 18-месячным ежедневным опытом
Старший разработчик делится 11 неочевидными советами по работе с Claude после 18 месяцев ежедневного использования, включая Projects, Custom Styles, Memory, Sonnet 4.6 против Opus 4.7, Haiku 4.5 для пакетной работы, суб-агентов Claude Code и Artifacts, вызывающие API.