HTTP transport 를 쓰는 MCP server 의 authorization 은 OAuth 2.1 로 해. Spec 은 MCP server 를 OAuth 2.1 Resource Server 로 봐. Access token 을 받아서 검증하고, token 의 scope 로 tool 호출 하나하나를 허가하는 역할이지. MCP client 는 바깥의 Authorization Server 에서 token 을 받아오는 OAuth client 고. 핵심은 이거야. MCP server 는 auth 를 발행하는 장사를 하지 않아 — token 을 받아 쓰기만 하고 만들지는 않아.
Session 하나가 흘러가는 모습은 이래. MCP client 를 굴리는 host 가 user 를 authorization server 의 OAuth 흐름으로 안내해서 access token (과 refresh token) 을 받아 저장해. 그 다음부터는 모든 MCP request 에 access token 을 Bearer header 로 실어 보내. MCP server 는 token 을 검증하고 (introspection 이든 JWT 검증이든), scope 를 읽어서 요청을 허가해. Token 을 갱신하는 건 host 의 몫이고, MCP server 는 이미 발행된 Bearer token 만 보게 돼.
MCP 만의 세부 사항이 둘 있어:
- Authorization Server 찾기. Token 없이 (또는 잘못된 걸로) 호출이 들어오면, MCP server 는 authorization 정보가 어디 있는지 가리키는
WWW-Authenticateheader 를 내려줘. Client 는 그 정보를 받아 issuer 와 scope, PKCE 요구사항을 알아낸 다음 OAuth 흐름을 돌려. OpenID Connect 가 일반 신원 확인에서 그랬듯, MCP server 도 자기 auth 를 스스로 설명하는 셈이야. - Client ID Metadata Document (CIMD) — 2025-11-25 revision 에서 들어왔어. Server 마다 client 를 따로 등록시키는 대신, client 가 널리 알려진 URL 에 metadata 문서를 올려두고 server 가 필요할 때 가져가는 방식이야. '서비스마다 client 등록하기' 라는 마찰이 규모가 커지면 도입 자체를 죽이는데, MCP 는 이걸로 그 마찰을 피해.