From dde1538b31113caead95c98a167d796087df2f44 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Thu, 18 Sep 2025 17:41:52 -0300 Subject: [PATCH] fix(mcp): pass down mcp name to logger This will make the logs more useful. Right now it would simply print the MCP's library logs without any additional context, so you wouldn't know which MCP is causing issues. Signed-off-by: Carlos Alexandro Becker --- internal/llm/agent/mcp-tools.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/internal/llm/agent/mcp-tools.go b/internal/llm/agent/mcp-tools.go index bb50231da..90011c43a 100644 --- a/internal/llm/agent/mcp-tools.go +++ b/internal/llm/agent/mcp-tools.go @@ -327,7 +327,7 @@ func doGetMCPTools(ctx context.Context, permissions permission.Service, cfg *con } func createAndInitializeClient(ctx context.Context, name string, m config.MCPConfig) (*client.Client, error) { - c, err := createMcpClient(m) + c, err := createMcpClient(name, m) if err != nil { updateMCPState(name, MCPStateError, err, nil, 0) slog.Error("error creating mcp client", "error", err, "name", name) @@ -353,7 +353,7 @@ func createAndInitializeClient(ctx context.Context, name string, m config.MCPCon return c, nil } -func createMcpClient(m config.MCPConfig) (*client.Client, error) { +func createMcpClient(name string, m config.MCPConfig) (*client.Client, error) { switch m.Type { case config.MCPStdio: if strings.TrimSpace(m.Command) == "" { @@ -363,7 +363,7 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) { m.Command, m.ResolvedEnv(), m.Args, - transport.WithCommandLogger(mcpLogger{}), + transport.WithCommandLogger(mcpLogger{name: name}), ) case config.MCPHttp: if strings.TrimSpace(m.URL) == "" { @@ -372,7 +372,7 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) { return client.NewStreamableHttpClient( m.URL, transport.WithHTTPHeaders(m.ResolvedHeaders()), - transport.WithHTTPLogger(mcpLogger{}), + transport.WithHTTPLogger(mcpLogger{name: name}), ) case config.MCPSse: if strings.TrimSpace(m.URL) == "" { @@ -381,7 +381,7 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) { return client.NewSSEMCPClient( m.URL, client.WithHeaders(m.ResolvedHeaders()), - transport.WithSSELogger(mcpLogger{}), + transport.WithSSELogger(mcpLogger{name: name}), ) default: return nil, fmt.Errorf("unsupported mcp type: %s", m.Type) @@ -389,10 +389,15 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) { } // for MCP's clients. -type mcpLogger struct{} +type mcpLogger struct{ name string } -func (l mcpLogger) Errorf(format string, v ...any) { slog.Error(fmt.Sprintf(format, v...)) } -func (l mcpLogger) Infof(format string, v ...any) { slog.Info(fmt.Sprintf(format, v...)) } +func (l mcpLogger) Errorf(format string, v ...any) { + slog.Error(fmt.Sprintf(format, v...), "name", l.name) +} + +func (l mcpLogger) Infof(format string, v ...any) { + slog.Info(fmt.Sprintf(format, v...), "name", l.name) +} func mcpTimeout(m config.MCPConfig) time.Duration { return time.Duration(cmp.Or(m.Timeout, 15)) * time.Second