MCP 로그는 무엇이 실패했는지, 그리고 그것을 디버깅하는 데 충분한 정보를 알려주어야 합니다. 만약 여기에 함께 첨부된 액세스 토큰까지 포함하고 있다면, 우리는 큰 문제에 빠진 것입니다.
OAuth 실패는 아무도 의도적으로 토큰을 기록하지 않았더라도 그 선을 넘을 수 있습니다. URL은 쿼리 문자열(query string)에 비밀 정보를 담고 있을 수 있고, 폼 본문(form body)에도 포함될 수 있습니다. 그런 다음 에러 핸들러가 요청을 복사하여 이슈 트래커에 붙여넣는 메시지를 만듭니다.
디버깅 보조 도구가 어떻게 자격 증명 저장소가 될까요? 우리가 고치려고 했던 짧은 세션보다 복사된 오류 정보가 더 오래 지속되기 때문입니다.
From failed request to lasting exposure
MCP Inspector 2.9.0은 이와 관련된 흥미로운 사용 사례를 제공합니다.
MCP 서버용 시각적 테스트 도구
MCP Inspector
Model Context Protocol (MCP) 서버를 검사하기 위한 개발자 도구입니다. @modelcontextprotocol/inspector라는 단일 패키지로 제공되며, 서버를 검사하는 네 가지 방법을 제공합니다:
- Web: Node 백엔드를 가진 Vite + React + Mantine 싱글 페이지 애플리케이션(single-page app).
- CLI: 자동화, CI, 빠른 에이전트 피드백 루프를 위한 스크립팅 가능한 커맨드 라인 클라이언트.
- TUI: Ink로 구축된 대화형 터미널 UI(terminal UI).
- mcpdo (실험적): 연결 CLI입니다. 한 번 연결한 후, 암시적인 로컬 데몬을 통해 지정된 연결에 대해 여러 명령을 실행할 수 있습니다.
clients/mcpdo를 참조하십시오.
앞의 세 가지는 하나의 전역 mcp-inspector 바이너리를 통해 실행되며, mcpdo는 동일 패키지의 두 번째 바이너리입니다:
npx @modelcontextprotocol/inspector # 웹 UI (기본값)
npx @modelcontextprotocol/inspector --cli # CLI
npx @modelcontextprotocol/inspector --tui # TUI
npx -p @modelcontextprotocol/inspector mcpdo --help # mcpdo
경고
Inspector는 비밀 정보(OAuth 토큰, OAuth 클라이언트 시크릿, stdio env: 값 등)를 관리하고 저장합니다...
GitHub에서 보기
이번 릴리스에서는 획득한 OAuth 토큰을 비밀 정보 저장소로 이동시켰으며, CLI 오류 봉투(error envelopes)의 URL 쿼리 시크릿과 기록된 본문(recorded bodies)의 양식 시크릿에 대한 수정 사항이 포함되었습니다. 한 수정 사항은 원본 &에 의해 끝 부분이 분할된 양식 시크릿을 다룹니다. 이러한 세부 정보는 사용자가 자신의 MCP 도구를 검토할 때 어디를 살펴봐야 하는지 알려줍니다: 저장소, 오류 텍스트, 그리고 기록된 요청이 반드시 비밀 정보를 동일한 방식으로 처리하지는 않기 때문입니다.
Review each secret-handling surface
공유하려는 아티팩트를 검토하세요
Inspector 로그, 터미널 캡처 또는 도구 호출 추적을 공개 이슈에 첨부하기 전에, 기기에서 벗어날 복사본(copy)을 읽어보세요. 근본적인 파일을 공유할 예정이라면 안심시키는 UI 보기만 믿지 마십시오.
URL부터 시작하세요. 엔드포인트, 상태, 그리고 OAuth 단계가 실패했다는 사실은 유지하되, 쿼리 매개변수에서 자격 증명을 제거한 후에 URL을 어디에 붙여넣든 하세요. 오류 메시지도 확인하세요. 요청 필드로 표시되기보다는 URL 자체를 인용할 수 있습니다.
다음으로, 요청 및 응답 본문을 검사하세요. 특히 오류가 원본 본문(raw body)을 기록하는 경우 양식 데이터는 면밀히 살펴볼 가치가 있습니다. Inspector의 원본 & 수정 사항에서 볼 수 있듯이, 마스킹 코드는 불완전한 입력도 처리해야 합니다. 한 보기에서는 마스크된 것처럼 보이는 필드가 모든 기록된 복사본이 마스크되었다는 증거는 아닙니다.
다음으로, 실행 간 토큰이 어디에 저장되는지 확인하세요. Inspector 2.9.0은 획득한 OAuth 토큰을 비밀 저장소(secret store)에 저장하지만, 저장소 자체도 검토할 가치가 있습니다. 릴리스 노트에는 알려진 문제 사항이 문서화되어 있습니다: 동일 서버의 OAuth 프로필들이 서로의 토큰을 덮어쓸 수 있다는 것입니다. 만약 해당 서버에 대해 별도의 프로필을 사용하려면 MCP_INSPECTOR_OAUTH_STATE_PATH를 사용해야 한다면, 노트에 따르면 각 프로필에 고유한 비밀 저장소(secret store)를 할당하도록 MCP_INSPECTOR_SECRET_STORE=file과 개별적인 MCP_INSPECTOR_SECRET_FILE, 또는 프로필별 MCP_STORAGE_DIR을 사용해야 한다고 합니다. 기본 단일 프로필 설정은 영향을 받지 않습니다.
마지막으로, 노출된 자격 증명(credential)은 노출된 것으로 간주하세요. 나중에 이슈 댓글에서 해당 내용을 수정하더라도, 이전 알림이나 다운로드, 복사된 추적 기록에는 여전히 남아있을 수 있습니다. 제공자(provider)를 통해 토큰을 취소하거나 순환(rotate)시킨 다음, 공유 아티팩트(artifact)를 정리된 버전으로 대체하세요.
MCP는 Agentic AI Foundation의 오픈 프로젝트 중 하나입니다. 이 도구들은 공개적으로 검사하고, 테스트하며, 논의할 목적으로 만들어졌습니다. 다음 독자에게 작동하는 자격 증명을 넘겨주지 않으면서 실패한 OAuth 단계와 그 원인이 된 응답을 보고할 수 있어야 합니다. 진단 세부 정보는 유지하되, 토큰은 제외하세요.