From 5ad86ac467f150da74f9196b1e4a5c533d7df613 Mon Sep 17 00:00:00 2001
From: dtapps
Date: Sat, 28 Mar 2026 12:57:09 +0800
Subject: [PATCH] feat(mcp): support DisableStandaloneSSE for HTTP transport
---
pkg/mcp/manager.go | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/pkg/mcp/manager.go b/pkg/mcp/manager.go
index 7b63cc979..323df0312 100644
--- a/pkg/mcp/manager.go
+++ b/pkg/mcp/manager.go
@@ -276,14 +276,25 @@ func (m *Manager) ConnectServer(
if cfg.URL == "" {
return fmt.Errorf("URL is required for SSE/HTTP transport")
}
+
+ // Configure DisableStandaloneSSE based on transport type.
+ // - "http": Request-response only mode. Disable the standalone SSE stream
+ // to avoid compatibility issues with servers that don't support GET /mcp.
+ // - "sse": Bidirectional mode. Enable the standalone SSE stream to receive
+ // server-initiated notifications (e.g., ToolListChangedNotification).
+ // - Empty or auto-detected: Defaults to "sse" behavior (standalone SSE enabled).
+ disableStandaloneSSE := (cfg.Type == "http")
+
logger.DebugCF("mcp", "Using SSE/HTTP transport",
map[string]any{
- "server": name,
- "url": cfg.URL,
+ "server": name,
+ "url": cfg.URL,
+ "disableStandaloneSSE": disableStandaloneSSE,
})
sseTransport := &mcp.StreamableClientTransport{
- Endpoint: cfg.URL,
+ Endpoint: cfg.URL,
+ DisableStandaloneSSE: disableStandaloneSSE,
}
// Add custom headers if provided