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 요청을 통해 서버에 명령을 보내게 된다.