Minimal reproduction demonstrating two related issues with extension-contributed HTTP MCP servers in VS Code:
- HTTP MCP servers requiring remote authentication cannot auto-start — there is no way to mark an MCP as required or force the auth prompt at chat start. Chat continues without the MCP if the user misses the small notice.
- MCP tools cannot be referenced with
#notation until manually started — compounding the discoverability problem since users have no way to see or invoke tools from an unstarted server.
When an extension registers an HTTP MCP server via registerMcpServerDefinitionProvider, the server appears in the tools picker but never auto-starts. Instead, the user sees a small, easy-to-miss message at the bottom of a chat response:
"The MCP server HTTP_MCP_Repro may have new tools and requires interaction to start. Start it now?"
The tools picker shows the MCP with an "Update Tools" action instead of being auto-started:
If the user doesn't notice this message, they continue chatting without the MCP tools — silently degraded, with no indication of what they're missing. The chat continues to respond normally, giving the user the impression that everything is working.
There is currently:
- No way to mark an MCP as
requiredorautoStartvia the extension API - No way to force or trigger the authentication prompt programmatically at chat start
- No way to reuse an existing user's logged-in VS Code MSAL credentials for the MCP connection
- No prominent UI (e.g., modal dialog, banner) to alert the user that a critical MCP needs authorization
This creates a confusing point of friction where users won't have access to potentially critical MCPs unless they are actively watching for and responding to a small inline notice at chat start.
This behavior occurs regardless of:
- The
chat.mcp.autoStartsetting (default:newAndOutdated) - Whether the MCP is configured via the extension API or
.vscode/mcp.json - Whether a valid Microsoft/GitHub auth session already exists in VS Code
Additionally, users cannot reference MCP tools with the # notation in chat until the server has been manually started, making the tools completely invisible from the chat input:
This compounds the auto-start problem: since unstarted MCPs don't appear in the # tool picker, users have no way of knowing tools exist or invoking them. This is tracked in #272000, but that issue doesn't address the auto-start problem.
Extension-contributed HTTP MCP servers should either:
- Auto-start and trigger the auth prompt prominently (like a modal dialog or banner), OR
- Provide an API for extensions to mark an MCP as
requiredorautoStart, OR - Provide a public API to programmatically start an MCP server (e.g.,
vscode.lm.startMcpServer(serverId)), OR - Allow the MCP to auto-connect when a valid auth session is already cached (e.g., from
vscode.authentication.getSession)
- VS Code Insiders 1.111.0+ (or stable with MCP API support)
- GitHub Copilot Chat extension v0.39.0+
- Signed in to a Microsoft/GitHub account
- Clone this repo
- Run
npm install - Run
npm run compile - Launch the Extension Development Host:
- Press
F5in VS Code, or - From terminal:
code-insiders --extensionDevelopmentPath .
- Press
- In the Extension Development Host window, open any folder
- Open the Chat view (
Ctrl+Alt+I) - Send a message in chat (e.g., "hello")
- Observe: The chat response appears without MCP tools. A small, easy-to-miss message appears:
"The MCP server HTTP_MCP_Repro may have new tools and requires interaction to start. Start it now?"
- Click the Configure Tools button (gear icon in the chat input)
- Observe: Under "HTTP_MCP_Repro", you'll see "Update tools" — the server has not auto-started
- The MCP never starts automatically — the user must click "Start it now?" to trigger the auth flow
- With the MCP still in the unstarted state (do not click "Start it now?")
- In the chat input, type
#to open the tool/reference picker - Observe: No tools from "HTTP_MCP_Repro" appear in the picker
- Now click "Start it now?" in the chat to start the MCP and complete auth
- Type
#again — the MCP tools now appear
Create .vscode/mcp.json in the opened folder:
{
"servers": {
"HTTP_MCP_Test": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp"
}
}
}The same behavior occurs — the server requires interaction to start.
Extensions that ship HTTP MCP servers to large user bases have no way to ensure the MCP is available when the user starts chatting. The current UX silently falls back to chat without the tools, and most users never realize they need to click a small link to activate them. This is particularly problematic for extensions that provide critical domain-specific tools via MCP — users will get degraded responses without understanding why.
Any of these would address Issue 1:
-
autoStartproperty onMcpServerDefinition— Allow extensions to declare that their MCP should auto-start, triggering the auth prompt on workspace open. -
required: trueon MCP definitions — Show a prominent banner or block chat until the user authorizes required MCP servers. -
Public API to start an MCP — e.g.,
vscode.lm.startMcpServer(serverId)so extensions can trigger the auth flow programmatically. -
Honor pre-cached auth sessions — If a valid Microsoft/MSAL auth session exists (from
vscode.authentication.getSession), allow the MCP to auto-connect without additional interaction.
For Issue 2, #272000 should address the # reference visibility.
- #275919 — MCP tools registered by extension requires "Update tools" action (closed)
- #272000 — Proposed API for MCP tool metadata (open, doesn't address auto-start)
- VS Code: 1.111.0 (Insiders)
- GitHub Copilot Chat: 0.39.0
- OS: Windows 11
chat.mcp.autoStart:newAndOutdated(default)


