diff --git a/pkg/ingress/kube/configmap/mcp_server.go b/pkg/ingress/kube/configmap/mcp_server.go index fd173c046..66aa09279 100644 --- a/pkg/ingress/kube/configmap/mcp_server.go +++ b/pkg/ingress/kube/configmap/mcp_server.go @@ -509,6 +509,11 @@ func (m *McpServerController) constructMcpSessionStruct(mcp *McpServer) string { } func (m *McpServerController) constructMcpServerStruct(mcp *McpServer) string { + // if no servers, return empty string + if mcp == nil || len(mcp.Servers) == 0 { + return "" + } + // Build servers configuration servers := "[]" if len(mcp.Servers) > 0 { diff --git a/plugins/golang-filter/mcp-server/filter.go b/plugins/golang-filter/mcp-server/filter.go index 309019cb8..a23840f9b 100644 --- a/plugins/golang-filter/mcp-server/filter.go +++ b/plugins/golang-filter/mcp-server/filter.go @@ -57,12 +57,12 @@ func (f *filter) DecodeHeaders(header api.RequestHeaderMap, endStream bool) api. } func (f *filter) DecodeData(buffer api.BufferInstance, endStream bool) api.StatusType { - if !endStream { - return api.StopAndBuffer - } if f.message { for _, server := range f.config.servers { if f.path == server.BaseServer.GetMessageEndpoint() { + if !endStream { + return api.StopAndBuffer + } // Create a response recorder to capture the response recorder := httptest.NewRecorder() // Call the handleMessage method of SSEServer with complete body