MCP 서버는 어떻게 짜여 있는가: Tools·Resources·Sampling과 보안 계층

MCP(Model Context Protocol)의 JSON-RPC 3원 인터페이스와 서버 구현 아키텍처, A2A·ANP 경쟁 프로토콜 비교, Linux Foundation 거버넌스 실무 가이드

2026-08-14 · 최초 발행 2026-05-04

2024년 11월 Anthropic이 오픈소스로 공개한 Model Context Protocol(MCP)이 출시 16개월 만에 월간 다운로드 9,700만 건을 돌파하며 사실상 AI 에이전트 통합 표준으로 자리잡았다. 단순한 API 연동 규격을 넘어 Linux Foundation 산하 Agentic AI Foundation의 오픈 거버넌스 체계로 편입되면서, MCP는 Kubernetes·PyTorch와 동일한 신뢰도를 가진 산업 인프라로 진화하고 있다.

AI 도구 통합이 파편화됐던 이유

AI 에이전트가 외부 세계와 상호작용하려면 파일 시스템·데이터베이스·웹 서비스·코드 실행 환경 등 수십 가지 도구와 연결되어야 한다. MCP 이전에는 각 AI 모델 제공사가 독자적인 함수 호출 형식을 정의했고, 개발자는 OpenAI의 Function Calling, Claude의 Tool Use, Gemini의 Function Declarations를 각각 별도로 구현해야 했다. AI 모델 N개와 도구 M개가 있을 때 N×M 개의 통합 코드가 필요한 구조였다.

MCP는 이 문제를 USB-C 포트에 비유할 수 있다. 어떤 기기든 USB-C 규격을 따르면 하나의 케이블로 연결되듯, MCP 서버를 구현하면 어떤 MCP 클라이언트(AI 에이전트)에서도 해당 도구를 사용할 수 있다. N+M 개의 구현으로 충분해진다.

AI 에이전트(MCP 클라이언트)MCP 프로토콜 레이어JSON-RPC 2.0MCP 서버 A파일 시스템MCP 서버 B데이터베이스MCP 서버 C 검색 APIMCP 서버 D코드 실행 환경로컬 파일PostgreSQLMySQLMongoDBBrave SearchTavilySerpAPIPython SandboxNode.js Runtime

Tools·Resources·Sampling: JSON-RPC 3원 인터페이스

MCP는 JSON-RPC 2.0을 전송 계층 프로토콜로 채택했다. 모든 메시지는 {"jsonrpc": "2.0", "method": "...", "params": {...}, "id": ...} 형식을 따른다. 언어·런타임에 독립적이며, stdio와 Streamable HTTP(SSE 기반) 두 가지 전송 방식을 지원한다.

Tools(도구)는 에이전트가 실행할 수 있는 함수다. 각 도구는 JSON Schema로 입력 스펙을 정의하며, 서버는 tools/listtools/call 메서드를 구현한다. 에이전트가 tools/call을 호출하면 서버는 실제 작업을 수행하고 결과를 반환한다. 파일 읽기·쓰기, 데이터베이스 쿼리, API 호출 등이 모두 Tool로 표현된다.

Resources(리소스)는 읽기 전용 데이터 소스다. resources/list로 사용 가능한 리소스 목록을 조회하고, resources/read로 특정 URI의 내용을 가져온다. 파일 내용, 데이터베이스 스키마, 환경설정 등 에이전트가 컨텍스트로 참조해야 하는 정적 데이터가 여기에 해당한다.

Sampling(샘플링)은 서버가 역방향으로 클라이언트(LLM)에게 추론을 요청하는 인터페이스다. 이는 MCP의 독특한 설계로, 서버가 중간 판단이 필요할 때 LLM의 언어 능력을 활용할 수 있게 한다. 예컨대 코드 분석 서버가 "이 함수의 복잡도를 평가해달라"는 추론을 LLM에 위임하는 방식이다.

