From 6268f1e23a976041578fe3499f2271465232dc61 Mon Sep 17 00:00:00 2001 From: Yash Khare Date: Sat, 23 Aug 2025 11:15:37 +0530 Subject: [PATCH] fix: panic at mcp config (#860) * fix: panic at mcp config Signed-off-by: Yash Khare * better logging Signed-off-by: Yash Khare --------- Signed-off-by: Yash Khare --- internal/llm/agent/mcp-tools.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/internal/llm/agent/mcp-tools.go b/internal/llm/agent/mcp-tools.go index 0e68ff06acb5fba4b4e7f4becb6e6f2d315d0fba..0f6d2d0ab31ec34df16c9837335425e1f3b195bb 100644 --- a/internal/llm/agent/mcp-tools.go +++ b/internal/llm/agent/mcp-tools.go @@ -351,6 +351,9 @@ func createAndInitializeClient(ctx context.Context, name string, m config.MCPCon func createMcpClient(m config.MCPConfig) (*client.Client, error) { switch m.Type { case config.MCPStdio: + if strings.TrimSpace(m.Command) == "" { + return nil, fmt.Errorf("mcp stdio config requires a non-empty 'command' field") + } return client.NewStdioMCPClientWithOptions( m.Command, m.ResolvedEnv(), @@ -358,12 +361,18 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) { transport.WithCommandLogger(mcpLogger{}), ) case config.MCPHttp: + if strings.TrimSpace(m.URL) == "" { + return nil, fmt.Errorf("mcp http config requires a non-empty 'url' field") + } return client.NewStreamableHttpClient( m.URL, transport.WithHTTPHeaders(m.ResolvedHeaders()), transport.WithHTTPLogger(mcpLogger{}), ) case config.MCPSse: + if strings.TrimSpace(m.URL) == "" { + return nil, fmt.Errorf("mcp sse config requires a non-empty 'url' field") + } return client.NewSSEMCPClient( m.URL, client.WithHeaders(m.ResolvedHeaders()),