@@ -351,6 +351,9 @@ func createAndInitializeClient(ctx context.Context, name string, m config.MCPCon
351351func createMcpClient(m config.MCPConfig) (*client.Client, error) {
352352 switch m.Type {
353353 case config.MCPStdio:
354+ if strings.TrimSpace(m.Command) == "" {
355+ return nil, fmt.Errorf("mcp stdio config requires a non-empty 'command' field")
356+ }
354357 return client.NewStdioMCPClientWithOptions(
355358 m.Command,
356359 m.ResolvedEnv(),
@@ -358,12 +361,18 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) {
358361 transport.WithCommandLogger(mcpLogger{}),
359362 )
360363 case config.MCPHttp:
364+ if strings.TrimSpace(m.URL) == "" {
365+ return nil, fmt.Errorf("mcp http config requires a non-empty 'url' field")
366+ }
361367 return client.NewStreamableHttpClient(
362368 m.URL,
363369 transport.WithHTTPHeaders(m.ResolvedHeaders()),
364370 transport.WithHTTPLogger(mcpLogger{}),
365371 )
366372 case config.MCPSse:
373+ if strings.TrimSpace(m.URL) == "" {
374+ return nil, fmt.Errorf("mcp sse config requires a non-empty 'url' field")
375+ }
367376 return client.NewSSEMCPClient(
368377 m.URL,
369378 client.WithHeaders(m.ResolvedHeaders()),