"백엔드 시스템""MCP 서버""MCP 클라이언트(AI 에이전트)""백엔드 시스템""MCP 서버""MCP 클라이언트(AI 에이전트)"initialize (프로토콜 버전, 기능 협상)capabilities (tools, resources, sampling 지원 여부)tools/list[tool definitions with JSON Schema]tools/call {name, arguments}실제 작업 수행결과 반환tool resultsampling/createMessage (역방향 LLM 요청)추론 결과

프로토콜 연결은 반드시 핸드셰이크로 시작한다. 클라이언트가 initialize 요청에 지원 프로토콜 버전과 자신의 기능(capabilities)을 전송하면, 서버는 자신이 지원하는 기능 목록으로 응답한다. 이후 클라이언트가 initialized 알림을 보내면 실질적인 통신이 시작된다. 이 상태 협상(stateful negotiation) 방식은 하위 호환성을 보장하면서 프로토콜을 점진적으로 확장할 수 있게 한다.

서버를 짤 때 도구 등록부터 보안까지 무엇을 신경 써야 하는가

실제 MCP 서버를 구현할 때는 프로토콜 처리 레이어와 비즈니스 로직 레이어를 명확히 분리하는 것이 중요하다. Python SDK(mcp)와 TypeScript SDK(@modelcontextprotocol/sdk)가 공식으로 제공되며, 각각 stdio_server()StdioServerTransport 클래스가 저수준 프로토콜 처리를 담당한다.

도구 등록은 데코레이터 패턴으로 선언적으로 작성한다. Python 예시에서는 @server.tool() 데코레이터를 사용하고, 함수의 타입 힌트와 독스트링이 자동으로 JSON Schema 스펙으로 변환된다. 구현 코드가 곧 문서이자 스펙이 되는 일관성을 제공하는 방식이다.

인증과 보안은 MCP 서버 구현에서 가장 중요한 설계 결정이다. stdio 전송 방식은 로컬 프로세스 간 통신이므로 운영체제 수준의 프로세스 격리가 기본 보안을 제공한다. 반면 Streamable HTTP 방식은 네트워크에 노출되므로 별도의 보안 계층이 필요하다.

인증 성공인증 실패권한 있음권한 없음한도 이내한도 초과클라이언트 요청인증 레이어OAuth 2.0 / API Key인가 레이어권한 범위 검사401 Unauthorized속도 제한 레이어Rate Limiter403 Forbidden도구 실행429 Too Many Requests결과 반환

속도 제한(Rate Limiting)은 에이전트가 루프에 빠졌을 때 서버를 보호하는 핵심 안전장치다. 에이전트가 잘못된 추론으로 동일한 도구를 반복 호출하면 백엔드 시스템에 과부하가 걸릴 수 있다. 슬라이딩 윈도우 알고리즘이나 토큰 버킷 방식으로 요청 빈도를 제한하는 것이 표준 관행이다.

오류 처리는 MCP 프로토콜 수준 오류와 도구 실행 오류를 구분해야 한다. 프로토콜 오류(잘못된 JSON-RPC 형식, 존재하지 않는 메서드 등)는 JSON-RPC 표준 오류 코드로 응답한다. 도구 실행 오류(파일 없음, 권한 거부 등)는 isError: true 플래그와 함께 도구 결과로 반환하여 에이전트가 오류 상황을 인식하고 대안적 전략을 취할 수 있게 한다.

특정 기업 프로젝트에서 중립 재단으로

2025년 12월 9일 Anthropic은 MCP를 Linux Foundation 산하 신설 조직인 Agentic AI Foundation에 기증했다. 창립 멤버로 Anthropic, Block, OpenAI가 참여했고, 플래티넘 회원으로 AWS, Google, Microsoft, Cloudflare, Bloomberg이 합류했다. MCP가 단일 기업의 프로젝트에서 업계 공동 표준으로 전환되는 결정적 순간이었다.

