구성과 플래그

구성과 플래그 (Configuration and flags)

카탈로그 대 구성 파일, 각 클라이언트가 소유한 플래그, 그리고 모든 환경 변수를 다루는 문서예요. mcp-inspector 바이너리는 런처로, 자신의 플래그 두 개를 읽고 다른 모든 인수를 세 클라이언트(web, CLI, TUI) 중 하나에 전달합니다.

출처: 문서

본문

mcp-inspector 바이너리는 런처예요. 두 개의 자체 플래그를 읽고 나머지 모든 인수를 세 클라이언트(web, CLI, TUI) 중 하나로 전달합니다. 각 클라이언트는 자신의 플래그를 정의하므로, 한 클라이언트에서 동작하는 플래그가 다른 클라이언트에는 알려지지 않을 수 있어요(--method는 예를 들어 CLI 전용). 이 페이지는 플래그와 환경 변수를 소유하는 클라이언트별로 묶어 놓았습니다.

런처가 정확히 두 가지를 소유

플래그 동작
--web / --cli / --tui 클라이언트를 선택하며 기본은 --web. 두 개 이상 전달하면 Specify at most one of --web, --cli, or --tui.로 실패. 런처 플래그는 먼저 와야 해요. 런처가 소유하지 않은 첫 인수에서 파싱이 멈추고, 그 시점부터 모든 것이 변경 없이 클라이언트로 전달됩니다.
-h / --help 모드 플래그 없이 실행하면 런처 자신의 도움말을 출력하고 종료. 모드 플래그가 있으면 전달되므로 mcp-inspector --cli --help는 CLI의 도움말을 출력.

아래의 모든 것은 클라이언트에 속합니다.

서버 선택

--catalog 대 --config

세 클라이언트 모두 --catalog와 --config를 같은 공유 코드로 처리해서, 각 플래그는 web 앱, CLI, TUI에서 동일하게 동작해요. 둘이 서로 다른 점은 아래 표와 같습니다.

--catalog <path> --config <path>
쓰기 가능? 예, Inspector의 자체 서버 목록. 아니요. 있는 그대로 서빙하고, 절대 쓰지 않고 시드하지 않으며 마이그레이션하지 않음.
파일 없음? 생성되고 시드됨(아래 참고). 오류.
기본값 ~/.mcp-inspector/mcp.json, 또는 MCP_CATALOG_PATH 환경 변수. 없음. 직접 전달해야 함.
Web UI에서 편집? 예. 아니요.
용도 나만의 작업 서버 집합. 다른 사람의 구성 파일에 대한 읽기 전용 세션.

둘은 상호 배타적이며, 어느 것도 임시 대상과 결합되지 않아요. 둘 다 전달하면 세 클라이언트 모두 동일하게 거부합니다.

갓 시드된 카탈로그의 내용은 클라이언트에 따라 달라요. Web 백엔드는 두 개의 샘플 서버를 시드해서 첫 실행에 연결할 것이 즉시 있게 합니다.

{
  "mcpServers": {
    "filesystem-server-default": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    },
    "everything-server-default": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-everything"]
    }
  }
}

CLI와 TUI는 대신 빈 { "mcpServers": {} }를 시드해요. 이들은 비상호작용적이거나 목록 기반이라서, 샘플 항목은 출발점이 아니라 잡음이 되기 때문이죠.

어느 쪽이든 시드는 파일이 아직 없을 때만 일어나며, 읽기 전용 --config는 절대 시드되지 않아요.

--config는 Inspector가 쓰지 않은 구성 파일(동료의 것, 클라이언트 애플리케이션의 것, 저장소에 체크인된 것)을 가리킬 때 사용하면 돼요. Inspector가 그 파일을 건드리지 않음을 보장합니다.

임시 대상 (Ad-hoc targets)

파일 대신 서버 하나를 직접, 위치 인수 명령(stdio) 또는 URL로 이름 붙일 수 있어요.

