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

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

Пользовательский хук PostToolUse для загрузки CLAUDE.md по требованию вне дерева проекта
Разработчик делится решением с использованием пользовательского хука PostToolUse, которое позволяет Claude Code читать файлы CLAUDE.md из каталогов за пределами текущего дерева проекта по требованию, решая ограничения встроенного механизма загрузки.

Исправление прокси OpenClaw Discord для проблем с таймаутом REST API
Пользователь сообщает об устранении проблем с подключением OpenClaw к Discord, когда WebSocket подключается, но вызовы REST API завершаются ошибками "fetch failed UND_ERR_CONNECT_TIMEOUT". Решение включает создание файла proxy-preload.cjs и настройку глобальных параметров прокси для undici.

Подсказка для Клода по визуализации структуры мышления: Намерение, Реальность, Разрыв
Пользователь Reddit делится 100-словным промптом для Claude, который просит ИИ замечать и отражать структурные паттерны в разговоре — классифицированные как Намерение (что вы ХОТИТЕ), Реальность (что ЕСТЬ) и Разрыв (что НЕ РЕШЕНО) — а не сам контент.

Использование ИИ для создания задач проекта до начала кодирования снижает отклонения от первоначального объёма работ.
Разработчик обнаружил, что просьба к ИИ сгенерировать детальные проектные задачи с заданиями, подзадачами, областью охвата и критериями приемки перед написанием кода значительно снижает расползание проекта и большие изменения. Каждый ИИ-агент получает только свою конкретную подзадачу, а не весь план.