Linux Foundation 거버넌스는 두 가지 효과를 낳는다. 하나는 중립성 보장이다. Anthropic 단독 관리 체계에서는 경쟁 AI 기업들이 MCP 채택을 꺼릴 수 있었지만, 중립적 거버넌스 아래서는 OpenAI, Google, Microsoft도 동등한 거버넌스 발언권을 가지므로 특정 기업에 유리한 방향으로 프로토콜이 변경될 위험이 없다. 다른 하나는 엔터프라이즈 신뢰성이다. 금융·의료·공공기관 등 규제 산업의 IT 부서는 단일 기업 프로젝트보다 Linux Foundation 표준을 훨씬 쉽게 승인할 수 있다. Kubernetes와 PyTorch가 걸어간 길을 MCP도 따르는 셈이다.

A2A·ANP와는 경쟁이 아니라 레이어가 다르다

MCP의 급성장에 자극받아 경쟁 프로토콜들도 등장했다. 가장 주목받는 것은 Google이 제안한 Agent-to-Agent(A2A) 프로토콜과 Agent Network Protocol(ANP)이다.

구분 MCP A2A ANP
설계 목적 AI↔도구 통합 에이전트 간 협업 분산 에이전트 네트워크
전송 계층 JSON-RPC 2.0 HTTP/REST + SSE DID 기반 P2P
인증 방식 구현체 위임 OAuth 2.0 분산 신원(DID)
생태계 성숙도 97M 다운로드 (성숙) 초기 도입 단계 실험적
거버넌스 Linux Foundation Google 주도 커뮤니티

중요한 점은 MCP와 A2A가 경쟁 관계라기보다 상호 보완적이라는 것이다. MCP는 에이전트가 외부 도구·데이터 소스와 연결하는 수직 통합(도구 레이어)을 담당하고, A2A는 에이전트 간 작업 위임과 결과 공유(에이전트 레이어)를 담당한다. 실제로 많은 기업들이 MCP로 도구를 연결하면서 동시에 A2A로 멀티에이전트 오케스트레이션을 구성하는 복합 아키텍처를 채택하고 있다.

97M 다운로드는 네트워크 효과의 결과다

MCP의 97M 다운로드는 단순한 인기 지표가 아니라 양면 네트워크 효과(two-sided network effects)의 결과다. 더 많은 MCP 서버(도구 공급자)가 생기면 MCP를 지원하는 AI 에이전트(수요자)의 효용이 높아지고, 이는 다시 더 많은 서버 개발을 촉진한다.

현재 공개 MCP 서버 레지스트리에는 파일 시스템, Git, PostgreSQL, Slack, GitHub, Brave Search, Puppeteer, SQLite 등 수백 개의 서버가 등록되어 있다. Gartner가 2026년 말까지 기업 애플리케이션의 40%가 AI 에이전트를 내장할 것으로 전망한 상황에서, 이미 검증된 MCP 서버 생태계는 기업들이 에이전트 도입 시간을 획기적으로 단축할 수 있는 핵심 자산이 된다.

네트워크 효과는 프로토콜 전쟁을 조기에 종식시키는 경향이 있다. HTTP, TCP/IP, SQL처럼 일단 네트워크 효과의 임계점을 넘어선 표준은 기술적 우위를 가진 경쟁자가 나타나더라도 대체되기 매우 어렵다. MCP가 이미 그 임계점에 도달했다는 평가가 업계에서 힘을 얻고 있다.

MCP는 AI 에이전트가 외부 세계와 상호작용하는 방식을 표준화함으로써 개발 생산성과 생태계 다양성을 동시에 높이고 있다. JSON-RPC 기반의 Tools·Resources·Sampling 3원 인터페이스는 단순하면서도 강력한 설계로, 언어와 런타임에 무관하게 구현할 수 있다. A2A·ANP와의 관계는 경쟁보다는 보완에 가까우며, 에이전틱 AI 시대의 프로토콜 스택은 레이어별로 특화된 표준들이 협력하는 구조로 수렴할 가능성이 높다.

Sources

MCPJSON-RPCAgentic AI FoundationA2A프로토콜 아키텍처