using Microsoft.Extensions.DependencyInjection.Extensions; using ModelContextProtocol.AspNetCore; using ModelContextProtocol.Server; namespace Microsoft.Extensions.DependencyInjection; /// /// Provides methods for configuring HTTP MCP servers via dependency injection. /// public static class HttpMcpServerBuilderExtensions { /// /// Adds the services necessary for /// to handle MCP requests and sessions using the MCP Streamable HTTP transport. For more information on configuring the underlying HTTP server /// to control things like port binding custom TLS certificates, see the Minimal APIs quick reference. /// /// The builder instance. /// Configures options for the Streamable HTTP transport. This allows configuring per-session /// and running logic before and after a session. /// The builder provided in . /// is . public static IMcpServerBuilder WithHttpTransport(this IMcpServerBuilder builder, Action? configureOptions = null) { ArgumentNullException.ThrowIfNull(builder); builder.Services.TryAddSingleton(); builder.Services.TryAddSingleton(); builder.Services.AddHostedService(); builder.Services.AddDataProtection(); if (configureOptions is not null) { builder.Services.Configure(configureOptions); } return builder; } }