StdioClientTransport
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()Parameters
The input stream where messages are received.
The output stream where messages are sent.
Optional error stream for stderr monitoring.
Channel for outbound messages. Default: buffered channel (implementation-default capacity).
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.