StdioTransport extends BaseTransport
Client transport that spawns a child process and communicates via stdio.
This transport handles all blocking operations:
- Spawning the server process
- Reading from stdout in a polling loop
- Writing to stdin
- Managing Fibers waiting for responses
Tags
Table of Contents
Properties
- $closeCallback : callable(string): void|null
- $errorCallback : callable(Throwable): void|null
- $initializeCallback : callable(): mixed|null
- $logger : LoggerInterface
- $messageCallback : callable(string): void|null
- $state : ClientStateInterface|null
- $activeFiber : McpFiber|null
- $activeProgressCallback : callable(float, Array, Array): void|null
- $args : array<string|int, mixed>
- $command : string
- $cwd : string|null
- $env : array<string|int, mixed>|null
- $inputBuffer : string
- $process : resource|null
- $stderr : resource|null
- $stdin : resource|null
- $stdout : resource|null
Methods
- __construct() : mixed
- close() : void
- Close the transport and clean up resources.
- connect() : void
- Connect to the MCP server and perform initialization handshake.
- onClose() : void
- Register callback for when connection closes.
- onError() : void
- Register callback for transport errors.
- onInitialize() : void
- Register callback for initialization handshake.
- onMessage() : void
- Register callback for incoming messages from server.
- runRequest() : Response<string|int, array<string, mixed>>|Error
- Run a request fiber to completion.
- send() : void
- Send a message to the server immediately.
- setState() : void
- Set the client state for runtime state management.
- handleClose() : void
- Handle connection close.
- handleError() : void
- Handle a transport error.
- handleInitialize() : mixed
- Perform initialization via the registered callback.
- handleMessage() : void
- Handle an incoming message from the server.
- processFiber() : void
- processInput() : void
- processProgress() : void
- Process pending progress updates from session and execute callback.
- processStderr() : void
- spawnProcess() : void
- tick() : void
Properties
$closeCallback
protected
callable(string): void|null
$closeCallback
$errorCallback
protected
callable(Throwable): void|null
$errorCallback
$initializeCallback
protected
callable(): mixed|null
$initializeCallback
$logger
protected
LoggerInterface
$logger
$messageCallback
protected
callable(string): void|null
$messageCallback
$state
protected
ClientStateInterface|null
$state
= null
$activeFiber
private
McpFiber|null
$activeFiber
= null
$activeProgressCallback
private
callable(float, Array, Array): void|null
$activeProgressCallback
$args read-only
private
array<string|int, mixed>
$args
= []
$command read-only
private
string
$command
$cwd read-only
private
string|null
$cwd
= null
$env read-only
private
array<string|int, mixed>|null
$env
= null
$inputBuffer
private
string
$inputBuffer
= ''
$process
private
resource|null
$process
$stderr
private
resource|null
$stderr
$stdin
private
resource|null
$stdin
$stdout
private
resource|null
$stdout
Methods
__construct()
public
__construct(string $command[, array<int, string> $args = [] ][, string|null $cwd = null ][, array<string, string>|null $env = null ][, LoggerInterface|null $logger = null ]) : mixed
Parameters
- $command : string
-
The command to run
- $args : array<int, string> = []
-
Command arguments
- $cwd : string|null = null
-
Working directory
- $env : array<string, string>|null = null
-
Environment variables
- $logger : LoggerInterface|null = null
close()
Close the transport and clean up resources.
public
close() : void
connect()
Connect to the MCP server and perform initialization handshake.
public
connect() : void
This method blocks until:
- Initialization completes successfully
- Connection fails (throws ConnectionException)
onClose()
Register callback for when connection closes.
public
onClose(callable $listener) : void
Parameters
- $listener : callable
onError()
Register callback for transport errors.
public
onError(callable $listener) : void
Parameters
- $listener : callable
onInitialize()
Register callback for initialization handshake.
public
onInitialize(callable $listener) : void
The callback should return a Fiber that performs the initialization.
Parameters
- $listener : callable
onMessage()
Register callback for incoming messages from server.
public
onMessage(callable $listener) : void
Parameters
- $listener : callable
runRequest()
Run a request fiber to completion.
public
runRequest(McpFiber $fiber[, callable(float $progress, Array $total, Array $message): void|null $onProgress = null ]) : Response<string|int, array<string, mixed>>|Error
Parameters
- $fiber : McpFiber
- $onProgress : callable(float $progress, Array $total, Array $message): void|null = null
Return values
Response<string|int, array<string, mixed>>|Error —The response or error
send()
Send a message to the server immediately.
public
send(string $data) : void
Parameters
- $data : string
-
JSON-encoded message
setState()
Set the client state for runtime state management.
public
setState(ClientStateInterface $state) : void
Parameters
- $state : ClientStateInterface
handleClose()
Handle connection close.
protected
handleClose(string $reason) : void
Parameters
- $reason : string
handleError()
Handle a transport error.
protected
handleError(Throwable $error) : void
Parameters
- $error : Throwable
handleInitialize()
Perform initialization via the registered callback.
protected
handleInitialize() : mixed
Tags
Return values
mixed —The result from the initialization callback
handleMessage()
Handle an incoming message from the server.
protected
handleMessage(string $message) : void
Parameters
- $message : string
processFiber()
private
processFiber() : void
processInput()
private
processInput() : void
processProgress()
Process pending progress updates from session and execute callback.
private
processProgress() : void
processStderr()
private
processStderr() : void
spawnProcess()
private
spawnProcess() : void
tick()
private
tick() : void