Files
tai/research/mcp-client-support/vscode-mcp-configuration.md
T
retoor 251c3dc2ba research: mcp-client-support subject (106 sources, 3 conclusions)
- wire spec: lifecycle, stdio + Streamable HTTP transports, tools,
  utilities, legacy SSE, versioning, changelog (14 Tier 1)
- client ecosystem: Claude Code/VS Code/Cursor/Codex configs,
  mcp-remote, Smithery, registries, Glama (12 Tier 1)
- security/ops: authorization draft, trust model, poisoning,
  rug pulls, production hardening (12 Tier 1) + 68 Tier 2 cards
- conclusions: minimal stdlib client on 2025-11-25, normalizer +
  resolver agent for pasted configs/GitHub URLs, untrusted-until-
  consent trust model; nothing built yet
- audit PASS (14 subjects, 797 sources, 32 conclusions)
2026-10-18 19:23:02 +02:00

3.3 KiB

VS Code: MCP configuration reference

Metadata

Field Value
Institute Molodetz Institute - Research and Retrieval Division
Subject mcp-client-support
Document type Source Dossier
Tier 1
Source title MCP configuration reference
Source URL https://code.visualstudio.com/docs/agents/reference/mcp-configuration
Source publisher / author Microsoft
Source type vendor docs
Source date (published) Unknown, not stated (living doc)
Date researched 2026-10-18
Researched by tai (agent), model: Claude Sonnet 5, on behalf of retoor
Research method gather-subagent direct page fetch, parent synthesis from evidence pack
Confidence High
Status Active

Summary

Microsoft's field-level reference for VS Code MCP configuration. It covers the secrets story (input variables with secure storage plus envFile), entry shapes that mirror the task doc under both wrapper keys, enable/disable state kept out of shared files, and the chat.mcp.autostart setting with its three modes.

Key findings

  • Secrets via input variables: "When you reference an input variable using ${input:variable-id}, VS Code prompts you for the value when the server starts for the first time. The value is then securely stored"; plus envFile ("Path to an environment file", e.g. "${workspaceFolder}/.env").
  • Same server entry works under either wrapper key; docs show identical {"type": "http", "url": ...} and {"command": "npx", "args": [...]} examples under mcpServers and under servers.
  • "You can enable or disable an MCP server globally or for a specific workspace... The enable/disable state is stored separately from the server configuration in mcp.json, so it does not affect shared configuration files."
  • chat.mcp.autostart (never/onlyNew/newAndOutdated) controls editor autostart; "Disabled servers and servers in an error state are excluded from the autostart pass."
  • Workspace .vscode/mcp.json (top-level servers) is the location for "input variables, development mode, and per-server sandboxing", while workspace .mcp.json (top-level mcpServers) is "Preferred for configurations that you share with your team".

Pros / strengths

  • Gives the two secret idioms (${input:} prompting with secure storage, envFile path) as concrete fields a resolver can detect and rewrite.
  • Autostart modes and the disabled/error exclusion rule are stated exactly, grounding editor-behavior claims.
  • Pairs with the task doc (Add and manage MCP servers) so the overview and the field reference corroborate each other.

Cons / limitations / caveats

  • Living doc with no publish date; field details could drift without notice.
  • Whether VS Code supports ${env:VAR} interpolation remains unresolved (only seen in an unopened mirror's table; Microsoft's own pages document ${input:} and envFile).
  • Documents VS Code conventions only; the ${input:} idiom has no direct counterpart in Claude Code, Cursor, or Codex configs.

Relevance to tai

Gives the exact ${input:}/envFile syntax tai must translate when importing VS Code configs, and confirms wrapper-key interchangeability plus out-of-band enable/disable state that an importer should not try to preserve in the resolved entry.

Changelog

Date Change
2026-10-18 Initial dossier created.