MCP 인가

MCP authorization

MCP 클라이언트의 토큰과 범위를 확인해 허용된 도구만 실행합니다.

···
html
<div class="sd"><div class="sd-head"><strong>MCP AUTHORIZATION</strong><span id="state">live check</span></div><div class="sd-stage"><div class="token mono">scope: read</div><div class="tools"><div class="tile" id="read">read tool</div><div class="tile" id="write">write tool</div></div><div class="verdict" id="verdict">ALLOW</div></div><div class="sd-foot"><span id="caption">checking boundary</span><span>tap to step</span></div></div>
css
.sd{box-sizing:border-box;width:min(94vw,700px);height:min(86vh,318px);padding:clamp(9px,2.3vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);display:flex;flex-direction:column;gap:clamp(6px,1.8vmin,12px);font:600 clamp(12px,2.6vmin,16px)/1.25 var(--font-sans, sans-serif)}.sd *{box-sizing:border-box}.sd-head,.sd-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:1.25em}.sd-head strong{color:var(--accent);letter-spacing:.06em}.sd-head span,.sd-foot{color:var(--muted)}.sd-foot{font-size:clamp(12px,2.4vmin,14px)}.sd-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:clamp(6px,2vmin,18px);overflow:hidden}.sd .mono{font-family:ui-monospace,monospace}.sd .tile{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(5px,1.5vmin,10px);text-align:center}.sd .good{color:var(--accent);border-color:var(--accent)}.sd .bad{color:var(--accent-3);border-color:var(--accent-3)}.sd .arrow{color:var(--muted);font-size:clamp(15px,4vmin,28px)}.sd .active{background:color-mix(in srgb,var(--accent) 16%,var(--surface));border-color:var(--accent)}.sd .blocked{background:color-mix(in srgb,var(--accent-3) 13%,var(--surface));border-color:var(--accent-3)}.token{border:1px solid var(--accent);border-radius:7px;padding:clamp(5px,1.7vmin,12px);color:var(--accent);max-width:36%}.tools{display:grid;gap:5px;width:30%}.tools .tile{padding:clamp(4px,1.2vmin,8px)}.verdict{font:800 clamp(12px,3vmin,18px) ui-monospace,monospace;color:var(--accent)}.tools .selected{border-color:var(--accent)}
js
let n=0;function advance(){n=1-n;document.getElementById('read').classList.toggle('selected',!n);document.getElementById('write').classList.toggle('blocked',!!n);document.getElementById('verdict').textContent=n?'DENY':'ALLOW';document.getElementById('verdict').style.color=n?'var(--accent-3)':'var(--accent)';document.getElementById('state').textContent=n?'scope missing':'scope matched';document.getElementById('caption').textContent=n?'read token cannot call write tool':'read token calls read tool'}advance();setInterval(advance,900);
document.querySelector('.sd').addEventListener('pointerdown',advance);

MCP 인가는 클라이언트가 서버의 보호된 도구를 호출할 때 어떤 권한으로 접근하는지 정합니다. 토큰의 발급자와 대상, 범위를 확인하고 도구별 필요한 권한을 서버에서 검사합니다.

데모는 읽기 범위의 토큰으로 읽기 도구는 통과하고 쓰기 도구는 거절되는 모습을 보여줍니다. 2026 규격 후보는 OAuth·OIDC 연동의 발급자 검증을 더 엄격히 다루지만, 실제 적용 시 채택한 규격 버전을 확인해야 합니다.

언제 쓰나

원격 MCP 서버에서 사용자별 도구 권한을 나누고 토큰을 검증할 때 적용합니다.

페이지로 열기 ↗