diff --git a/src/mcpdotnet/Protocol/Transport/StdioServerTransport.cs b/src/mcpdotnet/Protocol/Transport/StdioServerTransport.cs
index ac91819..30ea5b6 100644
--- a/src/mcpdotnet/Protocol/Transport/StdioServerTransport.cs
+++ b/src/mcpdotnet/Protocol/Transport/StdioServerTransport.cs
@@ -169,9 +169,12 @@ public sealed class StdioServerTransport : TransportBase, IServerTransport
{
_logger.TransportCleaningUp(EndpointName);
- _shutdownCts?.Cancel();
- _shutdownCts?.Dispose();
- _shutdownCts = null;
+ if (_shutdownCts != null)
+ {
+ await _shutdownCts.CancelAsync().ConfigureAwait(false);
+ _shutdownCts.Dispose();
+ _shutdownCts = null;
+ }
if (_readTask != null)
{
diff --git a/tests/mcpdotnet.TestServer/Program.cs b/tests/mcpdotnet.TestServer/Program.cs
index 408cced..74cb874 100644
--- a/tests/mcpdotnet.TestServer/Program.cs
+++ b/tests/mcpdotnet.TestServer/Program.cs
@@ -5,6 +5,8 @@ using McpDotNet.Server;
using Microsoft.Extensions.Logging;
using Serilog;
+namespace McpDotNet.TestServer;
+
internal static class Program
{
private static ILoggerFactory CreateLoggerFactory()
@@ -336,7 +338,7 @@ internal static class Program
Log.Logger.Information("Server started.");
// Run until process is stopped by the client (parent process)
- while (true)
+ while (true) // NOSONAR
{
await Task.Delay(1000);
}
diff --git a/tests/mcpdotnet.TestServer/mcpdotnet.TestServer.csproj b/tests/mcpdotnet.TestServer/mcpdotnet.TestServer.csproj
index ef2c91a..9dc33a7 100644
--- a/tests/mcpdotnet.TestServer/mcpdotnet.TestServer.csproj
+++ b/tests/mcpdotnet.TestServer/mcpdotnet.TestServer.csproj
@@ -6,6 +6,7 @@
enable
enable
TestServer
+ McpDotNet.TestServer