Table of Contents

Class HttpServerTransportOptions

Namespace
ModelContextProtocol.AspNetCore
Assembly
ModelContextProtocol.AspNetCore.dll

Configuration options for McpEndpointRouteBuilderExtensions.MapMcp. which implements the Streaming HTTP transport for the Model Context Protocol. See the protocol specification for details on the Streamable HTTP transport. https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#streamable-http

public class HttpServerTransportOptions
Inheritance
HttpServerTransportOptions
Inherited Members

Properties

ConfigureSessionOptions

Gets or sets an optional asynchronous callback to configure per-session McpServerOptions with access to the HttpContext of the request that initiated the session.

public Func<HttpContext, McpServerOptions, CancellationToken, Task>? ConfigureSessionOptions { get; set; }

Property Value

Func<HttpContext, McpServerOptions, CancellationToken, Task>

IdleTimeout

Gets or sets the duration of time the server will wait between any active requests before timing out an MCP session.

public TimeSpan IdleTimeout { get; set; }

Property Value

TimeSpan

Remarks

This is checked in background every 5 seconds. A client trying to resume a session will receive a 404 status code and should restart their session. A client can keep their session open by keeping a GET request open. Defaults to 2 hours.

MaxIdleSessionCount

Gets or sets maximum number of idle sessions to track in memory. This is used to limit the number of sessions that can be idle at once.

public int MaxIdleSessionCount { get; set; }

Property Value

int

Remarks

Past this limit, the server will log a critical error and terminate the oldest idle sessions even if they have not reached their IdleTimeout until the idle session count is below this limit. Clients that keep their session open by keeping a GET request open will not count towards this limit. Defaults to 10,000 sessions.

PerSessionExecutionContext

Gets or sets whether the server should use a single execution context for the entire session. If false, handlers like tools get called with the ExecutionContext belonging to the corresponding HTTP request which can change throughout the MCP session. If true, handlers will get called with the same ExecutionContext used to call ConfigureSessionOptions and RunSessionHandler.

public bool PerSessionExecutionContext { get; set; }

Property Value

bool

Remarks

Enabling a per-session ExecutionContext can be useful for setting AsyncLocal<T> variables that persist for the entire session, but it prevents you from using IHttpContextAccessor in handlers. Defaults to false.

RunSessionHandler

Gets or sets an optional asynchronous callback for running new MCP sessions manually. This is useful for running logic before a sessions starts and after it completes.

public Func<HttpContext, IMcpServer, CancellationToken, Task>? RunSessionHandler { get; set; }

Property Value

Func<HttpContext, IMcpServer, CancellationToken, Task>

Stateless

Gets or sets whether the server should run in a stateless mode that does not require all requests for a given session to arrive to the same ASP.NET Core application process.

public bool Stateless { get; set; }

Property Value

bool

Remarks

If true, the "/sse" endpoint will be disabled, and client information will be round-tripped as part of the "MCP-Session-Id" header instead of stored in memory. Unsolicited server-to-client messages and all server-to-client requests are also unsupported, because any responses may arrive at another ASP.NET Core application process. Client sampling and roots capabilities are also disabled in stateless mode, because the server cannot make requests. Defaults to false.

TimeProvider

Used for testing the IdleTimeout.

public TimeProvider TimeProvider { get; set; }

Property Value

TimeProvider