$ cat wiki/concepts/mcp.md
MCP — Model Context Protocol
정의
AI 애플리케이션이 외부 도구·데이터 소스·서비스에 연결되는 방식을 표준화한 개방형 프로토콜. 클라이언트(AI 애플리케이션)가 tools(호출 가능한 함수), resources(읽을 수 있는 데이터), prompts(재사용 가능한 템플릿)를 노출하는 서버와 공통 와이어 포맷으로 통신하므로, 한 번 작성한 연동이 MCP를 지원하는 모든 클라이언트에서 그대로 동작한다.
Anthropic에서 시작되었고, 현재는 여러 벤더가 참여하는 SDK 집합(TypeScript, Python, Go, C#, Rust는 베타)과 함께 개방형 명세로 관리된다 (source).
왜 중요한가
- 에이전트 생태계가 실제로 합의한 연동 계층이다. MCP는 월 4억 회 SDK 다운로드를 넘어섰고, 이는 1년 새 4배 증가한 수치다. 서로 경쟁하는 에이전트 제품들이 공통 연결 표준으로 채택하고 있다 (Claude blog).
- 프로토콜 결정은 모든 배포로 전파된다. 2026-07-28 개정은 서버의 확장 방식과 인증 방식을 바꾼다. 원격 MCP 서버는 이 변화를 선택하는 것이 아니라 상속받는다.
- 에이전트 보안이 실제로 강제되는 지점이다. 인가, 도구 권한, 게이트웨이 라우팅은 모두 프로토콜 수준의 문제이며, 그래서 아래의 인가 개편은 분량에 비해 훨씬 큰 의미를 갖는다. → AI-Enabled Cyberattacks
현재 수준 (2026-07-29)
2026-07-28 명세
2026년 7월 28일 공개 — 프로토콜 최초 공개 이후 가장 큰 개정이다. 코어를 양방향 상태 기반(stateful) 프로토콜에서 상태 없는(stateless) 요청/응답 모델로 옮겼다 (source).
상태 없는 코어. initialize/initialized 교환과 Mcp-Session-Id 헤더가 사라졌고, 세션 자체가 제거되었다(SEP-2567). 각 요청이 자신의 프로토콜 버전, 클라이언트 식별자, capability를 직접 실어 나른다. 호출 간 상태가 필요한 서버는 이제 서버가 발급한 명시적 핸들을 만들어 일반 도구 인자로 주고받는다. 실무적 효과: 이전에는 sticky session과 공유 세션 저장소가 필요했던 원격 서버가 평범한 라운드로빈 로드밸런서 뒤에서, 서버리스나 엣지 인프라 위에서 돌아간다.
Multi Round-Trip Requests (MRTR). 열린 스트림을 요구하던 서버 개시 요청을 대체한다. 호출 도중 사용자 입력이 필요한 도구는 resultType: "input_required"를 반환하고, 클라이언트는 inputResponses에 답을 담아 재시도한다.
헤더 기반 라우팅. Mcp-Method와 Mcp-Name HTTP 헤더로 게이트웨이가 JSON 본문을 파싱하지 않고 라우팅·인가를 수행한다.
캐시 가능한 목록 응답. tools/list, resources/list, prompts/list가 더 이상 연결마다 달라지지 않으며 ttlMs와 cacheScope를 함께 반환하므로 클라이언트가 캐싱할 수 있다.
인가 강화. 6개의 SEP가 명세를 실제 운영 환경의 OAuth 2.0 / OIDC에 맞춘다. 인가 응답에 대한 RFC 9207 issuer 검증(SEP-2468), Dynamic Client Registration(DCR)에서 Client ID Metadata Documents(CIMD)로의 전환, 그리고 클라이언트 자격 증명을 발급한 인가 서버에 바인딩하는 변경이다. 그 결과 MCP 서버가 Entra나 Okta 같은 기업 ID 시스템에 우회 없이 연결된다.
확장 프레임워크. Tasks, MCP Apps, Enterprise Managed Authorization(EMA)이 버전 관리되는 확장으로 정리되어, 코어를 바꾸지 않고도 인터랙티브 UI와 장시간 실행 작업을 추가할 수 있다. Tasks 확장은 상태 없는 모델에 맞춰 재설계되었다. 서버가 tools/call에 task 핸들로 응답하면 클라이언트가 tasks/get, tasks/update, tasks/cancel로 진행을 몰아간다.
폐기 예정. Roots, Sampling, Logging이 최소 12개월의 전환 기간과 함께 폐기 대상이 되었고, 레거시 HTTP+SSE 전송도 마찬가지다.
마이그레이션. 세션 헤더나 initialize 핸드셰이크에 의존하던 서버는 프로토콜 버전과 capability를 _meta에서 읽고, server/discover를 구현하고, 목록·읽기 응답에 ttlMs / cacheScope를 붙여야 한다. 게이트웨이는 세션 어피니티 대신 Mcp-Method / Mcp-Name으로 라우팅해야 한다.
클라이언트 채택
Claude는 공개 당일 2026-07-28 명세 지원을 확대했다. 상태 없는 코어, OAuth/OIDC 인가 변경, 버전 관리되는 Apps 및 Tasks 확장이 포함된다 (Claude blog). → Anthropic
열린 문제
- 12개월 폐기 유예는 마이그레이션 계획이 아니다. Roots, Sampling, Logging, HTTP+SSE 모두 대체재가 있지만, 생태계의 롱테일에 해당하는 소규모 서버들에는 유예가 끝나기 전까지 움직일 강제력이 없다.
- 상태는 사라진 것이 아니라 이동했다. 도구 인자로 전달되는 서버 발급 핸들은 세션 수명을 애플리케이션 코드로 밀어 넣는데, 그곳은 표준화되어 있지도 않고 게이트웨이가 들여다볼 수도 없다.
- 캐시 가능한 목록은 도구 집합이 안정적이라고 가정한다.
ttlMs는 서버가 자기 변동성에 대해 하는 약속이다. 사용자나 권한별로 도구가 달라지는 서버는 값을 보수적으로 잡거나, 낡은 capability 목록을 내보내게 된다. - 인가 정합성은 바닥을 올릴 뿐 천장을 올리지 않는다. CIMD와 issuer 검증은 클라이언트 식별의 약점을 메우지만, 특정 에이전트가 그 서버의 도구를 호출해도 되는지에 대해서는 아무 말도 하지 않는다.
주요 논문
- Molt: A Scalable PyTorch-Native Training Framework for Agentic Reinforcement Learning — 에이전틱 RL 학습 인프라. MCP가 서빙 쪽에서 한 표준화의 학습 쪽 대응물
- Skill Self-Play: Pushing the Frontier of LLM Capability with Co-Evolving Skills — 에이전트 역량의 단위로서의 skill, 도구 사용 벤치마크에서 평가
관련 개념
- Agents (LLM Agents) — MCP는 에이전트 시스템이 올라서는 도구 접근 기반
- Claude Managed Agents — MCP 생태계에 연결됨. MCP 터널은 비교적 최근의 연동 패턴
- Google ADK (Agent Development Kit) — 경쟁하거나 보완하는 에이전트 개발 스택
- AI-Enabled Cyberattacks — 도구 접근은 인가 개편이 다루는 에이전트 공격면
- Anthropic — 프로토콜의 출발점이자 클라이언트 지원 제공처