## Motivation and Context The `MCP::Client` currently only supports HTTP transport (`MCP::Client::HTTP`). To achieve parity with other MCP SDKs (Python, TypeScript, C#) which provide stdio client transports for spawning and communicating with server subprocesses, the Ruby SDK needs a stdio client transport. https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#stdio This enables building MCP clients that launch server processes and communicate via stdin/stdout using newline-delimited JSON-RPC 2.0 messages. ## How Has This Been Tested? Added tests for process spawning, protocol initialization handshake, notification handling, error handling, and transport close lifecycle. ## Additional context Enabled the `Lint/IncompatibleIoSelectWithFiberScheduler` cop in `.rubocop.yml` to detect accidental use of `IO.select` instead of `IO#wait_readable`.
18 lines
290 B
YAML
18 lines
290 B
YAML
inherit_gem:
|
|
rubocop-shopify: rubocop.yml
|
|
|
|
plugins:
|
|
- rubocop-minitest
|
|
- rubocop-rake
|
|
|
|
AllCops:
|
|
TargetRubyVersion: 2.7
|
|
|
|
Gemspec/DevelopmentDependencies:
|
|
Enabled: true
|
|
|
|
Lint/IncompatibleIoSelectWithFiberScheduler:
|
|
Enabled: true
|
|
|
|
Minitest/LiteralAsActualArgument:
|
|
Enabled: true
|