К обсуждениям

HTTP 406 у MCP-сервера в VS Code: как проверить Accept и транспорт

Редакция VOne Технологии

Диагностика Streamable HTTP без раскрытия токенов: сопоставить метод, заголовок Accept и выбранный транспорт VS Code, сохранив только безопасный минимум ответа 406.

Отделите 406 от сетевой недоступности

HTTP 406 означает, что запрос дошёл до HTTP-обработчика и сервер ответил кодом согласования представления. Это отличается от тайм-аута, отказа TLS или невозможности открыть адрес. Запишите конечный статус, метод и Content-Type ответа, но замаскируйте hostname, путь с идентификатором, Authorization и cookies. Не повторяйте запрос десятки раз: один ответ и один контрольный запрос дают достаточно данных для проверки заголовков.

Сверьте нормативный Accept

В спецификации MCP Streamable HTTP для POST клиент должен перечислить в Accept и application/json, и text/event-stream. Для GET клиент должен принимать text/event-stream. Сопоставьте фактический заголовок только с методом, который отправлен. Нельзя переносить правило GET на POST или считать наличие одного типа достаточным для обоих путей. Спецификация задаёт контракт, но сама по себе не показывает, какая версия VS Code сформировала конкретный запрос.

Уточните выбранный транспорт VS Code

Официальная справка VS Code поддерживает HTTP и SSE и описывает попытку HTTP Stream с возможным переходом к SSE. Проверьте тип в конфигурации MCP и безопасную строку журнала о выбранном транспорте. Не публикуйте полный файл конфигурации: в headers и env могут находиться токены. Если сервер принимает SSE, а HTTP Stream отвечает 406, это два разных наблюдения, а не доказательство универсальной работоспособности endpoint.

Проведите контроль без рабочих данных

На локальном тестовом сервере или предоставленном разработчиком диагностическом endpoint отправьте один запрос с нормативным Accept и один с фактическим набором клиента, не включая инструменты и пользовательские сообщения. Сравните только статус и Content-Type. Изменение ответа при одном заголовке локализует negotiation, но не разрешает править заголовки через небезопасный прокси. Если тестового endpoint нет, ограничьтесь журналом и спецификацией.

Соберите воспроизводимый отчёт

Передайте версии VS Code и MCP-сервера, тип транспорта, метод, обезличенный Accept, статус и Content-Type двух ответов. Уберите тело с данными инструментов, адреса внутренней сети и все токены. Остановитесь до отключения TLS-проверки, публикации сервера наружу или подмены production-прокси. Если поддержка просит трассировку, сначала согласуйте приватный канал и перечень допустимых полей. Такая граница позволяет исправлять совместимость без расширения доступа к серверу.

Материал подготовлен редакцией VOne с применением ИИ для HTTP-матрицы; требования Accept сверены со спецификацией MCP и документацией VS Code, issue использован как сигнал.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.