Skip to content

Commit 91b6b31

Browse files
authored
fix(mcp): pass down mcp name to logger (#1078)
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 96af782 commit 91b6b31

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)