Feature request: Lazy/on-demand MCP server initialization

Resolved 💬 3 comments Opened Feb 10, 2026 by lazariwilly Closed Feb 13, 2026

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.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