fix: panic at mcp config (#860)

Yash Khare created

* fix: panic at mcp config

Signed-off-by: Yash Khare <khareyash05@gmail.com>

* better logging

Signed-off-by: Yash Khare <khareyash05@gmail.com>

---------

Signed-off-by: Yash Khare <khareyash05@gmail.com>

Change summary

internal/llm/agent/mcp-tools.go | 9 +++++++++
1 file changed, 9 insertions(+)

Detailed changes

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()),