using ModelContextProtocol.Client; using ModelContextProtocol.Protocol.Transport; using Microsoft.Extensions.Logging; namespace ModelContextProtocol.Tests; public class ClientIntegrationTestFixture { private ILoggerFactory? _loggerFactory; public McpServerConfig EverythingServerConfig { get; } public McpServerConfig TestServerConfig { get; } public static IEnumerable ClientIds => ["everything", "test_server"]; public ClientIntegrationTestFixture() { EverythingServerConfig = new() { Id = "everything", Name = "Everything", TransportType = TransportTypes.StdIo, TransportOptions = new Dictionary { ["command"] = "npx", // Change to ["arguments"] = "mcp-server-everything" if you want to run the server locally after creating a symlink ["arguments"] = "-y --verbose @modelcontextprotocol/server-everything" } }; TestServerConfig = new() { Id = "test_server", Name = "TestServer", TransportType = TransportTypes.StdIo, TransportOptions = new Dictionary { ["command"] = OperatingSystem.IsWindows() ? "TestServer.exe" : "dotnet", // Change to ["arguments"] = "mcp-server-everything" if you want to run the server locally after creating a symlink } }; if (!OperatingSystem.IsWindows()) { TestServerConfig.TransportOptions["arguments"] = "TestServer.dll"; } } public void Initialize(ILoggerFactory loggerFactory) { _loggerFactory = loggerFactory; } public Task CreateClientAsync(string clientId, McpClientOptions? clientOptions = null) => McpClientFactory.CreateAsync(clientId switch { "everything" => EverythingServerConfig, "test_server" => TestServerConfig, _ => throw new ArgumentException($"Unknown client ID: {clientId}") }, clientOptions, loggerFactory: _loggerFactory); }