spring-ai/05.MCP

02. MCP 통신 방식

  • -

이번 포스트에서는 MCP의 통신 방식에 대해 살펴보자.

MCP 통신 방식

 

MCP 통신 아키텍쳐

MCP 통신은 다음의 3 layer 아키텍쳐를 따른다.

출처: Spring.io

  • 클라이언트/서버 계층인 MCP Client와 MCP Server는 각각 클라이언트와 서버 측 프로토콜 작업을 관리하며 둘 다 통신 관리를 위해 MCP Session을 사용한다. 
  • 세션 계층인 MCP Session은 Server와 Client의 통신 상태를 관리한다.
  • 전송 계층인 MCP Transport는 Stdio, SSE, WebSocket 등 여러 전송 구현을 지원하며 JSON-RPC 메시지의 직렬화와 역직렬화를 처리한다.
JSON-RPC(JSON-Remote Procedure Call)은 JSON으로 원격 함수를 호출하고 결과를 JOSN을 받는 프로토콜로 가볍고 간단해서 많이 사용된다.

다음은 자주 사용되는 전송 방식인 SSE와 STD IO의 개념도이다.

SSE vs STDIO

 

STDIO

STDIO(Standard Input/Output)가장 기본적이고 널리 사용되는 방식으로 주로 내 컴퓨터 안에서 프로그램끼지 대화할 때 사용한다.

이 방식은 클라이언트가 마치 서버를 자신의 일부(자식 프로세스)처럼 직접 실행해서 통신하는 형태이다.

그림을 보면 각 Single Process 박스 마다 클라이언트와 서버가 한 쌍으로 묶여 있는 것을 볼 수 있다. Server와 Client가 모두 하나의 Process에서 동작한다는게 중요하다. 즉 클라이언트가 3개면 서버도 3개가 각각 실행된다.  STDIO는 통신 과정에서 별도의 네트워크 포트를 열지 않고 프로세스 간 기본 통로인 stdin, stdout을 통해 직접 JSON 데이터를 주고 받는다.

그림에서 LLM Application은 VS Code와 같은 MCP Host를 의미한다.

 

SSE

SSE(Server-Sent Events) 방식은 중앙 집중형/네트워크형이다. 이 방식에서는 서버가 독립적인 웹 서버처럼 동작하며 여러 클라이언트가 네트워크를 통해 접속하는 형태이다.

그림 하단에 있는 하나의 Server Process에 Java, Python, JavaScript로 만든 여러 Client Process들이 연결되는데 이들과 통신을 위해 서버는 SSE(Server-Sent Events)를 통해 클라이언트에게 실시간으로 데이터를 밀어준다. 클라이언트는 HTTP 요청을 통해 서버에 명령을 보내게 된다.

다음은 연속적인 데이터를 받기 위한 방법을 비교한 그림이다.

출처: https://sergeyem.ru/en/blog/90

 

 

두 방식의 비교

구분 STDIO SSE
통신 범위 로컬만 원격 가능
방향성 양방향 (stdin/stdout) 단방향 스트림 + POST 요청
프로토콜 프로세스 IPC HTTP
복잡도 매우 간단 중간
사용 사례 로컬 도구, CLI 앱 웹 기반 서비스, 원격 서버
  • STDIO: 로컬에서 실행되는 MCP 서버 (예: 파일 시스템 접근, 로컬 DB)
  • SSE: 웹 서비스나 원격 MCP 서버 (예: API 서버, 클라우드 서비스)

 

'spring-ai > 05.MCP' 카테고리의 다른 글

01. MCP란?  (0) 2026.01.21
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.