Do not collapse the tool types
| Tool type | What it is | Where it fits |
|---|---|---|
| Built-in tool | A native agent capability provided by VS Code. | Deep editor operations with no external MCP server. |
| Extension tool | A tool contributed through the VS Code extension API. | Tight integration with editor APIs and Marketplace delivery. |
| MCP tool | A capability supplied by a local or remote MCP server. | Portable services, existing MCP implementations, and cross-client reuse. |
| Agent plugin | A package that can include agents, commands, skills, hooks, and MCP servers. | Distributing a complete agent customization rather than one tool. |
| MCP App | Interactive UI returned by an MCP server. | Rich visual results inside compatible VS Code chat. |
Local and remote connections
VS Code supports local stdio, remote Streamable HTTP, and legacy SSE. Servers can be configured at workspace or user scope, installed through links and registries, discovered from other tools, or registered by an extension. Configuration may run on the local machine, inside a development container, or on a remote SSH host depending on where the file and command live.
What the host supports
VS Code documents broad MCP coverage: tools, prompts, resources, authentication, roots, elicitation, sampling, server instructions, icons, and MCP Apps. Users can choose tools in the picker and edit model-generated arguments in confirmation dialogs.
“Dynamic tool discovery” in VS Code documentation includes servers registering or changing tools at runtime. That should not be confused with a verified promise that all definitions are deferred out of model context. For context control, use the tool picker, tool sets, and limited GitHub MCP toolsets.
Trust, approvals, and organization policy
- Local servers are executable code. VS Code can ask for server trust, and organizations can maintain allowlists.
- Read-only annotations can reduce confirmation prompts, but they must accurately describe behavior.
- Remote servers can use OAuth. Keep secrets in supported input and credential mechanisms rather than committed configuration.
- GitHub Copilot Business and Enterprise policies can disable MCP use for managed users.
- Local editor configuration does not automatically configure Copilot CLI, cloud agents, code review, or other GitHub surfaces. Treat each as a separate deployment target.
Good fit
Use MCP when the capability should work beyond one editor extension, is already hosted remotely, or should be shared with other AI clients. Use an extension tool when deep access to VS Code APIs is the central value. Package either inside an agent plugin when the installation also needs skills, commands, hooks, or custom agents.