[FEATURE] Required MCP servers — block session if mandatory servers are not connected

Resolved 💬 2 comments Opened Mar 13, 2026 by kristijan-rotim Closed Apr 11, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

Problem

Plugins and workflows often depend on specific MCP servers to function. Currently, Claude Code treats all MCP servers as optional — if a server fails to connect or needs authentication, the session starts anyway and Claude
silently proceeds without those tools.

This causes problems when:

  • A plugin's skills are useless without its backing MCP server (e.g., a troubleshooting plugin that requires a logs MCP)
  • Multiple plugins share the same MCP dependency but there's no way to enforce it
  • Users forget to authenticate OAuth-based MCPs and only discover the problem mid-task

There's no way for plugin authors or users to declare that certain MCP servers must be connected for the session to be usable.

Proposed Solution

Add a required field to MCP server configuration:

  {
    "mcpServers": {
      "jira": {
        "command": "...",
        "required": true
      }
    }
  }

When required: true, Claude Code should:

  1. Wait for the server's health check to complete before starting the session
  2. If the server is not connected (failed, needs auth, timed out) — block the session with a clear error message explaining which servers are unhealthy and how to fix them
  3. Support this at all config scopes: user, project, and plugin .mcp.json

For plugins specifically, this would also allow plugin.json to declare MCP dependencies as required:

  {
    "mcpServers": {
      "grafana": {
        "url": "https://...",
        "required": true
      }
    }
}

Alternative Solutions

_No response_

Priority

Medium - Would be very helpful

Feature Category

CLI commands and flags

Use Case Example

_No response_

Additional Context

_No response_

View original on GitHub ↗

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