설정과 플래그
설정과 플래그 (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_AUTH와DANGEROUSLY_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)
- MCP 공식 문서 — Configuration and flags
- MCP 공식 문서 — CLI client
- MCP 공식 문서 — Protocol eras