Claude Code에서 MCP 서버 인증이 필요할 때 해결법
Claude Code는 해결하지 못한 401이나 403을 받은 MCP 서버를 인증 필요로 표시합니다. 다시 로그인하는 방법과 API 키가 더 알맞은 경우를 정리했습니다.

Claude Code에서 원격 MCP 서버가 "needs authentication"(인증 필요) 상태가 되는 것은, 서버가 401 Unauthorized나 403 Forbidden으로 응답했는데 Claude Code가 저장된 OAuth 토큰으로 이를 해결하지 못했을 때입니다. 로그인하면 해결됩니다. 세션에서 /mcp를 실행하고 브라우저 단계를 따르거나, 셸에서 claude mcp login <name>을 실행하세요. Sume 호스팅 MCP 서버라면 두 가지를 먼저 확인하세요. 로그인을 끝까지 마쳤는지, 그리고 액세스 토큰이 만료되지 않았는지입니다. 현재 코드에서 토큰은 한 시간 동안 유효하고 Sume는 리프레시 토큰을 발급하지 않습니다.
Claude Code 동작은 2026-09-27에 확인한 MCP 문서에서 가져왔으며, 버전에 따라 달라집니다. Sume 쪽 내용은 MCP 빠른 시작과 OAuth와 API 키에서, 토큰 수명은 현재 서버 코드에서 가져왔습니다. Sume 기초 페이지는 호스팅 MCP가 여전히 동작하지만 현재 주 연동 경로는 아니라고 설명합니다.
Claude Code는 왜 서버에 인증이 필요하다고 하나요?
상태 코드와 서버를 연결한 방식에 따라 다릅니다.
| 상황 | Claude Code의 동작 |
|---|---|
로그인한 적 없는 서버에서 받은 401 또는 403 | OAuth 플로를 완료할 수 있도록 /mcp에 서버를 표시 |
이미 로그인한 OAuth 서버에서 받은 401 | 저장된 토큰을 갱신하고 한 번 재시도. 그 재시도도 실패할 때만 서버를 표시 |
| 서버가 저장된 리프레시 토큰을 거부 | /mcp를 가리키는 알림 표시. /mcp의 Re-authenticate로 다시 로그인 |
도구 호출에서 받은 403 insufficient_scope | 추가 권한이 필요하다는(needs additional permissions) 메시지와 함께 호출 실패. 서버는 인증 필요로 표시 |
직접 설정한 Authorization 헤더가 거부됨 | 연결 실패로 보고하고 OAuth로 전환하지 않음 |
claude -p나 Agent SDK 실행 중 로그인이 필요함 | 도구 검색이 켜져 있으면(기본값), 인가하기 전까지 서버의 도구를 쓸 수 없다고 Claude에게 알림 |
Sume 서버는 왜 계속 로그인하라고 하나요?
- 서버를 추가만 하고 로그인하지 않은 경우입니다.
claude mcp add는 설정을 쓸 뿐이고, 로그인은 별도 단계입니다. 현재 코드에서 Sume는 토큰 없는 요청에 OAuth 메타데이터를 가리키는401로 응답하므로, 빠른 시작의 두 번째 명령어인claude mcp login sume을 실행하세요. - 토큰이 만료된 경우입니다. 현재 코드에서 Sume MCP 액세스 토큰은 한 시간 동안 유효하고 토큰 응답에 리프레시 토큰이 없으므로, Claude Code가 먼저 시도하는 갱신은 성공할 수 없습니다. 만료되거나 폐기된 토큰은 토큰이 없을 때와 같은
401을 받습니다. 플로 자체는 Sume MCP 서버 OAuth 플로에서 다룹니다.
다시 로그인하려면 어떻게 하나요?
- 세션에서:
/mcp를 실행하고 브라우저에 나오는 단계를 따르세요. 로그인한 뒤 리다이렉트가 실패하면, 주소 표시줄의 콜백 URL 전체를 Claude Code가 보여 주는 프롬프트에 붙여 넣으세요. - 셸에서:
claude mcp login sume을 실행하세요. SSH 환경에서는 브라우저를 여는 대신 인가 URL을 출력합니다. 그 URL을 자신의 머신에서 연 뒤 리다이렉트 URL을 다시 붙여 넣으세요.ssh -t로 접속하고, 그 프롬프트를 강제로 띄우려면--no-browser를 넘기세요. - Sume 동의 페이지에서 Read는 켜진 채 고정되고 Write는 기본적으로 꺼져 있습니다. Claude가 쓰기·유료 도구를 실행해야 할 때만 Write를 켜세요. 읽기 전용 토큰은 그런 도구에서
insufficient_scope를 받습니다. 현재 Sume 코드는 이를 HTTP403이 아니라 실패한 도구 결과 안에 담아 반환하므로, 로그인 만료가 아니라 권한 문제입니다.claude mcp logout sume을 실행한 뒤 Write를 켜고 다시 로그인하세요. 다른 해결 방법은 Sume MCP insufficient_scope·누락 도구·타임아웃 해결에서 다룹니다. claude mcp list로 서버가 연결됨으로 표시되는지 확인한 뒤, Claude에게mcp_health나tools_list를 호출해 달라고 하세요.
claude -p와 CI에는 무엇을 써야 하나요?
API 키입니다. 비대화형 모드에는 /mcp 패널이 없어 Claude Code가 OAuth 플로를 대신 실행해 줄 수 없고, 어차피 현재 코드에서 Sume 토큰은 한 시간만 유효합니다. Sume는 자동화를 위해 API 키 원격 MCP를 유지합니다. 키는 Authorization: Bearer나 x-api-key 중 하나로 보내고 둘 다 보내지는 마세요(현재 코드는 둘 다 담은 요청을 거부합니다). 이 세션에는 쓰기·유료 도구를 포함한 전체 호스팅 도구 세트가 보입니다. 키는 CI 시크릿 저장소에 두고, 절대 채팅에 붙여 넣지 마세요.
claude mcp add --transport http sume https://mcp.sume.com/mcp \
--header "Authorization: Bearer $SUME_API_KEY"키 헤더를 설정하면 무엇이 달라지나요?
이제 거부된 키는 인증 필요가 아니라 연결 실패로 표시되며, Claude Code는 OAuth로 전환하지 않습니다. 키를 확인하거나, 헤더를 제거하고 OAuth로 로그인하세요. 기존 항목을 어느 쪽으로 바꾸든 먼저 제거해야 합니다. 같은 스코프에 이미 있는 이름으로 claude mcp add를 실행하면 실패하고, claude mcp remove sume은 Claude Code가 그 서버용으로 저장한 OAuth 토큰도 함께 삭제합니다. 나머지 설정은 Claude Code·Cursor·Codex를 호스팅 MCP로 Sume에 연결에 있습니다.
출처
관련 글
개발자 카테고리의 다른 글
- MCP 도구 어노테이션: readOnlyHint와 클라이언트 활용법
MCP 도구 어노테이션은 readOnlyHint 같은 선택적 힌트입니다. 각 힌트의 의미와 기본값, 그리고 ChatGPT·VS Code·Copilot이 이를 쓰는 방식을 정리합니다.
- Python 이미지 생성 API: AI 이미지 생성하고 저장하기
Python에서 Requests로 이미지를 생성하세요. 이미지 API에 프롬프트를 POST하고, 200이면 URL을 읽고 202면 Job을 폴링한 뒤 파일을 하나씩 저장합니다.
- JavaScript 음성 인식 API: Node.js에서 오디오를 텍스트로
서버의 JavaScript 코드에서 음성 인식 API를 호출하세요. Node.js에서 Sume SDK로 오디오 파일 URL을 보내고, Job을 기다린 뒤 텍스트를 읽습니다.
- Python 음성 인식(STT): 오디오를 타임스탬프와 함께 텍스트로
Python에서 Requests로 음성을 텍스트로 변환하세요. 오디오 URL을 보내고 Job을 폴링한 뒤 전사문과 단어별 타임스탬프를 읽는 Sume STT 1.0 스크립트입니다.
작성자 Sume