{"version":"2.1.221","anchor":"mcp-servers-can-start-from-a-discovery-cache-and-connect-laz","canonical_anchor":"mcp-servers-can-start-from-a-discovery-cache-and-connect-laz","heading":"MCP servers can start from a discovery cache and connect lazily","tier":"notice","area":"MCP","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221\/e\/mcp-servers-can-start-from-a-discovery-cache-and-connect-laz","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221","markdown":"### MCP servers can start from a discovery cache and connect lazily\n\nStartup no longer dials cached HTTP or SSE MCP servers; they restore from cache and connect on first use.\n\n**What**\n\nAn http or sse MCP server with a saved discovery entry is no longer dialed at startup. Its tools, commands, prompts, resources, templates, instructions and serverInfo are restored from the cache and the real connection is deferred until something actually uses the server.\n\n**Details**\n\n- A new client lifecycle state `type: \"cached\"` joins connected, pending, needs-auth and failed; restored entries carry `cacheSavedAt`.\n- Fresh entries are used directly; stale entries are used immediately and revalidated in the background under the context \"MCP discovery-cache stale refresh\".\n- A new `tengu_mcp_discovery_source` event reports where a server came from: cache_fresh, cache_stale, miss_expired, miss_corrupt, miss_strike, miss_no_fingerprint.\n- Entries whose capabilities are skills-capable or channel-capable are deliberately forced to a live connection (`{ kind: \"miss\", reason: \"skills-capable\" }`).\n- Eligibility checks that can send a server live instead: `\"env-disabled\"`, `\"kill-switch\"`, `\"transport\"`, `\"cli-owned\"`, `\"env-placeholder\"`. The cache is also skipped when a live connection already exists.\n- Gated on `tengu_mcp_discovery_cache` with in-source fallback true, so the real value comes from remote config; setting the `MCP_DISCOVERY_CACHE` env var to false disables it. The persistence file `mcp-discovery-cache` and the env switch shipped in 2.1.220, but nothing consumed an entry into a client until now.\n\n**Evidence**\n\n`tengu_mcp_discovery_source`, `tengu_mcp_discovery_cache`, `MCP discovery-cache stale refresh`\n\n- Flag `tengu_mcp_discovery_cache`: Not enough to say (read for one account on one subscription tier against v2.1.221; this account: no value returned, anonymous baseline: no value returned, compiled default: on) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.\n- Area: MCP\n- Names: `MCP_DISCOVERY_CACHE`\n- Tier: You'll notice\n- Useful: 4\/5\n- Signal: 0\/5"}