From e187ebacc4d23d3569ce849467491791f8ca7d48 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Sun, 9 Mar 2025 06:03:13 -0400 Subject: [PATCH] Remove nop use of Console.OpenStandardInput (#49) --- .../Transport/StdioServerTransport.cs | 60 +++++++++---------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/src/mcpdotnet/Protocol/Transport/StdioServerTransport.cs b/src/mcpdotnet/Protocol/Transport/StdioServerTransport.cs index 30ea5b6..6832eb9 100644 --- a/src/mcpdotnet/Protocol/Transport/StdioServerTransport.cs +++ b/src/mcpdotnet/Protocol/Transport/StdioServerTransport.cs @@ -105,48 +105,46 @@ public sealed class StdioServerTransport : TransportBase, IServerTransport while (!cancellationToken.IsCancellationRequested) { _logger.TransportWaitingForMessage(EndpointName); - using (Console.OpenStandardInput()) + + var reader = Console.In; + var line = await reader.ReadLineAsync(cancellationToken).ConfigureAwait(false); + if (line == null) { - var reader = Console.In; - var line = await reader.ReadLineAsync(cancellationToken).ConfigureAwait(false); - if (line == null) - { - _logger.TransportEndOfStream(EndpointName); - break; - } + _logger.TransportEndOfStream(EndpointName); + break; + } - if (string.IsNullOrWhiteSpace(line)) - { - continue; - } + if (string.IsNullOrWhiteSpace(line)) + { + continue; + } - _logger.TransportReceivedMessage(EndpointName, line); + _logger.TransportReceivedMessage(EndpointName, line); - try + try + { + var message = JsonSerializer.Deserialize(line, _jsonOptions); + if (message != null) { - var message = JsonSerializer.Deserialize(line, _jsonOptions); - if (message != null) + string messageId = "(no id)"; + if (message is IJsonRpcMessageWithId messageWithId) { - string messageId = "(no id)"; - if (message is IJsonRpcMessageWithId messageWithId) - { - messageId = messageWithId.Id.ToString(); - } - _logger.TransportReceivedMessageParsed(EndpointName, messageId); - await WriteMessageAsync(message, cancellationToken).ConfigureAwait(false); - _logger.TransportMessageWritten(EndpointName, messageId); - } - else - { - _logger.TransportMessageParseUnexpectedType(EndpointName, line); + messageId = messageWithId.Id.ToString(); } + _logger.TransportReceivedMessageParsed(EndpointName, messageId); + await WriteMessageAsync(message, cancellationToken).ConfigureAwait(false); + _logger.TransportMessageWritten(EndpointName, messageId); } - catch (JsonException ex) + else { - _logger.TransportMessageParseFailed(EndpointName, line, ex); - // Continue reading even if we fail to parse a message + _logger.TransportMessageParseUnexpectedType(EndpointName, line); } } + catch (JsonException ex) + { + _logger.TransportMessageParseFailed(EndpointName, line, ex); + // Continue reading even if we fail to parse a message + } } _logger.TransportExitingReadMessagesLoop(EndpointName); }