on main help sign in
fix(mcp): client being killed (#1419)
commit5a7c715414e0b77e68bf5ce5ae5bf4dbc4afc241 authorCarlos Alexandro Becker <caarlos0@users.noreply.github.com> dateTue 11 Nov 2025, 19:07 (1 year ago) parentc9ca0b7
2 files changed+5−7
internal/agent/coordinator.go+2−1 internal/agent/tools/mcp/init.go+3−6
internal/agent/coordinator.go+2−1
@@ -362,7 +362,7 @@ func (c *coordinator) buildTools(ctx context.Context, agent config.Agent) ([]fan
362362 }
363363 if len(agent.AllowedMCP) == 0 {
364364 // No MCPs allowed
365− slog.Warn("MCPs not allowed")
365+ slog.Debug("no MCPs allowed", "tool", tool.Name(), "agent", agent.Name)
366366 break
367367 }
368368
@@ -374,6 +374,7 @@ func (c *coordinator) buildTools(ctx context.Context, agent config.Agent) ([]fan
374374 filteredTools = append(filteredTools, tool)
375375 }
376376 }
377+ slog.Debug("MCP not allowed", "tool", tool.Name(), "agent", agent.Name)
377378 }
378379 slices.SortFunc(filteredTools, func(a, b fantasy.AgentTool) int {
379380 return strings.Compare(a.Info().Name, b.Info().Name)
internal/agent/tools/mcp/init.go+3−6
@@ -109,8 +109,8 @@ func GetState(name string) (ClientInfo, bool) {
109109// Close closes all MCP clients. This should be called during application shutdown.
110110func Close() error {
111111 var errs []error
112− for name, c := range sessions.Seq2() {
113− if err := c.Close(); err != nil &&
112+ for name, session := range sessions.Seq2() {
113+ if err := session.Close(); err != nil &&
114114 !errors.Is(err, io.EOF) &&
115115 !errors.Is(err, context.Canceled) &&
116116 err.Error() != "signal: killed" {
@@ -154,9 +154,7 @@ func Initialize(ctx context.Context, permissions permission.Service, cfg *config
154154 }
155155 }()
156156
157− ctx, cancel := context.WithTimeout(ctx, mcpTimeout(m))
158− defer cancel()
159−
157+ // createSession handles its own timeout internally.
160158 session, err := createSession(ctx, name, m, cfg.Resolver())
161159 if err != nil {
162160 return
@@ -233,7 +231,6 @@ func updateState(name string, state State, err error, client *mcp.ClientSession,
233231 case StateConnected:
234232 info.ConnectedAt = time.Now()
235233 case StateError:
236− updateTools(name, nil)
237234 sessions.Del(name)
238235 }
239236 states.Set(name, info)