Class: RCrewAI::MCP::Transport::Http
- Inherits:
-
Object
- Object
- RCrewAI::MCP::Transport::Http
- Defined in:
- lib/rcrewai/mcp/transport/http.rb
Overview
Streamable HTTP transport for MCP: server pushes JSON-RPC responses via a long-lived SSE stream (GET); client sends requests via POST.
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(url:, headers: {}) ⇒ Http
constructor
A new instance of Http.
- #open ⇒ Object
- #recv_line ⇒ Object
- #send_line(json) ⇒ Object
Constructor Details
#initialize(url:, headers: {}) ⇒ Http
Returns a new instance of Http.
12 13 14 15 16 17 |
# File 'lib/rcrewai/mcp/transport/http.rb', line 12 def initialize(url:, headers: {}) @url = url @headers = headers @queue = Queue.new @sse_thread = nil end |
Instance Method Details
#close ⇒ Object
35 36 37 |
# File 'lib/rcrewai/mcp/transport/http.rb', line 35 def close @sse_thread&.kill end |
#open ⇒ Object
19 20 21 22 |
# File 'lib/rcrewai/mcp/transport/http.rb', line 19 def open @http = Faraday.new(url: @url) { |f| f.adapter Faraday.default_adapter } @sse_thread = Thread.new { start_sse_stream } end |
#recv_line ⇒ Object
31 32 33 |
# File 'lib/rcrewai/mcp/transport/http.rb', line 31 def recv_line @queue.pop end |
#send_line(json) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/rcrewai/mcp/transport/http.rb', line 24 def send_line(json) @http.post('') do |req| req.headers.merge!(@headers).merge!('Content-Type' => 'application/json') req.body = json end end |