Перейти к содержимому
Выберите тему

MCP Inspector

Что умеет MCP Inspector 2.9.0 - три интерфейса, запуск, порты и ключ доступа, выбор эпохи протокола, OAuth, MCP Apps, Tasks и известные ограничения выпуска

сверено с выпуском 2.9.0 4 октября 2026

Inspector поставляется одним пакетом npm @modelcontextprotocol/inspector. В README выпуска названы три интерфейса, которые запускаются одной командой mcp-inspector:

Интерфейс Что это Для чего
Web страница в браузере и серверная часть на Node.js ручная проверка, просмотр обмена сообщениями
CLI клиент командной строки сценарии, автоматическая проверка при сборке
TUI интерактивный интерфейс в терминале работа без браузера

Официальная документация называет Inspector эталонным инструментом разработчика для проверки и отладки серверов MCP.

Данные реестра npm на 4 октября 2026:

Метка Версия Опубликована Что это
latest 2.9.0 2026-09-30 текущий выпуск линии 2.x
v1-latest 1.0.2 2026-08-24 линия 1.x, только исправления безопасности
next 2.0.0-rc.3 2026-07-28 старый кандидат в выпуск, он старше latest

По политике безопасности проекта линия 2.x поддерживается полностью, а линия 1.x получает только исправления безопасности.

Файла с журналом изменений в репозитории нет. Изменения каждой версии записаны в примечаниях к выпускам на GitHub.

Нужен Node.js версии 22.19.0 или новее. Это требование записано в поле engines пакета. Руководство по переходу с первой версии объясняет, что граница пришла от библиотеки undici восьмой версии. Линии 1.x хватало Node.js 22.7.5.

То же руководство предупреждает: npm при несовпадении версии Node.js только выводит предупреждение, а ошибка появится позже и будет непонятной. Проверьте версию заранее командой node -v.

Три интерфейса
npx @modelcontextprotocol/inspector # web UI (default)
npx @modelcontextprotocol/inspector --cli # CLI
npx @modelcontextprotocol/inspector --tui # TUI

Пример взят из документации выпуска 2.9.0 и здесь не запускался.

Ключ режима (--cli или --tui) обязан стоять первым, сразу после имени программы. Всё, что идёт после него, передаётся выбранному интерфейсу без изменений.

Сервер stdio можно указать прямо в команде:

Локальный сервер stdio
npx @modelcontextprotocol/inspector node build/index.js
npx @modelcontextprotocol/inspector -e KEY=value -- node build/index.js --server-flag

Пример взят из документации выпуска 2.9.0 и здесь не запускался.

Если у самого сервера есть ключи командной строки, перед его командой нужен разделитель --.

Есть и готовый образ контейнера ghcr.io/modelcontextprotocol/inspector для архитектур amd64 и arm64. По описанию образа программа в нём работает от непривилегированного пользователя.

Значения по умолчанию из справочника переменных окружения выпуска 2.9.0:

