ElGraph.MCP.Client.Receiver (ElGraph v0.3.0)

Copy Markdown View Source

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

handle_message(json, handlers)

@spec handle_message(binary(), ElGraph.MCP.Client.Capabilities.handlers()) ::
  {:respond, binary()} | :ignore

서버 메시지(JSON) 하나를 처리한다. id 있는 요청이면 {:respond, response_json}, 알림/응답/파싱 실패면 :ignore.

run(chunks, handlers, respond)

SSE 청크 스트림을 소비하며, 서버 요청마다 respond.(response_json)을 호출한다. chunks는 SSE 바이트 청크의 Enumerable, respond는 응답 JSON 1-인자 콜백.