mcp-inspector node build/index.js                              # stdio, positional
mcp-inspector --server-url https://api.example.com/mcp --transport http

공유 서버 선택 플래그

web, CLI, TUI 각각이 개별적으로 정의하므로 세 곳 모두에서 사용 가능하며, 차이는 아래에 명시했습니다.

플래그 의미 차이
--catalog <path> 쓰기 가능한 카탈로그 파일. 없음
--config <path> 읽기 전용 세션 파일. 없음
--server <name> 파일에서 이름 붙은 서버 하나를 선택. Web과 CLI 전용. TUI는 파일의 모든 서버를 로드하고 상호작용적으로 고르게 합니다.
--transport <type> stdio, sse, 또는 http. 임시 대상만.
--server-url <url> SSE/HTTP용 서버 URL. 임시 대상만.
--cwd <path> stdio 서버 프로세스의 작업 디렉터리. 없음
-e <KEY=VALUE> stdio 서버용 환경 변수. 반복 가능. 없음
--header "Name: Value" HTTP/SSE 서버용 HTTP 헤더. 반복 가능. web 클라이언트에서 임시 HTTP/SSE 서버가 필요.
[target...] 임시 서버 하나의 위치 인수 명령/URL. 없음

-- 구분자

web과 CLI 클라이언트는 맨 --에서 인수를 분리해 그 뒤의 모든 것을 대상 명령에 자체 인수로 전달해요. 이렇게 하면 Inspector가 삼켜버릴 플래그를 전달할 수 있습니다.

mcp-inspector node build/index.js -- --config /etc/myserver.conf --verbose

구분자가 없으면 --config가 Inspector 자신의 읽기 전용 세션 플래그로 읽힐 거예요.

Web 전용 플래그

플래그 의미
--dev 사전 빌드된 번들 대신 Vite 개발 서버 실행. Inspector 자체를 작업할 때 유용.

CLI와 TUI: OAuth 클라이언트 플래그

이 다섯 개는 CLI와 TUI만 정의해요. Web 클라이언트는 Client Settings 대화 상자를 통해 같은 설정을 얻습니다.

플래그 환경 변수 의미
--client-config <path> MCP_CLIENT_CONFIG_PATH 설치 수준 클라이언트 구성. 기본 ~/.mcp-inspector/storage/client.json.
--client-id <id> 없음 정적 클라이언트용 OAuth 클라이언트 ID. client.json을 덮어씀.
--client-secret <secret> 없음 기밀 클라이언트용 OAuth 클라이언트 시크릿. client.json을 덮어씀.
--client-metadata-url <url> 없음 CIMD 메타데이터 URL. client.json을 덮어씀.
--callback-url <url> MCP_OAUTH_CALLBACK_URL 인증 서버로 보내는 리다이렉트 URI. 기본 http://127.0.0.1:6276/oauth/callback. 루프백 호스트(127.0.0.1 또는 localhost)여야 해요. 로컬 콜백 리스너가 평문 http로 인증 코드를 받기 때문에, 다른 호스트는 거부되며 이를 덮어쓸 플래그는 없습니다.

CLI 전용 플래그

전체 스크립팅 표면은 CLI에 속해요. 사용법은 CLI 클라이언트를 참고하세요.

그룹 플래그
무엇을 호출할지 --method, --tool-name, --tool-arg, --tool-args-json, --uri, --prompt-name, --prompt-args, --log-level, --metadata, --tool-metadata
어떻게 실행할지 --connect-timeout, --format, --app-info
인증 --use-stored-auth, --stored-auth-only, --relogin, --wait-for-auth, --list-stored-auth, --print-handoff

환경 변수

환경 변수는 플래그와 같은 방식으로 나뉩니다. 두 개는 런처 자신이 읽고, 나머지는 CLI와 TUI 또는 web 백엔드에 속합니다.

런처가 읽음

