Skip to content

Commit ee06e38

Browse files
atesgoralclaude
andcommitted
Make event_stream_parser an optional dependency like Faraday
event_stream_parser is only used in the client HTTP transport for parsing SSE responses. Since many SDK users only use the server functionality, make it an optional dependency that users include in their Gemfile when needed, consistent with how Faraday is handled. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 2d8def8 commit ee06e38

3 files changed

Lines changed: 10 additions & 1 deletion

File tree

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ gem "yard", "~> 0.9"
2323
gem "yard-sorbet", "~> 0.9" if RUBY_VERSION >= "3.1"
2424

2525
group :test do
26+
gem "event_stream_parser", ">= 1.0"
2627
gem "faraday", ">= 2.0"
2728
gem "minitest", "~> 5.1", require: false
2829
gem "mocha"

lib/mcp/client/http.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,14 @@ def require_faraday!
136136
"See https://rubygems.org/gems/faraday for more details."
137137
end
138138

139+
def require_event_stream_parser!
140+
require "event_stream_parser"
141+
rescue LoadError
142+
raise LoadError, "The 'event_stream_parser' gem is required to parse SSE responses. " \
143+
"Add it to your Gemfile: gem 'event_stream_parser', '>= 1.0'" \
144+
"See https://rubygems.org/gems/event_stream_parser for more details."
145+
end
146+
139147
def parse_response_body(response, method, params)
140148
content_type = response.headers["Content-Type"]
141149

@@ -156,6 +164,7 @@ def parse_response_body(response, method, params)
156164
end
157165

158166
def parse_sse_response(body, method, params)
167+
require_event_stream_parser!
159168
json_rpc_response = nil
160169
parser = EventStreamParser::Parser.new
161170
parser.feed(body.to_s) do |_type, data, _id|

mcp.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,5 @@ Gem::Specification.new do |spec|
3030
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
3131
spec.require_paths = ["lib"]
3232

33-
spec.add_dependency("event_stream_parser", ">= 1.0")
3433
spec.add_dependency("json-schema", ">= 4.1")
3534
end

0 commit comments

Comments
 (0)