Skip to content

MCP tool calls time out at 30s while provider init is allowed 60s+ — successful handoffs report failure #710

Description

@call-me-ram

Summary

Every MCP-server HTTP call to the CAO API uses MCP_REQUEST_TIMEOUT = 30 (constants.py:370, consumed at mcp_server/utils.py:53), but the handoff/assign endpoints internally wait up to server.provider_init_timeout — default 60 (config_service.py:59) — for the worker's provider to initialize. Any provider that takes between 30s and its init budget to come up (perfectly successful init) has the MCP-side request abort first: the supervisor's tool call fails with a timeout while the server goes on creating the worker, so the caller retries against a worker that already exists, or gives up on a handoff that actually succeeded.

The mismatch is strictly worse for the slower providers — several ship init budgets in the hundreds of seconds (antigravity, kimi, kiro) while the transport above them still gives up at 30.

Credit

Diagnosed by @reyph in #463 ("Bug 1"). That PR went quiet before the review round completed, so the finding is being re-filed standalone so it isn't lost with the PR. Verified still live on main at 231de7a4.

Fix shape

The one-line version is raising MCP_REQUEST_TIMEOUT above the worst-case init budget, but a value pulled from settings would be better: the per-call timeout for session-creating tools should be derived from (and strictly greater than) server.provider_init_timeout rather than a second hard-coded constant that can drift. Non-session-creating calls (status reads, message sends) are fine at 30.

Related: #453 explored the durable-result direction for the transport-timeout family; #566 (merged) fixed the sibling client-side drop at launch.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions