MCP TypeScript SDK (V2) / @modelcontextprotocol/server / server/perRequestTransport
server/perRequestTransport
Classes
PerRequestHTTPServerTransport
Defined in: packages/server/src/server/perRequestTransport.ts:117
The per-request micro-transport: a real, connected Transport whose whole lifetime is one HTTP exchange. See the module documentation for the response shapes it produces.
Implements
Constructors
Constructor
new PerRequestHTTPServerTransport(
options):PerRequestHTTPServerTransport
Defined in: packages/server/src/server/perRequestTransport.ts:144
Parameters
options
PerRequestHTTPServerTransportOptions
Returns
Properties
onclose?
optionalonclose?: () =>void
Defined in: packages/server/src/server/perRequestTransport.ts:118
Callback for when the connection is closed for any reason.
This should be invoked when close() is called as well.
Returns
void
Implementation of
onerror?
optionalonerror?: (error) =>void
Defined in: packages/server/src/server/perRequestTransport.ts:119
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
onmessage?
optionalonmessage?: <T>(message,extra?) =>void
Defined in: packages/server/src/server/perRequestTransport.ts:120
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.)
Type Parameters
T
T extends JSONRPCMessage
Parameters
message
T
extra?
Returns
void
Implementation of
Methods
close()
close():
Promise<void>
Defined in: packages/server/src/server/perRequestTransport.ts:337
Closes the connection.
Returns
Promise<void>
Implementation of
handleMessage()
handleMessage(
message,extra?):Promise<Response>
Defined in: packages/server/src/server/perRequestTransport.ts:166
Serves the single exchange: delivers the classified message to the connected server instance and resolves with the HTTP response.
Throws when called a second time (the transport is strictly single-use), or before a server has been connected to the transport. The returned promise rejects with a connection-closed error when the transport is closed before a response was produced (for example because the client disconnected).
Parameters
message
{ id: string | number; jsonrpc: "2.0"; method: string; params?: {[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; }; } | { jsonrpc: "2.0"; method: string; params?: {[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; }; }
extra?
Returns
Promise<Response>
send()
send(
message,options?):Promise<void>
Defined in: packages/server/src/server/perRequestTransport.ts:234
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
options?
Returns
Promise<void>
Implementation of
start()
start():
Promise<void>
Defined in: packages/server/src/server/perRequestTransport.ts:149
Starts processing messages on the transport, including any connection steps that might need to be taken.
This method should only be called after callbacks are installed, or else messages may be lost.
NOTE: This method should not be called explicitly when using Client or Server classes, as they will implicitly call start().
Returns
Promise<void>
Implementation of
writeCommentFrame()
writeCommentFrame(
comment):void
Defined in: packages/server/src/server/perRequestTransport.ts:326
Writes an SSE comment frame (a keep-alive heartbeat). Dropped when the exchange is not currently streaming.
Parameters
comment
string
Returns
void
Interfaces
PerRequestHTTPServerTransportOptions
Defined in: packages/server/src/server/perRequestTransport.ts:77
Constructor options for PerRequestHTTPServerTransport.
Properties
classification
classification:
MessageClassification
Defined in: packages/server/src/server/perRequestTransport.ts:79
The edge classification of the message this transport will serve.
responseMode?
optionalresponseMode?:PerRequestResponseMode
Defined in: packages/server/src/server/perRequestTransport.ts:81
Response shaping for the exchange; defaults to auto.
PerRequestMessageExtra
Defined in: packages/server/src/server/perRequestTransport.ts:85
Per-exchange context handed to PerRequestHTTPServerTransport.handleMessage.
Properties
authInfo?
optionalauthInfo?:AuthInfo
Defined in: packages/server/src/server/perRequestTransport.ts:96
Validated authentication information supplied by the caller. Strictly pass-through: the transport never populates this from request headers.
request?
optionalrequest?:Request
Defined in: packages/server/src/server/perRequestTransport.ts:91
The original HTTP request. Used for handler context and, when the runtime provides an abort signal on it, to cancel the exchange when the client disconnects.
Type Aliases
PerRequestResponseMode
PerRequestResponseMode =
"auto"|"sse"|"json"
Defined in: packages/server/src/server/perRequestTransport.ts:74
How the transport shapes its HTTP response for a request:
auto(default): answer with a single JSON body unless the handler emits a related message before its result, in which case the response upgrades to an SSE stream.sse: always answer handler output over an SSE stream. The stream opens once the request has passed the pre-dispatch validation gates, so ladder rejections keep their mapped HTTP status instead of being framed onto a 200 stream.json: never stream; related messages other than the terminal response are dropped.