From 014c18e563b57574d5efc3ca50d2e93a07efae90 Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 26 Mar 2026 12:20:02 +0000 Subject: [PATCH] fix(mcp): set stdioMode in ServeStdio + use shared locked writer ServeStdio never set stdioMode=true, so ChannelSend always returned early. Also switched from StdioTransport to IOTransport with a shared lockedWriter that both the SDK and ChannelSend write through. This fixes channel notifications not arriving in Claude Code sessions. Co-Authored-By: Virgil --- pkg/mcp/transport_stdio.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/mcp/transport_stdio.go b/pkg/mcp/transport_stdio.go index 2cc39ca..bd32d58 100644 --- a/pkg/mcp/transport_stdio.go +++ b/pkg/mcp/transport_stdio.go @@ -2,6 +2,7 @@ package mcp import ( "context" + "os" "forge.lthn.ai/core/go-log" "github.com/modelcontextprotocol/go-sdk/mcp" @@ -15,5 +16,9 @@ import ( // } func (s *Service) ServeStdio(ctx context.Context) error { s.logger.Info("MCP Stdio server starting", "user", log.Username()) - return s.server.Run(ctx, &mcp.StdioTransport{}) + s.stdioMode = true + return s.server.Run(ctx, &mcp.IOTransport{ + Reader: os.Stdin, + Writer: sharedStdout, + }) }