ruby-sdk/docs/installation.md
Koichi ITO 0da0291887 [Doc] Explain when the HTTP client needs event_stream_parser
## Motivation and Context

The Installation page names faraday as the example of an optional dependency but leaves out event_stream_parser,
which the HTTP client transport needs as soon as a server answers with SSE. The Transports page documents both gems,
so a reader who starts from Installation learns about the second one only when a streaming response fails to parse.

The Transports page also marks event_stream_parser as "optional, required only for SSE responses",
which reads as a corner case. Whether a response is JSON or SSE is the server's choice, made for each response,
a client must accept both, and this SDK's own server picks SSE by default and always on the modern lifecycle,
so a client written for arbitrary servers needs both gems. Both pages now say so, and the Transports page spells out
the one setup that can leave the gem out: a server known to answer with JSON alone, such as this SDK's server
in JSON response mode serving handshake-lifecycle clients, and no listening stream.

The Installation page shows the faraday-only Gemfile first and then the one that adds event_stream_parser,
so both cases are visible at a glance.

## How Has This Been Tested?

Documentation only; the Gemfile snippets on both pages match.

## Breaking Changes

None.
2026-09-06 03:22:32 +09:00

1.1 KiB

layout title nav_order permalink redirect_from
default Installation 2 /installation/
/installation.html

Installation

Install the gem and any optional dependencies for the features you use.

Requirements

Ruby 2.7.0 or later.

Installing the Gem

Add this line to your application's Gemfile:

gem "mcp"

And then execute:

$ bundle install

Or install it yourself as:

$ gem install mcp

You may need to add additional dependencies depending on which features you wish to access. For example, the HTTP client transport requires the faraday gem:

gem "faraday", ">= 2.0"

Reading SSE (text/event-stream) responses needs event_stream_parser as well. Whether a response is JSON or SSE is the server's choice, made for each response, and this SDK's own server picks SSE by default, so a client written for arbitrary servers needs both gems:

gem "faraday", ">= 2.0"
gem "event_stream_parser", ">= 1.0"

The Transports page describes the one setup where faraday alone is enough.