diff --git a/Sources/MCP/Base/Transports/HTTPClientTransport.swift b/Sources/MCP/Base/Transports/HTTPClientTransport.swift index 14a224f..5a68b61 100644 --- a/Sources/MCP/Base/Transports/HTTPClientTransport.swift +++ b/Sources/MCP/Base/Transports/HTTPClientTransport.swift @@ -148,14 +148,7 @@ public actor HTTPClientTransport: Actor, Transport { /// Receives data in an async sequence public func receive() -> AsyncThrowingStream { - return AsyncThrowingStream { continuation in - Task { - for try await message in messageStream { - continuation.yield(message) - } - continuation.finish() - } - } + return messageStream } // MARK: - SSE diff --git a/Sources/MCP/Base/Transports/NetworkTransport.swift b/Sources/MCP/Base/Transports/NetworkTransport.swift index 5a5dd87..7c435bb 100644 --- a/Sources/MCP/Base/Transports/NetworkTransport.swift +++ b/Sources/MCP/Base/Transports/NetworkTransport.swift @@ -159,18 +159,7 @@ import struct Foundation.Data } public func receive() -> AsyncThrowingStream { - return AsyncThrowingStream { continuation in - Task { - do { - for try await message in messageStream { - continuation.yield(message) - } - continuation.finish() - } catch { - continuation.finish(throwing: error) - } - } - } + return messageStream } private func receiveLoop() async { diff --git a/Sources/MCP/Base/Transports/StdioTransport.swift b/Sources/MCP/Base/Transports/StdioTransport.swift index 6b307e6..3808aad 100644 --- a/Sources/MCP/Base/Transports/StdioTransport.swift +++ b/Sources/MCP/Base/Transports/StdioTransport.swift @@ -29,8 +29,8 @@ import struct Foundation.Data public nonisolated let logger: Logger private var isConnected = false - private let messageStream: AsyncStream - private let messageContinuation: AsyncStream.Continuation + private let messageStream: AsyncThrowingStream + private let messageContinuation: AsyncThrowingStream.Continuation public init( input: FileDescriptor = FileDescriptor.standardInput, @@ -46,8 +46,8 @@ import struct Foundation.Data factory: { _ in SwiftLogNoOpLogHandler() }) // Create message stream - var continuation: AsyncStream.Continuation! - self.messageStream = AsyncStream { continuation = $0 } + var continuation: AsyncThrowingStream.Continuation! + self.messageStream = AsyncThrowingStream { continuation = $0 } self.messageContinuation = continuation } @@ -177,14 +177,7 @@ import struct Foundation.Data /// or batches containing multiple requests/notifications encoded as JSON arrays. /// Each message is guaranteed to be a complete JSON object or array. public func receive() -> AsyncThrowingStream { - return AsyncThrowingStream { continuation in - Task { - for await message in messageStream { - continuation.yield(message) - } - continuation.finish() - } - } + return messageStream } } #endif