# MCP Inspector

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

Страница: https://mcpdoc.ru/tools/inspector/
Указатель сайта: https://mcpdoc.ru/llms.txt

MCP Inspector - официальная программа для проверки и отладки серверов MCP. Она подключается к серверу как клиент и показывает, что сервер отвечает на каждый запрос. Выпуск 2.9.0 понимает обе эпохи протокола, Legacy и Modern.

По умолчанию Inspector подключается как клиент Legacy и запрос `server/discover` не отправляет. Чтобы проверить сервер Modern, эпоху нужно выбрать самому.

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

Совместимость Dual-era работает с обеими эпохами и выбирает по собеседнику

- **Проверенная версия:** 2.9.0, выпуск от 2026-09-30

- **Новейшая поддерживаемая редакция:** 2026-07-28

- **С сервером только Modern:** работает

- **С сервером только Legacy:** работает

- **Переход на старую редакцию:** вручную

- **Использует устаревшее:** Roots, Sampling, Logging, динамическая регистрация клиента (DCR), транспорт HTTP+SSE

- **Сохраняет удалённое в редакции 2026-07-28:** сессии, рукопожатие initialize

- **Расширение Tasks:** есть

- **Расширение MCP Apps:** частично

- **Проверено:** 2026-10-04

- **Источник:** [github.com](https://github.com/modelcontextprotocol/inspector/releases/tag/2.9.0)

## Что это за программа

Inspector поставляется одним пакетом npm `@modelcontextprotocol/inspector`. В [README выпуска](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/README.md) названы три интерфейса, которые запускаются одной командой `mcp-inspector`:

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

Официальная документация называет Inspector [эталонным инструментом разработчика](https://modelcontextprotocol.io/docs/2026-07-28/tools/inspector) для проверки и отладки серверов MCP.

## Версии и метки npm

Данные [реестра npm](https://www.npmjs.com/package/@modelcontextprotocol/inspector?activeTab=versions) на 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` |

Под меткой `next` лежит кандидат 2.0.0-rc.3 от 28 июля 2026. Он опубликован раньше, чем итоговая версия 2.0.0, и намного старше 2.9.0. Ставить его как предварительную версию не нужно.

По [политике безопасности проекта](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/SECURITY.md) линия 2.x поддерживается полностью, а линия 1.x получает только исправления безопасности.

Файла с журналом изменений в репозитории нет. Изменения каждой версии записаны в [примечаниях к выпускам](https://github.com/modelcontextprotocol/inspector/releases) на GitHub.

## Что нужно для запуска

Нужен Node.js версии 22.19.0 или новее. Это требование записано в поле `engines` пакета. [Руководство по переходу с первой версии](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/docs/v1-to-v2-migration.md) объясняет, что граница пришла от библиотеки `undici` восьмой версии. Линии 1.x хватало Node.js 22.7.5.

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

## Запуск

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

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

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

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

```bash title="Локальный сервер 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. По [описанию образа](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/docs/docker.md) программа в нём работает от непривилегированного пользователя.

## Порты и ключ доступа

Значения по умолчанию из [справочника переменных окружения](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/docs/environment-variables.md) выпуска 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` этот список заменяет целиком, а не дополняет.

В линии 1.x работали два процесса: страница на порту 6274 и посредник MCP Proxy на порту 6277 с ключом `MCP_PROXY_AUTH_TOKEN`. Во второй версии посредника нет, порт 6277 никому не нужен. Имя `MCP_PROXY_AUTH_TOKEN` оставлено как устаревшее: оно читается, только если не задано `MCP_INSPECTOR_API_TOKEN`.

## Транспорты

Тип транспорта задаётся ключом `--transport` или полем `type` в файле настроек. По [описанию настроек серверов](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/docs/mcp-server-configuration.md) допустимы три значения:

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

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

Чем различаются транспорты в самой спецификации, описано на странице [«Транспорты»](https://mcpdoc.ru/protocol/transports/).

## Эпохи протокола

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

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

Значение по умолчанию - `legacy`. Это записано и в [исходном коде выпуска](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/core/mcp/types.ts), и на странице [«Protocol eras»](https://modelcontextprotocol.io/docs/2026-07-28/tools/inspector/protocol-eras) официальной документации. Причина названа там же: инструмент отладки не должен сам отправлять пробный запрос. Такой запрос зависает на молчащих серверах Legacy по stdio и попадает в запись обмена, которую вы пришли изучать.

Если оставить значение по умолчанию, Inspector отправит `initialize`. Сервер, который поддерживает только Modern, такое подключение отклонит. Это не ошибка сервера. Задайте `--protocol-era modern` или `--protocol-era auto`.

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

Как устроен пробный запрос и ответы на него, описано на страницах [«Обнаружение: server/discover»](https://mcpdoc.ru/protocol/discovery/) и [«Редакции и версии протокола»](https://mcpdoc.ru/protocol/versions/).

## OAuth, MCP Apps и Tasks

**OAuth.** По [официальной документации](https://modelcontextprotocol.io/docs/2026-07-28/tools/inspector/authorization) полный порядок авторизации реализован во всех трёх интерфейсах, а полученные ключи хранятся на диске и общие для них. Руководство по переходу называет в том числе Client ID Metadata Documents и авторизацию, управляемую организацией. Общая схема авторизации в MCP описана в разделе [«Модель авторизации»](https://mcpdoc.ru/auth/).

**MCP Apps.** Приложения показывает только веб-интерфейс: вкладка Apps открывает их в изолированной рамке на отдельном порту. По [описанию CLI](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/clients/cli/README.md) клиент командной строки приложение отрисовать не может и по умолчанию не объявляет серверу поддержку этого расширения.

**Tasks.** Вкладка Tasks работает с обеими формами. Для серверов Legacy это возможность `capabilities.tasks`. Для серверов Modern это расширение `io.modelcontextprotocol/tasks`. По [описанию проверочных серверов](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/docs/test-servers.md) в SDK второй версии поддержки Tasks нет, поэтому с расширением Inspector работает сам, в обход SDK.

## Секреты на диске

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

## Известный дефект выпуска 2.9.0

В [примечаниях к выпуску 2.9.0](https://github.com/modelcontextprotocol/inspector/releases/tag/2.9.0) описан один известный дефект, запись [#2549](https://github.com/modelcontextprotocol/inspector/issues/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»](https://modelcontextprotocol.io/docs/2026-07-28/tools/inspector/web) и [описанием веб-клиента в репозитории](https://github.com/modelcontextprotocol/inspector/blob/2.9.0/clients/web/README.md), третья - со страницей [«Recipes»](https://modelcontextprotocol.io/docs/2026-07-28/tools/inspector/recipes) и описанием образа.

## История безопасности

У Inspector была критическая уязвимость [CVE-2025-49596](https://github.com/advisories/GHSA-7f8r-222p-6f5g): между страницей Inspector и его посредником не было проверки подлинности. Бюллетень опубликован 13 июня 2025, затронуты версии младше 0.14.1, исправление вышло в 0.14.1. Запись есть в нашем перечне [«Уязвимости и инциденты»](https://mcpdoc.ru/security/incidents/).

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

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

## Что читать дальше

- [Инструменты разработчика](https://mcpdoc.ru/reference/tools/) - какой инструмент брать для какого вопроса.
- [Обнаружение сервера](https://mcpdoc.ru/protocol/discovery/) - что такое `server/discover` и что на него отвечает сервер.
- [Сервер для двух эпох](https://mcpdoc.ru/deployment/dual-era/) - как проверить, что сервер отвечает и клиентам Legacy, и клиентам Modern.
- [Уязвимости и инциденты](https://mcpdoc.ru/security/incidents/) - подтверждённые уязвимости программ экосистемы.
