· ai / copilot
Skills and MCP Config: Where VS Code and Copilot CLI Actually Look
VS Code’s Copilot Chat and GitHub Copilot CLI both implement the Agent Skills open standard and both support MCP servers, but they scan different directories for each. Mixing up the two causes skills or MCP servers that work in one to silently go missing in the other.
Skill directories
| Scope | VS Code | Copilot CLI |
|---|---|---|
| Project (in repo) | .github/skills/, .claude/skills/, .agents/skills/ |
.github/skills/, .claude/skills/, .agents/skills/ |
| Personal (home dir) | ~/.copilot/skills/, ~/.claude/skills/, ~/.agents/skills/ |
~/.copilot/skills/, ~/.agents/skills/ |
Project-level directories are identical between the two. The gap is personal skills: VS Code additionally scans ~/.claude/skills/ (a compatibility scan for Claude Code’s personal skill directory), while Copilot CLI only recognizes ~/.copilot/skills/ and ~/.agents/skills/. A skill dropped only into ~/.claude/skills/ loads in VS Code but is invisible to the CLI.
Workaround: point the CLI at the directory explicitly, either interactively with /skills add or from the shell with copilot skill add <DIRECTORY>. Repo-level .claude/skills/ needs no such workaround since both tools already read it.
VS Code also lets you add extra project skill locations via the chat.agentSkillsLocations setting.
MCP server config files
| Scope | VS Code | Copilot CLI |
|---|---|---|
| Workspace/project | .vscode/mcp.json (servers key) |
.mcp.json (walked up from cwd to repo root) or .github/mcp.json (mcpServers key or bare top-level format) |
| User/personal | User profile mcp.json, opened via MCP: Open User Configuration |
~/.copilot/mcp-config.json (mcpServers key) |
The two ecosystems use different top-level JSON keys — servers for .vscode/mcp.json vs. mcpServers (or a bare per-server-name format) for Copilot CLI’s files — so a file written for one isn’t valid for the other without editing the key name.
There’s also a runtime wrinkle inside VS Code itself: when a chat session runs on Agent Host rather than the classic extension host, VS Code doesn’t hand .vscode/mcp.json to the Agent Host directly — it forwards the resolved server config instead, and skips any server that needs interactive ${input:...} variables. For a config that both Agent Host and Copilot CLI can read natively, use a workspace .mcp.json or a user ~/.copilot/mcp-config.json file instead of .vscode/mcp.json.
Copilot CLI precedence when multiple files apply:
.mcp.jsonbeats.github/mcp.jsonif both exist in the same directory.- A definition in a file closer to the current working directory beats one further up.
- Any project-level file beats
~/.copilot/mcp-config.json. - Project-level files load only after the directory has been trusted; in prompt mode (
copilot -p) they’re skipped in untrusted directories unlessGITHUB_COPILOT_PROMPT_MODE_WORKSPACE_MCP=true.
// .vscode/mcp.json — VS Code only, "servers" key
{
"servers": {
"playwright": { "command": "npx", "args": ["-y", "@microsoft/mcp-server-playwright"] }
}
}
// .mcp.json — Copilot CLI (and portable to VS Code Agent Host), "mcpServers" key
{
"mcpServers": {
"playwright": { "type": "local", "command": "npx", "args": ["@playwright/mcp@latest"] }
}
}
Bottom line
Repo-level directories (.github/skills, .claude/skills, .agents/skills for skills; .mcp.json/.github/mcp.json for MCP) work across both tools without changes. Personal, home-directory configuration does not automatically carry over: ~/.claude/skills needs copilot skill add to reach the CLI, and .vscode/mcp.json’s servers key needs converting to mcpServers before Copilot CLI (or the Agent Host, for full portability) will read it.
References
- Use Agent Skills in VS Code — lists VS Code’s project (
.github/skills/,.claude/skills/,.agents/skills/) and personal (~/.copilot/skills/,~/.claude/skills/,~/.agents/skills/) skill directories, and thechat.agentSkillsLocationssetting. - About agent skills — confirms Copilot’s supported skill locations across surfaces.
- Adding agent skills for GitHub Copilot CLI — CLI project skills (
.github/skills,.claude/skills,.agents/skills) vs. personal skills (~/.copilot/skills,~/.agents/skills, no~/.claude/skills), plus the/skills addandcopilot skill addcommands. - Add and manage MCP servers in VS Code —
.vscode/mcp.json(serverskey), user-profilemcp.json, and the Agent Host forwarding behavior with the.mcp.json/~/.copilot/mcp-config.jsonportability recommendation. - Adding MCP servers for GitHub Copilot CLI —
~/.copilot/mcp-config.json(mcpServerskey), project-level.mcp.json/.github/mcp.jsondiscovery and precedence, trust rules, and confirmation that.vscode/mcp.json’sserverskey is not read by the CLI.