This is the documentation for v2 — looking for the v1 documentation?
Skip to content

MCP TypeScript SDK (V2) / @modelcontextprotocol/server / server/stdio

server/stdio ​

Classes ​

StdioServerTransport ​

Defined in: packages/server/src/server/stdio.ts:35

Server transport for stdio: this communicates with an MCP client by reading from the current process' stdin and writing to stdout.

This transport is only available in Node.js environments.

When the client closes its end of the pipe (stdin reaches end-of-file), the transport closes itself and fires onclose, per the MCP stdio binding's guidance that servers should exit promptly when their standard input is closed. A server that holds no other keep-alive handles will then exit naturally. Requests still in flight when stdin ends are aborted and not answered; a client that expects responses keeps stdin open until it has read them.

Example ​

ts
const server = new McpServer({ name: 'my-server', version: '1.0.0' });
const transport = new StdioServerTransport();
await server.connect(transport);

Implements ​

Constructors ​

Constructor ​

new StdioServerTransport(_stdin?, _stdout?, options?): StdioServerTransport

Defined in: packages/server/src/server/stdio.ts:40

Parameters ​
_stdin? ​

Readable = process.stdin

_stdout? ​

Writable = process.stdout

options? ​
maxBufferSize? ​

number

Maximum size of the read buffer in bytes. If a single message exceeds this size the transport will emit an error and close.

Defaults to 10 MB.

Returns ​

StdioServerTransport

Properties ​

onclose? ​

optional onclose?: () => void

Defined in: packages/server/src/server/stdio.ts:56

Callback for when the connection is closed for any reason.

This should be invoked when close() is called as well.

Returns ​

void

Implementation of ​

Transport.onclose

onerror? ​

optional onerror?: (error) => void

Defined in: packages/server/src/server/stdio.ts:57

Callback for when an error occurs.

Note that errors are not necessarily fatal; they are used for reporting any kind of exceptional condition out of band.

Parameters ​
error ​

Error

Returns ​

void

Implementation of ​

Transport.onerror

onmessage? ​

optional onmessage?: (message) => void

Defined in: packages/server/src/server/stdio.ts:58

Callback for when a message (request or response) is received over the connection.

Includes the request and authInfo if the transport is authenticated.

The request can be used to get the original request information (headers, etc.)

Parameters ​
message ​

JSONRPCMessage

Returns ​

void

Implementation of ​

Transport.onmessage

Methods ​

_ondata() ​

_ondata(chunk): void

Defined in: packages/server/src/server/stdio.ts:61

Parameters ​
chunk ​

Buffer

Returns ​

void

_onerror() ​

_onerror(error): void

Defined in: packages/server/src/server/stdio.ts:70

Parameters ​
error ​

Error

Returns ​

void

_onstdinclose() ​

_onstdinclose(): void

Defined in: packages/server/src/server/stdio.ts:89

Returns ​

void

_onstdouterror() ​

_onstdouterror(error): void

Defined in: packages/server/src/server/stdio.ts:73

Parameters ​
error ​

Error

Returns ​

void

close() ​

close(): Promise<void>

Defined in: packages/server/src/server/stdio.ts:154

Closes the connection.

Returns ​

Promise<void>

Implementation of ​

Transport.close

send() ​

send(message): Promise<void>

Defined in: packages/server/src/server/stdio.ts:186

Sends a JSON-RPC message (request or response).

If present, relatedRequestId is used to indicate to the transport which incoming request to associate this outgoing message with.

Parameters ​
message ​

JSONRPCMessage

Returns ​

Promise<void>

Implementation of ​

Transport.send

start() ​

start(): Promise<void>

Defined in: packages/server/src/server/stdio.ts:103

Starts listening for messages on stdin.

Returns ​

Promise<void>

Implementation of ​

Transport.start