b5ca19118e
Three fixes for concurrent MCP server spawn races in register_mcp_servers() and discover_mcp_tools(): 1. register_mcp_servers: add k not in _server_connecting guard to the new_servers filter. Without this, a concurrent second call sees the same servers as 'new' and spawns duplicate stdio subprocesses. 2. discover_mcp_tools: same _server_connecting guard in the new_server_names filter. This entry point is called from CLI, TUI, gateway, and cron — any two racing would double-spawn. 3. Stale _server_connecting cleanup on TimeoutError/InterruptedError. When _run_on_mcp_loop times out or is interrupted, _discover_all's gather may not have finished, leaving entries stranded in _server_connecting that block future reconnection attempts. The cleanup clears only entries added by this call (not external ones), logs a warning, and records connect errors. Salvage of #58879 by @nanami7777777 (superset of #58867 by @liuhao1024). Adapted to current main which has evolved significantly since July 5. Closes #58862 Closes #58867 Closes #58879