Make the optional MCP startup grace configurable (#41199)

## What changed

- Add `mcp_optional_startup_grace_ms` with a default of 1,000 ms to control how long tool catalog capture waits for optional MCP servers.
- Treat a value of `0` as disabling the shared grace, so optional servers use their configured `startup_timeout_sec` instead.
- Apply updated grace values during runtime and MCP configuration refreshes, and reset cached startup deadlines when the configured duration changes.

## Testing

- Cover custom, disabled, refreshed, and shared startup grace behavior in MCP connection and core integration tests.

GitOrigin-RevId: 936196215ed6e0a29c9ec72cfee17663978df8ef
This commit is contained in:
trolle-oai authored and copyberry committed 2026-08-27 20:31:40 +00:00
1 parent 035295b46e
commit 124e560b93
14 files changed
+495 -17

No files matched your search

+6
View File
@@ -287,6 +287,12 @@ pub struct ConfigToml {
/// to 127.0.0.1 (using `mcp_oauth_callback_port` when provided).
pub mcp_oauth_callback_url: Option<String>,
/// Milliseconds to wait for optional MCP servers while building the initial tool catalog.
///
/// Defaults to 1000. Set to 0 to disable the shared grace and wait for each
/// server's configured `startup_timeout_sec` instead.
pub mcp_optional_startup_grace_ms: Option<u64>,
/// User-defined provider entries that extend the built-in list. Built-in
/// IDs cannot be overridden.
#[serde(default, deserialize_with = "deserialize_model_providers")]