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;
}
}