#15070·langflow

MCP stdio session readiness timeout still hardcoded at 30s with no settings override (configurability gap not addressed by #14161/#14214)

Author: mjobrien05Created Sep 14, 2026Updated Sep 14, 2026

Bug Description

MCPSessionManager._create_stdio_session (src/lfx/src/lfx/base/mcp/util.py) guards session readiness with a hardcoded 30-second asyncio.wait_for, with no settings override anywhere. This sits right next to mcp_server_timeout (src/lfx/src/lfx/services/settings/groups/mcp.py, default 20s), which is a configurable setting covering the overall tool-list call on the same path.

#14161 / #14214 already fixed the resource-leak consequence of these two timeouts disagreeing (the outer 20s firing before the inner 30s could leak the spawned subprocess) — but that fix was explicit about scope, per the PR description: "It intentionally preserves the existing timeout budgets, avoiding a shorter cold-start window for MCP servers." The underlying configurability gap itself is still open: there is still no way to raise the STDIO session's own readiness budget past 30s, and no way to make it consistent with a custom mcp_server_timeout value in either direction.

Concretely, this still leaves a real failure mode for anyone with a slow-starting local MCP server (e.g. one with a heavier npx/node cold start): raising LANGFLOW_MCP_SERVER_TIMEOUT above 30s does not help, because the inner session-readiness wait still caps at the hardcoded value regardless of what the outer setting is configured to.

Reproduction

  1. Configure an MCP server (stdio transport) with a cold-start time longer than 30s but shorter than a raised LANGFLOW_MCP_SERVER_TIMEOUT.
  2. Set LANGFLOW_MCP_SERVER_TIMEOUT=60.
  3. Attempt to connect.

Expected: the connection succeeds within the configured 60s budget. Actual: Timeout waiting for STDIO session ... to initialize at ~30s, regardless of the higher configured value.

Expected behavior

Expose the STDIO (and Streamable HTTP, which has the same hardcoded-30s pattern in _create_streamable_http_session) session-readiness timeout as a setting, ideally defaulting to (or derived from) mcp_server_timeout so the two stay consistent without requiring two separate values to be tuned in lockstep.

Who can help?

No response — related to the area fixed in #14161/#14214, tagging for visibility in case the same reviewers want it.