StdioClientTransport
class StdioClientTransport @JvmOverloads constructor(input: Source, output: Sink, error: Source? = null, sendChannel: Channel<JSONRPCMessage> = Channel(Channel.BUFFERED), classifyStderr: (String) -> StdioClientTransport.StderrSeverity = { DEBUG }) : AbstractTransport(source)
A transport implementation for JSON-RPC communication over standard I/O streams.
Reads JSON-RPC messages from input and writes messages to output. Optionally monitors error stream for stderr output with configurable severity handling.
Usage Example
val process = ProcessBuilder("mcp-server").start()
val transport = StdioClientTransport(
input = process.inputStream.asSource().buffered(),
output = process.outputStream.asSink().buffered(),
error = process.errorStream.asSource().buffered()
) { stderrLine ->
when {
stderrLine.contains("error", ignoreCase = true) -> StderrSeverity.FATAL
stderrLine.contains("warning", ignoreCase = true) -> StderrSeverity.WARNING
else -> StderrSeverity.INFO
}
}
transport.start()Content copied to clipboard
Parameters
input
The input stream where messages are received.
output
The output stream where messages are sent.
error
Optional error stream for stderr monitoring.
sendChannel
Channel for outbound messages. Default: buffered channel (implementation-default capacity).
classifyStderr
Callback to classify stderr lines. Return StderrSeverity.FATAL to fail transport, or StderrSeverity.WARNING / StderrSeverity.INFO / StderrSeverity.DEBUG to log, or StderrSeverity.IGNORE to discard. Default value: StderrSeverity.DEBUG.
See also
Constructors
Link copied to clipboard
constructor(input: Source, output: Sink, error: Source? = null, sendChannel: Channel<JSONRPCMessage> = Channel(Channel.BUFFERED), classifyStderr: (String) -> StdioClientTransport.StderrSeverity = { DEBUG })