변수 효과
MCP_DEBUG 최상위 실패에 오류 스택을 추가. 의미 있는 값일 때만: 0, false, 빈 값은 꺼짐으로 읽힘.
DEBUG 동일하며 같은 의미 있는 값 규칙 적용. 그래서 우연한 DEBUG=0이 스택 트레이스를 켜지 않고, DEBUG는 npm debug 패키지의 네임스페이스 필터로 계속 작동.

CLI와 TUI

변수 효과
MCP_CATALOG_PATH --catalog의 폴백. 임시 대상이 주어지지 않을 때만 존중되어, 이를 내보내는 셸도 일회성 임시 호출을 실행할 수 있음.
MCP_CLIENT_CONFIG_PATH --client-config의 폴백.
MCP_OAUTH_CALLBACK_URL --callback-url의 폴백.
MCP_STORAGE_DIR OAuth 상태 파일(<dir>/oauth.json)의 디렉터리.
MCP_INSPECTOR_OAUTH_STATE_PATH OAuth 상태 경로의 파일별 덮어쓰기. MCP_STORAGE_DIR보다 우선.
MCP_AUTO_OPEN_ENABLED 브라우저 자동 열기와 TTY 없이 상호작용 OAuth를 실행할 수 있는지 제어. true는 자동 열기를 강제하고 TTY 없이 OAuth 프롬프트를 허용, false는 절대 열지 않음, 미설정은 TTY에서만 열기.

Web 백엔드 환경 변수

변수 효과
MCP_INSPECTOR_API_TOKEN 실행마다 임의 토큰을 생성하는 대신 세션 토큰을 고정.
DANGEROUSLY_OMIT_AUTH /api/* 토큰 검사를 완전히 끔.
HOST 바인딩 호스트. 기본 localhost.
CLIENT_PORT Web UI 포트. 기본 6274.
DANGEROUSLY_BIND_ALL_INTERFACES 와일드카드 호스트(0.0.0.0, :: 또는 동등한 표기)에 바인딩하는 데 필요한 옵트인.
ALLOWED_ORIGINS 쉼표로 구분된 오리진 허용 목록. 기본 목록을 병합하지 않고 교체.
MCP_SANDBOX_PORT 기본적으로 동적인 MCP Apps 샌드박스 포트 고정.
HTTPS_PROXY / HTTP_PROXY / NO_PROXY 나가는 MCP 연결의 표준 프록시 라우팅.

DANGEROUSLY_OMIT_AUTH와 DANGEROUSLY_BIND_ALL_INTERFACES를 절대 결합하지 마세요. web 백엔드는 프로세스를 실행하고 OAuth 토큰을 보유하므로, 접근할 수 있는 사람은 그것을 조종할 수 있어요.

카탈로그 파일 형식

카탈로그나 구성 파일은 친숙한 MCP 클라이언트 구성 형태(mcpServers 객체)이며 옆에 서버별 Inspector 설정을 붙입니다.

{
  "mcpServers": {
    "my-stdio-server": {
      "command": "node",
      "args": ["build/index.js"],
      "env": { "API_KEY": "..." }
    },
    "my-modern-server": {
      "type": "http",
      "url": "https://api.example.com/mcp",
      "protocolEra": "modern",
      "modernLogLevel": "info",
      "headers": { "X-Tenant": "acme" },
      "roots": [{ "uri": "file:///Users/me/project", "name": "project" }]
    }
  }
}

기본값과 같은 필드는 Inspector가 파일을 다시 쓸 때 생략되어 diff를 최소로 유지해요. protocolEra(프로토콜 시대 참고)는 기본 legacy, modernLogLevel은 기본 debug입니다.

이것을 손으로 쓸 필요는 없어요. Web 클라이언트는 Claude Desktop, Cursor, Cline, VS Code 또는 레지스트리 server.json에서 기존 클라이언트 구성을 가져올 수 있습니다.

더 알아보기 (Learn more)