MCPcopy Create free account
hub / github.com/coder/coder / connectAll

Method connectAll

agent/x/agentmcp/manager.go:622–655  ·  view source on GitHub ↗

connectAll runs connectServer in parallel for the given configs. Failed connects are logged and skipped.

(ctx context.Context, toConnect []ServerConfig)

Source from the content-addressed store, hash-verified

620// connectAll runs connectServer in parallel for the given configs.
621// Failed connects are logged and skipped.
622func (m *Manager) connectAll(ctx context.Context, toConnect []ServerConfig) []connectedServer {
623 logger := m.logger.With(agentchat.Fields(ctx)...)
624
625 if hook := m.connectStartedHook; hook != nil {
626 hook()
627 }
628
629 var (
630 mu sync.Mutex
631 connected []connectedServer
632 )
633 var eg errgroup.Group
634 for _, cfg := range toConnect {
635 eg.Go(func() error {
636 c, err := m.connectServer(ctx, cfg)
637 if err != nil {
638 logger.Warn(ctx, "skipping MCP server",
639 slog.F("server", cfg.Name),
640 slog.F("transport", cfg.Transport),
641 slog.Error(err),
642 )
643 return nil // Don't fail the group.
644 }
645 mu.Lock()
646 connected = append(connected, connectedServer{
647 name: cfg.Name, config: cfg, client: c,
648 })
649 mu.Unlock()
650 return nil
651 })
652 }
653 _ = eg.Wait()
654 return connected
655}
656
657// installServers builds the new server map from diff.keep and the
658// connected list, falling back to diff.prev when a connect failed.

Callers 1

doReloadMethod · 0.95

Calls 7

connectServerMethod · 0.95
FieldsFunction · 0.92
GoMethod · 0.80
WaitMethod · 0.65
ErrorMethod · 0.45
LockMethod · 0.45
UnlockMethod · 0.45

Tested by

no test coverage detected