설정과 플래그

설정과 플래그 (Configuration and flags)

출처: MCP 공식 문서 — Configuration and flags

mcp-inspector 바이너리는 실행기(launcher)예요. 자기 플래그 두 개를 읽고 나머지 인자는 전부 세 클라이언트(웹, 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 vs --config

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

--catalog <path> --config <path>
쓰기 가능? 네, Inspector 자신의 서버 목록. 아니요. 있는 그대로 서빙, 쓰거나 시드하거나 마이그레이션하지 않음.
파일 없음? 만들고 시드(아래 참고). 오류.
기본값 ~/.mcp-inspector/mcp.json, 또는 MCP_CATALOG_PATH 환경 변수. 없음. 직접 넘겨야 해요.
웹 UI에서 편집? 네. 아니요.
용도 여러분 자신의 작업 서버 모음. 남의 설정 파일에 대한 읽기 전용 세션.

둘은 상호 배타적이고, 임시 대상과도 결합하지 않아요. 둘 다 넘기면 세 클라이언트 모두 동일하게 거부해요.

갓 시드된 카탈로그에 뭐가 들어 있는지는 클라이언트에 따라 달라요. 웹 백엔드는 샘플 서버 두 개를 시드해서, 첫 실행에 바로 연결할 게 있게 해요.

{
  "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가 그 파일을 건드리지 않음을 보장해요.

임시 대상

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

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

공용 서버 선택 플래그

웹, CLI, TUI 각각이 별도로 정의해서 세 곳 모두에서 쓸 수 있고, 차이가 있으면 표기해요.

플래그 의미 차이점
--catalog <path> 쓰기 가능한 카탈로그 파일. 없음
--config <path> 읽기 전용 세션 파일. 없음
--server <name> 파일에서 이름 있는 서버 하나 고르기. 웹과 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 헤더. 반복 가능. 웹 클라이언트에선 임시 HTTP/SSE 서버 필요.
[target...] 임시 서버 하나를 위한 위치 인자 명령/URL. 없음

-- 구분자

웹과 CLI 클라이언트는 인자를 맨 --에서 나누고 그 뒤는 전부 대상 명령의 자기 인자로 넘겨요. Inspector가 삼킬 플래그를 넘기는 방법이죠.

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

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

웹 전용 플래그

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

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

이 다섯 개는 CLI와 TUI만 정의해요. 웹 클라이언트는 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 client에서 볼 수 있어요.

그룹 플래그
무엇을 호출 --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 또는 웹 백엔드에 속해요.

실행기가 읽는 것

변수 효과
MCP_DEBUG 최상위 실패에 오류 스택을 덧붙여요. 의미 있는 값일 때만: 0, false, 빈 값은 꺼진 것으로 읽혀요.
DEBUG 동일. 같은 의미 있는 값 규칙이라, 우연한 DEBUG=0이 스택 트레이스를 켜지 않고 DEBUG는 여전히 npm debug 패키지의 네임스페이스 필터로 동작해요.

CLI와 TUI

변수 효과
MCP_CATALOG_PATH --catalog의 폴백. 임시 대상이 주어지지 않을 때만 존중되므로, 이를 export한 셸에서도 일회성 임시 실행은 가능해요.
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에서만 열어요.

웹 백엔드 환경 변수

변수 효과
MCP_INSPECTOR_API_TOKEN 실행마다 임의 토큰 대신 세션 토큰을 고정.
DANGEROUSLY_OMIT_AUTH /api/* 토큰 검사를 완전히 끔.
HOST 바인드 호스트. 기본 localhost.
CLIENT_PORT 웹 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_AUTHDANGEROUSLY_BIND_ALL_INTERFACES를 함께 쓰지 마세요. 웹 백엔드는 프로세스를 띄우고 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(Protocol eras 참고)는 기본 legacy, modernLogLevel은 기본 debug예요.

직접 손으로 쓸 필요는 없어요. 웹 클라이언트는 기존 클라이언트 설정 불러오기로 Claude Desktop, Cursor, Cline, VS Code 또는 레지스트리 server.json에서 가져올 수 있어요.

더 알아보기 (Learn more)