diff --git a/pkg/agent/agent.go b/pkg/agent/agent.go index 3d9a6ccad..569ea0050 100644 --- a/pkg/agent/agent.go +++ b/pkg/agent/agent.go @@ -306,7 +306,11 @@ func WithResetToolChoice(reset bool) Option { func WithMCPServers(servers ...*MCPServer) Option { return func(a *Agent) { - a.mcpServers = append(a.mcpServers, servers...) + for _, s := range servers { + if s != nil { + a.mcpServers = append(a.mcpServers, s) + } + } } } diff --git a/pkg/agent/mcp_test.go b/pkg/agent/mcp_test.go index f270209b0..86df974c6 100644 --- a/pkg/agent/mcp_test.go +++ b/pkg/agent/mcp_test.go @@ -26,6 +26,19 @@ import ( "go.probo.inc/probo/pkg/llm" ) +func TestWithMCPServers_SkipsNilEntries(t *testing.T) { + t.Parallel() + + valid := NewMCPServer("valid", nil) + a := &Agent{} + + opt := WithMCPServers(nil, valid, nil) + opt(a) + + require.Len(t, a.mcpServers, 1) + assert.Equal(t, "valid", a.mcpServers[0].Name()) +} + func TestNewMCPServer(t *testing.T) { t.Parallel()