Class: DatagroutConduit::Transport::Mcp
- Defined in:
- lib/datagrout_conduit/transport/mcp.rb
Overview
MCP Streamable HTTP transport. Sends JSON-RPC requests via HTTP POST to the MCP endpoint.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(url:, auth: {}, identity: nil) ⇒ Mcp
constructor
A new instance of Mcp.
- #send_request(method, params = nil, id: nil) ⇒ Object
Methods inherited from Base
#connect, #connected?, #disconnect
Constructor Details
#initialize(url:, auth: {}, identity: nil) ⇒ Mcp
Returns a new instance of Mcp.
8 9 10 11 |
# File 'lib/datagrout_conduit/transport/mcp.rb', line 8 def initialize(url:, auth: {}, identity: nil) super @session_id = nil end |
Instance Method Details
#send_request(method, params = nil, id: nil) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/datagrout_conduit/transport/mcp.rb', line 13 def send_request(method, params = nil, id: nil) ensure_connected! request_id = id || next_id body = build_jsonrpc_body(method, params, request_id) headers = build_headers response = @connection.post do |req| req.headers = headers req.body = JSON.generate(body) end track_session_id(response) result = handle_response(response) if result == :retry_oauth headers = build_headers response = @connection.post do |req| req.headers = headers req.body = JSON.generate(body) end track_session_id(response) result = handle_response(response) raise AuthError, "OAuth token rejected after refresh" if result == :retry_oauth end result end |