Feature request: Lazy/on-demand MCP server initialization
Problem
When Claude Code starts, all configured MCP servers initialize simultaneously. For servers that require credentials (e.g., via 1Password op:// references, OAuth flows, or API key prompts), this means the user is prompted for authentication for every server at session start — even if they won't use most of them during that session.
With 6-9 credential-backed servers configured across project and global .mcp.json, this creates a noticeable startup friction (multiple biometric/password prompts, browser OAuth redirects, etc.).
Proposed Solution
Support lazy/on-demand MCP server initialization — servers would only connect and authenticate when their tools are first invoked during a session, rather than all at startup.
Suggested behavior:
- Servers are registered at startup (tool names are known) but not connected
- When Claude first calls a tool from a disabled-until-needed server, the server initializes and authenticates on the fly
- A new config flag like
"lazy": true(or"initMode": "on-demand") could opt specific servers into this behavior - Alternatively, a global setting like
mcpInitMode: "lazy" | "eager"could control the default
Example config:
{
"mcpServers": {
"cortex": {
"type": "http",
"url": "https://mcp.cortex.io/mcp",
"headers": {
"Authorization": "op://Employee/Cortex MCP Token/credential"
},
"lazy": true
}
}
}
Current Workaround
The only option today is "disabled": true, but this requires manually re-enabling servers before use (claude mcp enable <name>), which defeats the purpose of having them configured.
Impact
This would significantly improve startup UX for users with multiple authenticated MCP integrations — especially in enterprise environments where credential-backed servers (1Password, OAuth, SSO) are common.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