Feature request: Lazy/on-demand MCP server initialization

Status Closed — duplicate
Maintainer reply None cached
Activity 3 comments · opened Feb 10, 2026 · 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 ↗