on main help sign in
fix(mcp): pass down mcp name to logger (#1078)
91b6b31Carlos Alexandro Becker
internal/llm/agent/mcp-tools.go+13−8
@@ -327,7 +327,7 @@ func doGetMCPTools(ctx context.Context, permissions permission.Service, cfg *con
327}
327}
328
328
329func createAndInitializeClient(ctx context.Context, name string, m config.MCPConfig) (*client.Client, error) {
329func createAndInitializeClient(ctx context.Context, name string, m config.MCPConfig) (*client.Client, error) {
330− c, err := createMcpClient(m)
330+ c, err := createMcpClient(name, m)
331 if err != nil {
331 if err != nil {
332 updateMCPState(name, MCPStateError, err, nil, 0)
332 updateMCPState(name, MCPStateError, err, nil, 0)
333 slog.Error("error creating mcp client", "error", err, "name", name)
333 slog.Error("error creating mcp client", "error", err, "name", name)
@@ -353,7 +353,7 @@ func createAndInitializeClient(ctx context.Context, name string, m config.MCPCon
353 return c, nil
353 return c, nil
354}
354}
355
355
356−func createMcpClient(m config.MCPConfig) (*client.Client, error) {
356+func createMcpClient(name string, m config.MCPConfig) (*client.Client, error) {
357 switch m.Type {
357 switch m.Type {
358 case config.MCPStdio:
358 case config.MCPStdio:
359 if strings.TrimSpace(m.Command) == "" {
359 if strings.TrimSpace(m.Command) == "" {
@@ -363,7 +363,7 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) {
363 m.Command,
363 m.Command,
364 m.ResolvedEnv(),
364 m.ResolvedEnv(),
365 m.Args,
365 m.Args,
366− transport.WithCommandLogger(mcpLogger{}),
366+ transport.WithCommandLogger(mcpLogger{name: name}),
367 )
367 )
368 case config.MCPHttp:
368 case config.MCPHttp:
369 if strings.TrimSpace(m.URL) == "" {
369 if strings.TrimSpace(m.URL) == "" {
@@ -372,7 +372,7 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) {
372 return client.NewStreamableHttpClient(
372 return client.NewStreamableHttpClient(
373 m.URL,
373 m.URL,
374 transport.WithHTTPHeaders(m.ResolvedHeaders()),
374 transport.WithHTTPHeaders(m.ResolvedHeaders()),
375− transport.WithHTTPLogger(mcpLogger{}),
375+ transport.WithHTTPLogger(mcpLogger{name: name}),
376 )
376 )
377 case config.MCPSse:
377 case config.MCPSse:
378 if strings.TrimSpace(m.URL) == "" {
378 if strings.TrimSpace(m.URL) == "" {
@@ -381,7 +381,7 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) {
381 return client.NewSSEMCPClient(
381 return client.NewSSEMCPClient(
382 m.URL,
382 m.URL,
383 client.WithHeaders(m.ResolvedHeaders()),
383 client.WithHeaders(m.ResolvedHeaders()),
384− transport.WithSSELogger(mcpLogger{}),
384+ transport.WithSSELogger(mcpLogger{name: name}),
385 )
385 )
386 default:
386 default:
387 return nil, fmt.Errorf("unsupported mcp type: %s", m.Type)
387 return nil, fmt.Errorf("unsupported mcp type: %s", m.Type)
@@ -389,10 +389,15 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) {
389}
389}
390
390
391// for MCP's clients.
391// for MCP's clients.
392−type mcpLogger struct{}
392+type mcpLogger struct{ name string }
393
393
394−func (l mcpLogger) Errorf(format string, v ...any) { slog.Error(fmt.Sprintf(format, v...)) }
394+func (l mcpLogger) Errorf(format string, v ...any) {
395+ slog.Error(fmt.Sprintf(format, v...), "name", l.name)
396+}
397+
395−func (l mcpLogger) Infof(format string, v ...any) { slog.Info(fmt.Sprintf(format, v...)) }
398+func (l mcpLogger) Infof(format string, v ...any) {
399+ slog.Info(fmt.Sprintf(format, v...), "name", l.name)
400+}
396
401
397func mcpTimeout(m config.MCPConfig) time.Duration {
402func mcpTimeout(m config.MCPConfig) time.Duration {
398 return time.Duration(cmp.Or(m.Timeout, 15)) * time.Second
403 return time.Duration(cmp.Or(m.Timeout, 15)) * time.Second