Skip to content

Commit dde1538

Browse files
committed
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 <[email protected]>
1 parent d66dfa2 commit dde1538

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

internal/llm/agent/mcp-tools.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ func doGetMCPTools(ctx context.Context, permissions permission.Service, cfg *con
327327
}
328328

329329
func createAndInitializeClient(ctx context.Context, name string, m config.MCPConfig) (*client.Client, error) {
330-
c, err := createMcpClient(m)
330+
c, err := createMcpClient(name, m)
331331
if err != nil {
332332
updateMCPState(name, MCPStateError, err, nil, 0)
333333
slog.Error("error creating mcp client", "error", err, "name", name)
@@ -353,7 +353,7 @@ func createAndInitializeClient(ctx context.Context, name string, m config.MCPCon
353353
return c, nil
354354
}
355355

356-
func createMcpClient(m config.MCPConfig) (*client.Client, error) {
356+
func createMcpClient(name string, m config.MCPConfig) (*client.Client, error) {
357357
switch m.Type {
358358
case config.MCPStdio:
359359
if strings.TrimSpace(m.Command) == "" {
@@ -363,7 +363,7 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) {
363363
m.Command,
364364
m.ResolvedEnv(),
365365
m.Args,
366-
transport.WithCommandLogger(mcpLogger{}),
366+
transport.WithCommandLogger(mcpLogger{name: name}),
367367
)
368368
case config.MCPHttp:
369369
if strings.TrimSpace(m.URL) == "" {
@@ -372,7 +372,7 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) {
372372
return client.NewStreamableHttpClient(
373373
m.URL,
374374
transport.WithHTTPHeaders(m.ResolvedHeaders()),
375-
transport.WithHTTPLogger(mcpLogger{}),
375+
transport.WithHTTPLogger(mcpLogger{name: name}),
376376
)
377377
case config.MCPSse:
378378
if strings.TrimSpace(m.URL) == "" {
@@ -381,18 +381,23 @@ func createMcpClient(m config.MCPConfig) (*client.Client, error) {
381381
return client.NewSSEMCPClient(
382382
m.URL,
383383
client.WithHeaders(m.ResolvedHeaders()),
384-
transport.WithSSELogger(mcpLogger{}),
384+
transport.WithSSELogger(mcpLogger{name: name}),
385385
)
386386
default:
387387
return nil, fmt.Errorf("unsupported mcp type: %s", m.Type)
388388
}
389389
}
390390

391391
// for MCP's clients.
392-
type mcpLogger struct{}
392+
type mcpLogger struct{ name string }
393393

394-
func (l mcpLogger) Errorf(format string, v ...any) { slog.Error(fmt.Sprintf(format, v...)) }
395-
func (l mcpLogger) Infof(format string, v ...any) { slog.Info(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+
398+
func (l mcpLogger) Infof(format string, v ...any) {
399+
slog.Info(fmt.Sprintf(format, v...), "name", l.name)
400+
}
396401

397402
func mcpTimeout(m config.MCPConfig) time.Duration {
398403
return time.Duration(cmp.Or(m.Timeout, 15)) * time.Second

0 commit comments

Comments
 (0)