본문으로 건너뛰기

웹 클라이언트

웹 클라이언트는 인스펙터의 기능이 가장 풍부하게 제공되는 인터페이스입니다. 실제 MCP 연결을 관리하는 소규모 Node 서버에 의해 구동되는 싱글페이지 애플리케이션 형태를 띠고 있습니다. 이것이 기본 모드이므로, 모드 플래그가 지정되지 않은 npx @modelcontextprotocol/inspector 경우에는 여기에서 작동합니다.

npx @modelcontextprotocol/inspector                       # empty, add servers in the UI
npx @modelcontextprotocol/inspector node build/index.js # with an ad-hoc stdio server
npx @modelcontextprotocol/inspector --catalog ./mcp.json # with a catalog file

세션 토큰

웹 클라이언트의 배경에 있는 Node 서버는 사용자의 컴퓨터에서 프로세스를 생성할 수 있기 때문에, 각 실행 시마다 발급되는 토큰을 통해 모든 /api/* 라우트를 보호합니다. 실행기는 해당 토큰이 포함된 URL을 출력하므로 그 URL을 열어서 사용해야 하며, 기억에 의존하여 localhost:6274를 입력해서는 안 됩니다.

브라우저는 우선순위에 따라 세 곳에서 토큰을 가져옵니다:

  1. window.__INSPECTOR_API_TOKEN__로, 각 페이지가 로드될 때 index.html에 주입됩니다. 이 방식 덕분에 단순히 URL을 다시 로드하거나 북마크를 사용해도 계속 정상적으로 작동합니다.
  2. 해당 URL에 포함된 ?MCP_INSPECTOR_API_TOKEN=... 쿼리 문자열입니다.
  3. 마지막으로 sessionStorage가 예비 수단으로 사용됩니다.

알려진 토큰을 고정하기 위해 MCP_INSPECTOR_API_TOKEN 환경 변수를 설정하거나(스크립트를 통한 실행 시 유용함), 전혀 확인 과정을 생략하려면 DANGEROUSLY_OMIT_AUTH=true을 설정할 수 있습니다. 단, 이 방법들은 다른 어떤 프로그램도 해당 포트에 접근할 수 없는 컴퓨터에서만 사용해야 합니다. 이 두 가지 방법에 대한 자세한 내용은 웹 백엔드 환경 변수에 설명되어 있습니다.

개발 모드

--dev웹 전용 플래그입니다. 이 플래그가 활성화되면 사전 빌드된 번들을 제공하는 대신 Vite 개발 서버를 실행하며, 이는 인스펙터 자체를 개발하는 경우 매우 중요합니다.

mcp-inspector --web --dev

운영 환경에서의 --web는 미리 빌드된 번들을 제공합니다. 배포된 패키지에는 항상 해당 번들이 포함되지만, 새로 소스를 체크아웃한 경우에는 포함되어 있지 않아, 처음 실행할 때 런너가 필요에 따라 해당 번들을 빌드합니다.

탭 바

표시 조건기능
서버항상서버 목록에서 서버를 추가·수정·가져오기·연결하고 서버별 설정을 엽니다.
서버가 MCP App 도구를 노출함샌드박스 프레임에서 도구 UI를 렌더링합니다.
도구tools 기능스키마를 살펴보고 인수를 입력한 뒤 도구를 호출하고 결과를 확인합니다.
프롬프트prompts 기능프롬프트를 나열하고 인수를 제공하여 생성된 메시지를 미리 봅니다.
리소스resources 기능리소스를 탐색하고 읽고 구독합니다.
작업capabilities.tasks(레거시 에라) 또는 Tasks 확장(현대 에라)장시간 실행되는 도구 호출을 추적합니다.
로그logging 기능서버의 notifications/message 출력과 에라에 맞는 로그 수준 제어를 표시합니다.
프로토콜항상요청·응답·알림으로 이루어진 JSON-RPC 기록을 표시합니다.
네트워크HTTP / SSE 서버상태·헤더·본문을 포함한 원시 HTTP 정보를 표시합니다.
콘솔stdio 서버서버 프로세스의 stderr를 표시합니다.

‘네트워크’와 ‘콘솔’은 절대 함께 표시되지 않습니다. 레거시 시대와 현대 시대에 대한 내용은 Protocol eras에 설명되어 있습니다.

연결된 서버의 탭 바입니다. 표시되는 탭은 서버가 보고한 기능들에 따라 달라집니다.

모니터링 사이드바

Tasks, Logs, Protocol, Network, Console은 _모니터 그룹_을 구성합니다. 이 그룹을 고정하면 탭 바에서 제거되어 크기를 조절할 수 있는 오른쪽 열로 이동하므로, ToolsResources를 사용하면서도 트래픽을 확인할 수 있습니다. 이 열의 너비와 선택된 모니터 탭은 페이지를 다시 로드해도 그대로 유지됩니다.

Tools 화면 옆에 고정된 모니터링 사이드바입니다. 작업을 하는 동안에도 Protocol 스트림은 계속 표시됩니다.

서버

Servers 화면은 시작점입니다. 각 서버 행에는 트랜스포트, 연결 상태, 서버별 설정을 여는 제어 기능이 표시됩니다.

이 목록이 어디서 생성되는지와 편집이 가능한지는 어떻게 프로그램을 시작했는지에 따라 달라집니다.

시작 방식서버 목록편집 가능 여부
mcp-inspector --web첫 실행 시 자동으로 생성되는 기본 카탈로그 ~/.mcp-inspector/mcp.json
--catalog <path>파일이 없을 경우 샘플 서버들이 포함된 해당 파일
--config <path>파일은 존재하지만 읽기 전용이며 데이터가 추가되거나 채워지지 않음아니요
--server-url <url> 또는 위치 기반 명령어메모리에 일시적으로 저장되는 단일 서버아니요

처음 프로그램을 실행할 때 웹 클라이언트는 /tmp로 범위가 지정된 파일 시스템 서버와 표준적인 "모든 것" 참조 서버라는 두 개의 샘플 서버를 사용하여 카탈로그를 자동으로 생성합니다. CLI와 TUI가 왜 빈 카탈로그를 생성하는지를 포함한 자세한 규칙은 구성 및 플래그를 참조하십시오.

서버 설정

  • 프로토콜 에라: legacy / auto / modern입니다. 자세한 내용은 프로토콜 에라들을 참조하십시오.
  • 요청별 로그 레벨: 현대식 연결에서 기본적으로 각 외부 요청에 부여하는 레벨이며, 이 기능을 사용하지 않으려면 off를 지정하면 됩니다(자세한 내용은 로깅을 참조하십시오).
  • 공개된 확장 기능: Inspector가 capabilities.extensions에 선언할 확장 기능입니다. 서버는 클라이언트가 공개한 기능에 따라 등록 내용을 적법하게 변경할 수 있으므로 디버깅에 유용합니다. Tasks 확장 기능을 선택 해제한 뒤 각 에라를 로컬에서 재현하기에서 설정하는 test-servers/configs/advertised-extensions-http.json 픽스처에 다시 연결하면 도구 하나가 사라지는 것을 확인할 수 있습니다.
  • 루트: roots 클라이언트의 기능을 통해 공개되는 루트들을 말합니다. 예를 들어 @modelcontextprotocol/server-filesystem은 자신이 접근할 수 있는 디렉터리 목록을 알아보기 위해 roots/list을 호출합니다.
  • 헤더, 타임아웃, 그리고 OAuth 필드들.
  • 한 페이지씩 목록 가져오기: 이 옵션이 꺼져 있으면 연결할 때 여러 페이지의 목록 결과를 자동으로 합칩니다. 켜져 있으면 각 목록은 1페이지만 불러오고 다음 페이지 로드 버튼과 N페이지 로드됨 상태를 표시합니다. 12개의 도구, 리소스, 프롬프트를 각각 3페이지로 나누는 test-servers/configs/pagination-http.json으로 이 기능을 재현할 수 있습니다.
공개된 확장 기능이 포함된 서버 설정입니다. 해당 옵션의 선택을 해제하면 Inspector가 연결 시 선언하는 내용이 변경됩니다.

도구

설명과 폼 형태로 표시되는 입력 스키마, 그리고 주석을 확인하려면 적절한 도구를 선택하십시오. 폼에 정보를 입력한 후 해당 도구를 호출하면, 구조화된 콘텐츠와 내장된 리소스, 그리고 네이티브하게 처리되는 이미지들이 아래에 표시됩니다.

현대 에라 서버에서는 이 화면에 미러링된 Mcp-Param-* 헤더, 제외된 도구, 별도의 -32602 오류 패널도 표시됩니다. 자세한 내용은 프로토콜 에라를 참고하세요.

도구 호출 및 그 결과의 표시 형태입니다. 호출이 완료되어 결과가 반환되면 인자 입력 폼은 결과 패널 안으로 축소됩니다.

리소스

MIME 타입과 설명이 함께 표시된 리소스 및 리소스 템플릿 목록을 제공하며, 항목을 선택하면 해당 콘텐츠를 읽어옵니다. 또한 구독 기능을 지원하는 서버에서는 구독 버튼을 제공합니다. 구독 메커니즘은 시대에 따라 다르므로 Resource subscriptions 문서를 참조하십시오.

리소스 읽기 화면으로, 리소스 목록 아래에 활성화된 구독 정보가 함께 표시됩니다.

프롬프트

프롬프트 템플릿과 해당 인자들을 목록으로 표시하고, 사용자가 지정한 인자들에 대해 생성된 메시지를 보여주므로 프롬프트가 의도한 대로 작동하는지 확인하는 가장 빠른 방법입니다.

지정된 인자들을 사용하여 렌더링된 프롬프트입니다.

앱들

MCP 앱들은 UI를 포함하는 도구들입니다. 앱들 탭에서는 별도의 포트에서 제공되는 샌드박스형 iframe에 해당 앱을 표시하며, ui/* 브리지를 활용하여 사이드 패널에 해당 뷰의 ui/message 입력 내용과 notifications/message 로그를 보여줍니다.

  • 샌드박스 포트는 기본적으로 동적이므로, 이를 노출하거나 전달해야 하는 경우 MCP_SANDBOX_PORT를 사용하여 고정해야 합니다.
  • 샌드박스는 frame-ancestors CSP에 의해 보호되며, 괄호로 묶인 IPv6 주소는 유효한 CSP 호스트 소스가 아니므로, localhost, 127.0.0.1, 호스트명 또는 LAN IPv4 주소를 사용하여 인스펙터에 접근해야 하며, 단순한 http://[::1]:... 주소는 사용할 수 없습니다.
  • 샌드박스 URL은 항상 일반 http 형태이므로, https:// 인스펙터 페이지는 혼합 콘텐츠로 인해 해당 프레임을 차단합니다. 따라서 MCP 앱들은 현재 일반 http 출처를 필요로 합니다.

CLI를 기반으로 하는 자동화된 리뷰 흐름에 대해서는 레시피들을 참조하십시오.

샌드박싱된 프레임 내에서 표시되는 MCP 앱으로, 그 아래에는 해당 앱의 자체 로그가 표시됩니다.

프로토콜, 네트워크, 콘솔

세 개의 탭은 동일한 트래픽을 서로 다른 세부 수준에서 보여줍니다:

  • 프로토콜: JSON-RPC 트랜스크립트입니다. 요청과 응답이 짝지어 표시되며, 내장된 알림 정보와 MRTR 라운드들은 하나의 대화로 그룹화되고, 규격 관련 오류들은 클래스에 따라 표시됩니다.
  • 네트워크: SSE 및 스트리밍 가능한 HTTP 서버를 위한 HTTP 계층을 나타냅니다. 상태 코드, 요청 및 응답 헤더, 그리고 본문이 포함됩니다. 최신 연결에서는 표준화된 Mcp-* 헤더들이 강조 표시되고 센티널 값들도 디코딩됩니다.
  • 콘솔: 연결된 stdio 서버 프로세스의 stderr 정보를 보여주며, 대부분의 stdio 서버들은 자체 진단 정보를 이곳에 저장합니다.

이러한 뷰에서는 비밀 정보가 가려지며, 해당 항목들은 삭제하거나 내보낼 수 있습니다.

항목이 확장된 상태의 프로토콜 탭으로, 전체 JSON-RPC 교환 내용이 표시됩니다.

드라이버(스크립트, CI 허스크, 또는 CLI의 --print-handoff)는 단 한 번의 네비게이션을 통해 연결된 인스펙터에 접근할 수 있습니다.

http://127.0.0.1:6274/?serverUrl=<url>&transport=http|sse&autoConnect=<token>
매개변수의미
serverUrlMCP 서버의 URL입니다. http: / https:로만 제한되며, 조작된 javascript: 또는 file: 값은 거부됩니다.
transporthttp(기본값) 또는 sse입니다.
autoConnect필수 CSRF 게이트입니다. 서버를 시작한 주체만 알 수 있는 각 실행별 세션 토큰과 반드시 동일해야 합니다.

추가로 세 가지 매개변수가 있으면 _렌더링된 애플리케이션_이 생성되는데, openApp=<toolName>는 도구의 이름을 지정하고, appArgs=<base64url(JSON)>는 도구의 스키마 기본값과 병합된 인자들을 제공하며, autoOpen=<token>은 자동으로 도구 호출을 실행합니다. autoOpen이 호출을 실행하므로, autoConnect과 동일한 필수 토큰 게이트가 적용됩니다.

호스트 바인딩 및 오리진

기본적으로 Inspector는 localhost에 바인딩되어 해당 포트의 루프백 오리진에서만 요청을 수락합니다. 백엔드가 사용자의 시스템에서 프로세스를 실행하므로이 두 가지 기본 설정 모두 보안 경계로 간주해야 합니다.

DANGEROUSLY_BIND_ALL_INTERFACES=true을 설정하지 않는 한 모든 인터페이스(HOST=0.0.0.0)에 바인딩하는 것은 거부됩니다. 한 번에 모든 인터페이스가 아닌 특정한 비루프백 주소에 바인딩하는 경우에는 별도의 동의 절차 없이도 허용됩니다. 이는 모든 인터페이스를 동시에 노출하는 것이 아닌 의도적인 단일 노출이기 때문입니다.

전체 매트릭스에 대해서는 네트워크상의 호스팅 항목을, 그리고 변수들에 대해서는 구성 항목을 참조하십시오.