Порт Переменная Назначение
6274 CLIENT_PORT веб-интерфейс и его адреса /api/*
6275 MCP_SANDBOX_PORT изолированная страница для MCP Apps
6276 MCP_OAUTH_CALLBACK_URL адрес возврата OAuth для CLI и TUI: http://127.0.0.1:6276/oauth/callback
6278 MCP_APP_ORIGIN_PORT отдельный адрес для приложений MCP Apps, которые объявили _meta.ui.domain

Серверная часть веб-интерфейса умеет запускать процессы на вашем компьютере. Поэтому каждый её адрес /api/* закрыт ключом доступа.

  • Ключ создаётся заново при каждом запуске и печатается в строке запуска.
  • Браузер передаёт его в заголовке x-mcp-remote-auth в виде Bearer и самого ключа.
  • Свой ключ задаётся переменной MCP_INSPECTOR_API_TOKEN.
  • Проверку ключа отключает переменная DANGEROUSLY_OMIT_AUTH со значением true или 1. Делать это на компьютере, доступном из сети, не следует.

По умолчанию программа слушает только адрес 127.0.0.1. Попытку слушать все сетевые интерфейсы она отклоняет, пока не задана переменная DANGEROUSLY_BIND_ALL_INTERFACES. Кроме того, адреса /api/* проверяют заголовок Origin по списку разрешённых значений. Переменная ALLOWED_ORIGINS этот список заменяет целиком, а не дополняет.

Тип транспорта задаётся ключом --transport или полем type в файле настроек. По описанию настроек серверов допустимы три значения:

  • stdio - локальный процесс;
  • http - Streamable HTTP;
  • sse - сервер с потоком SSE.

Если тип не указан, программа определяет его только по окончанию адреса: /mcp означает Streamable HTTP, /sse означает sse. Для любого другого адреса она выдаёт ошибку и требует указать --transport.

Чем различаются транспорты в самой спецификации, описано на странице «Транспорты».

Эпоха в Inspector - отдельная настройка каждого сервера. Она не зависит от транспорта: один и тот же адрес можно проверить как сервер Legacy и как сервер Modern. Настройка называется protocolEra, в командной строке ей соответствует ключ --protocol-era.

Значение Что делает Inspector при подключении
legacy обычное рукопожатие initialize редакции 2025-11-25, без пробного запроса
auto сначала отправляет server/discover; при любом исходе, не похожем на Modern, переходит к initialize
modern работает строго по редакции 2026-07-28; отката на старый порядок нет, с сервером Legacy подключение завершится ошибкой

Значение по умолчанию - legacy. Это записано и в исходном коде выпуска, и на странице «Protocol eras» официальной документации. Причина названа там же: инструмент отладки не должен сам отправлять пробный запрос. Такой запрос зависает на молчащих серверах Legacy по stdio и попадает в запись обмена, которую вы пришли изучать.

Согласуются ли редакции старше 2025-11-25 (2025-06-18, 2025-03-26, 2024-11-05), документация выпуска не говорит. Список поддерживаемых редакций находится внутри TypeScript SDK версии 2.2.0, на котором построен Inspector. Для самого Inspector это неизвестно.

Как устроен пробный запрос и ответы на него, описано на страницах «Обнаружение: server/discover» и «Редакции и версии протокола».

OAuth. По официальной документации полный порядок авторизации реализован во всех трёх интерфейсах, а полученные ключи хранятся на диске и общие для них. Руководство по переходу называет в том числе Client ID Metadata Documents и авторизацию, управляемую организацией. Общая схема авторизации в MCP описана в разделе «Модель авторизации».

MCP Apps. Приложения показывает только веб-интерфейс: вкладка Apps открывает их в изолированной рамке на отдельном порту. По описанию CLI клиент командной строки приложение отрисовать не может и по умолчанию не объявляет серверу поддержку этого расширения.

Tasks. Вкладка Tasks работает с обеими формами. Для серверов Legacy это возможность capabilities.tasks. Для серверов Modern это расширение io.modelcontextprotocol/tasks. По описанию проверочных серверов в SDK второй версии поддержки Tasks нет, поэтому с расширением Inspector работает сам, в обход SDK.

Inspector хранит ключи OAuth, секреты клиентов OAuth и значения переменных окружения для серверов stdio. По умолчанию они лежат в системном хранилище ключей. README выпуска предупреждает: если такого хранилища нет (Linux без службы секретов, работа по SSH, контейнер), секреты записываются в файл ~/.mcp-inspector/secrets.json без шифрования, пока вы не зададите ключ шифрования.

В примечаниях к выпуску 2.9.0 описан один известный дефект, запись #2549.

  • Когда проявляется. Вы ведёте несколько отдельных профилей OAuth для одного и того же сервера через переменную MCP_INSPECTOR_OAUTH_STATE_PATH.
  • Что происходит. Профили могут перезаписать ключи друг друга.
  • Как обойти. Дайте каждому профилю своё хранилище секретов: MCP_INSPECTOR_SECRET_STORE=file и отдельный MCP_INSPECTOR_SECRET_FILE, либо отдельный MCP_STORAGE_DIR.
  • Кого не касается. Обычная настройка с одним профилем не затронута.

Исправление в примечаниях обещано в версии 2.10.0. На 4 октября 2026 эта версия не выпущена.

Где официальная документация отстаёт от выпуска

Заголовок раздела «Где официальная документация отстаёт от выпуска»

Страницы Inspector на modelcontextprotocol.io в трёх местах расходятся с репозиторием на метке 2.9.0. Эта страница следует репозиторию.

Вопрос Официальная документация Репозиторий, метка 2.9.0
порт изолированной страницы MCP Apps выбирается системой при каждом запуске постоянный, 6275
адрес, который слушает программа localhost 127.0.0.1, имя localhost не используется намеренно
контейнер в режимах --cli и --tui нужно добавить --no-healthcheck ключ не нужен, проверка сама распознаёт эти режимы

Первые две строки сверены со страницей «Web client» и описанием веб-клиента в репозитории, третья - со страницей «Recipes» и описанием образа.

У Inspector была критическая уязвимость CVE-2025-49596: между страницей Inspector и его посредником не было проверки подлинности. Бюллетень опубликован 13 июня 2025, затронуты версии младше 0.14.1, исправление вышло в 0.14.1. Запись есть в нашем перечне «Уязвимости и инциденты».

Ключ доступа, привязка к 127.0.0.1 и проверка Origin из раздела о портах закрывают именно этот класс ошибок. Вывод для работы такой:

  • не отключайте проверку ключа;
  • не открывайте Inspector в сеть без необходимости: любой, кто до него дотянется, сможет управлять серверной частью, которая запускает процессы;
  • если программа работает не на localhost, документация выпуска требует отдавать её по HTTPS.