@@ -109,14 +109,26 @@ 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+ var wg sync.WaitGroup
112113 for name, session := range sessions.Seq2() {
113− if err := session.Close(); err != nil &&
114− !errors.Is(err, io.EOF) &&
115− !errors.Is(err, context.Canceled) &&
116− err.Error() != "signal: killed" {
117− errs = append(errs, fmt.Errorf("close mcp: %s: %w", name, err))
118− }
114+ wg.Go(func() {
115+ done := make(chan bool, 1)
116+ go func() {
117+ if err := session.Close(); err != nil &&
118+ !errors.Is(err, io.EOF) &&
119+ !errors.Is(err, context.Canceled) &&
120+ err.Error() != "signal: killed" {
121+ errs = append(errs, fmt.Errorf("close mcp: %s: %w", name, err))
122+ }
123+ done <- true
124+ }()
125+ select {
126+ case <-done:
127+ case <-time.After(time.Millisecond * 250):
128+ }
129+ })
119130 }
131+ wg.Wait()
120132 broker.Shutdown()
121133 return errors.Join(errs...)
122134}
@@ -279,9 +291,8 @@ func createSession(ctx context.Context, name string, m config.MCPConfig, resolve
279291 })
280292 },
281293 LoggingMessageHandler: func(_ context.Context, req *mcp.LoggingMessageRequest) {
282− slog.Info("mcp log", "name", name, "data", req.Params.Data)
294+ slog.Info("MCP log", "name", name, "data", req.Params.Data)
283295 },
284− KeepAlive: time.Minute * 10,
285296 },
286297 )
287298
@@ -289,14 +300,14 @@ func createSession(ctx context.Context, name string, m config.MCPConfig, resolve
289300 if err != nil {
290301 err = maybeStdioErr(err, transport)
291302 updateState(name, StateError, maybeTimeoutErr(err, timeout), nil, Counts{})
292− slog.Error("error starting mcp client", "error", err, "name", name)
303+ slog.Error("MCP client failed to initialize", "error", err, "name", name)
293304 cancel()
294305 cancelTimer.Stop()
295306 return nil, err
296307 }
297308
298309 cancelTimer.Stop()
299− slog.Info("Initialized mcp client", "name", name)
310+ slog.Info("MCP client initialized", "name", name)
300311 return session, nil
301312}
302313