MCP Streamable HTTP 클라이언트 transport (ElGraph.MCP.Client 구현, SPEC §4).
외부 MCP 서버를 단일 엔드포인트로 호출한다 — JSON-RPC 2.0을 POST하고 JSON 응답을 받는다
(서버가 SSE로 응답하는 스트리밍 메서드는 현재 미지원, 요청/응답 메서드 중심).
{:ok, handle} = ElGraph.MCP.Client.StreamableHTTP.connect("https://host/mcp")
{:ok, tools} = ElGraph.MCP.tools({ElGraph.MCP.Client.StreamableHTTP, handle})핸들은 %{url, req_options, session_id, protocol_version}. connect/2가 initialize
핸드셰이크를 수행하고(서버가 주면 mcp-session-id 캡처) notifications/initialized를
보낸다. 이후 list_tools/1·call_tool/3은 같은 핸들로 요청한다.
:capabilities 옵션(ElGraph.MCP.Client.Capabilities의 핸들러 맵)을 주면 initialize에
클라이언트 능력(sampling/elicitation/roots)을 광고한다.
Summary
Functions
MCP 서버에 연결하고 initialize 핸드셰이크를 수행한다.
서버→클라이언트 SSE 스트림(GET)을 열어 서버 개시 요청(sampling/elicitation/roots)을
받고 응답을 POST로 되돌린다 (양방향). handlers는 ElGraph.MCP.Client.Capabilities 핸들러 맵.
스트림이 끝날 때까지 블록한다.
Types
Functions
MCP 서버에 연결하고 initialize 핸드셰이크를 수행한다.
@spec listen(handle(), ElGraph.MCP.Client.Capabilities.handlers(), keyword()) :: :ok | {:error, term()}
서버→클라이언트 SSE 스트림(GET)을 열어 서버 개시 요청(sampling/elicitation/roots)을
받고 응답을 POST로 되돌린다 (양방향). handlers는 ElGraph.MCP.Client.Capabilities 핸들러 맵.
스트림이 끝날 때까지 블록한다.