MCP 양방향 수신 루프 — 서버 개시 요청(sampling/elicitation/roots)을 SSE로 받아 응답한다.
Streamable HTTP에서 서버→클라이언트 요청은 SSE 이벤트로 도착한다. 이 모듈은 SSE 청크를
파싱(ElGraph.LLM.SSE 재사용)해 각 JSON-RPC 메시지를 ElGraph.MCP.Client.Capabilities로
처리하고, 응답이 필요한 요청이면 응답 JSON을 respond 콜백으로 되돌려보낸다
(ElGraph.MCP.Client.StreamableHTTP.listen/3가 그 콜백으로 서버에 POST한다).
순수 로직(파싱·디스패치)은 transport와 분리돼 있어 단위 테스트가 쉽다.
Summary
Functions
서버 메시지(JSON) 하나를 처리한다. id 있는 요청이면 {:respond, response_json},
알림/응답/파싱 실패면 :ignore.
SSE 청크 스트림을 소비하며, 서버 요청마다 respond.(response_json)을 호출한다.
chunks는 SSE 바이트 청크의 Enumerable, respond는 응답 JSON 1-인자 콜백.
Functions
@spec handle_message(binary(), ElGraph.MCP.Client.Capabilities.handlers()) :: {:respond, binary()} | :ignore
서버 메시지(JSON) 하나를 처리한다. id 있는 요청이면 {:respond, response_json},
알림/응답/파싱 실패면 :ignore.
@spec run(Enumerable.t(), ElGraph.MCP.Client.Capabilities.handlers(), (binary() -> any())) :: :ok
SSE 청크 스트림을 소비하며, 서버 요청마다 respond.(response_json)을 호출한다.
chunks는 SSE 바이트 청크의 Enumerable, respond는 응답 JSON 1-인자 콜백.