using ModelContextProtocol.Configuration; using ModelContextProtocol.Protocol.Transport; using ModelContextProtocol.Server; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace ModelContextProtocol; /// /// Extension to host the MCP server /// public static class McpServerServiceCollectionExtension { /// /// Adds the MCP server to the service collection with default options. /// /// /// /// public static IMcpServerBuilder AddMcpServer(this IServiceCollection services, Action? configureOptions = null) { services.AddSingleton(services => { IServerTransport serverTransport = services.GetRequiredService(); IOptions options = services.GetRequiredService>(); ILoggerFactory? loggerFactory = services.GetService(); return McpServerFactory.Create(serverTransport, options.Value, loggerFactory, services); }); services.AddOptions(); services.AddTransient, McpServerOptionsSetup>(); if (configureOptions is not null) { services.Configure(configureOptions); } return new DefaultMcpServerBuilder(services); } }