VS Code Copilot (Insiders):
Command Palette → MCP: List Servers
(or Ctrl+Shift+P, type "list servers")
This shows all registered MCP servers and their connection status. Look for:
- ✅ Connected — Server is running and accessible
- ❌ Failed — Server errored on startup
- ⏳ Connecting — Server is booting (may take a few seconds)
MCP servers are registered in two possible places:
Workspace-level (~/workspace/.vscode/settings.json or .code-workspace):
{
"mcpServers": {
"accessibility": {
"command": "node",
"args": ["path/to/mcp-server/server.js"]
}
}
}Profile-level (~/.vscode/settings.json):
{
"mcpServers": {
"accessibility": {
"command": "node",
"args": ["path/to/mcp-server/server.js"]
}
}
}VS Code 1.113 Behavior:
- Workspace MCP servers override profile MCP servers with the same name
- Both are merged if names don't conflict
- Check both locations if a server is not appearing
To Debug:
- Open Settings (
Ctrl+,) - Search for "MCP" — shows active MCP configuration
- Look for
mcpServersobject - Verify
commandpath is correct and executable - Verify
argsarray has correct server path and arguments
When an MCP server first connects, VS Code may show:
Allow MCP server 'accessibility-agents' to run?
[Allow] [Deny] [Don't ask again]
If you clicked Deny, the server is blocked:
To Re-enable:
- Command Palette → Preferences: Open Settings (JSON)
- Find
"untrustedMcpServers"(if it exists) - Remove the server name from the list or delete the property
- Restart VS Code
- Trust prompt will reappear
Or use CLI:
# List all denied MCP servers
code --list-extensions --show-versions
# To reset (use with caution):
rm ~/.vscode/mcp-trust.json # (macOS/Linux)
# or
Remove-Item $env:APPDATA\Code\mcp-trust.json # (Windows PowerShell)If MCP: List Servers shows the server as Failed:
For Stdio-based servers (local Node.js):
# Run the server directly to see errors:
node path/to/mcp-server/server.jsLook for:
- Port binding errors (address already in use)
- File not found errors (bad path in settings)
- Module import errors (missing dependencies)
- Proxy/firewall errors (if server makes HTTP requests)
For HTTP-based servers (this repo's default):
- Check if HTTP port is open:
netstat -an | grep LISTEN(Windows) orlsof -i -P -n | grep LISTEN(macOS/Linux) - Verify server process is running:
ps aux | grep mcp-server - Check server logs file (if configured):
tail -f /tmp/mcp-server.log
New in 1.113: MCP servers registered in VS Code are bridged to Copilot CLI and Claude agents.
If using Copilot CLI:
copilot /agent accessibility-lead
# If MCP is not bridged, agent won't have access to MCP toolsTo verify bridging:
- Check
copilot config show— lists active profiles - Ensure VS Code workspace is the active Copilot profile:
copilot profile set --workspace - Run
copilot /agentwithout args — shows available agents; look for "MCP tools" section
If MCP not showing in Copilot CLI:
- MCP servers must be in workspace-level
.vscode/settings.jsonor.code-workspacefile - Profile-level MCP servers are not bridged to CLI
- Move the
mcpServersconfiguration to.vscode/settings.jsonin your workspace root
If an agent is invoked but complains "Tool not found" or "MCP tool unavailable":
MCP tools are namespaced. The agent must reference them correctly:
tools:
- read # Built-in VS Code tool
- mcp: axe-core/scan # MCP-based tool (MCP 1.113 format)
- mcp: accessibility/batch-scan # Different MCP namespaceOld vs New format:
- Pre-1.113:
axe-core-scan(just a name) - 1.113+:
mcp: namespace/tool-name(explicit namespace)
Check the agent's tools: list — ensure MCP tools use the new mcp: prefix format.
Not all MCP tools are available from all servers. Verify the tool exists:
Command Palette → MCP: Debug Tools
(Shows all tools provided by all MCP servers)
Look for the tool in this list. If missing:
- Verify MCP server is Connected (not Failed)
- Check server configuration — may need to enable the tool in
mcpServerssettings - Restart VS Code to reload MCP servers
Some MCP tools require file system or network access. Check:
- Does the node process running the MCP server have read/write permissions?
- Is the server in a restricted folder (e.g.,
/Program Files, cloud-synced folder)? - Are firewall rules blocking HTTP requests (if server makes external calls)?
Solution: Run MCP server with elevated permissions or move to a user-writable directory.
If MCP: List Servers shows a server as Failed every time you restart:
The MCP server in this repo requires:
- Node.js 18+ (check:
node --version) - npm or yarn (for dependency installation)
- Port 8000 available (for HTTP server; configurable in
mcp-server/server.js)
# Verify Node.js version
node --version
# Should output: v18.0.0 or higher
# Install dependencies
cd mcp-server
npm install # or: yarn installcd mcp-server
node server.jsWatch for errors:
EADDRINUSE→ Port 8000 in use; change port inserver.jsline ~XXERR_MODULE_NOT_FOUND→ Missing dependencies; runnpm installPermission denied→ File permission issue; check folder ownership
In settings.json, verify the path to server is correct:
{
"mcpServers": {
"accessibility": {
"command": "node",
"args": [
"/full/path/to/mcp-server/server.js"
]
}
}
}Use absolute paths, not relative paths. Example:
- ✅
c:\\Users\\username\\code\\agents\\mcp-server\\server.js(Windows) - ✅
/Users/username/code/agents/mcp-server/server.js(macOS) - ❌
./mcp-server/server.js(relative — may fail if cwd changes)
Add to settings.json:
{
"mcp.debug": true,
"mcp.logLevel": "debug"
}Then check Output panel (Ctrl+Shift+U) → MCP tab for detailed logs.
If agents are taking a very long time to respond:
# Test connectivity to MCP server
curl http://localhost:8000/health
# If using remote MCP server, measure latency:
ping mcp-server-host.comOpen Agent Debug Log (chat.agentDebugLog.enabled: true):
- Run the agent
- Watch MCP tool invocations in the log
- Note which tools are slow (high duration)
- Slow tools are likely: file I/O, network bounds, or complex computation
In mcp-server/server.js, consider:
- Caching results (avoid re-scanning same content)
- Batching tool calls (fewer roundtrips)
- Reducing output verbosity (less data over wire)
Or in agent instructions, consider:
- Reducing scope (scan fewer files)
- Using internal helpers in parallel instead of serial calls
Agent files must be in .github/agents/ (for Copilot) or .claude/agents/ (for Claude Code).
ls -la .github/agents/ | grep "^-" | wc -l
# Should show 80+ agent filesOpen the agent file and verify YAML frontmatter is valid:
---
name: my-agent
description: What this agent does
tools: ['read', 'edit', 'runInTerminal']
---
Agent instructions in markdown...Common errors:
- Missing
---delimiters - Indentation in YAML (must be 2 spaces, not tabs)
- Unclosed quotes or brackets
- Reserved characters not escaped (
|,&,*in YAML need quotes)
node scripts/validate-agents.jsLook for errors like:
Invalid frontmatter— fix YAML syntaxMissing description— all agents must havedescription:Unknown tool— check tool name spellingTool not prefixed— MCP tools must havemcp:prefix in 1.113+
VS Code caches agent definitions. Reload:
Command Palette → Developer: Restart Extension Host
(or close/reopen VS Code)
Open the agent file and read the instructions section. Is it clear? Does it match the agent's purpose?
If the agent is a coordinator (e.g., accessibility-lead), verify its agents: frontmatter list:
agents:
- web-accessibility-wizard
- aria-specialist
# ... all agents it can invokeMissing agents in this list won't be invoked. Add them if needed and run the validator.
Verify no agent delegates to itself, and no agent chain forms a cycle:
# Build a delegation graph:
grep -h "^agents:" .github/agents/*.agent.md | sort -uLook for cycles like:
- A → B → A
- A → B → C → A
If found, remove the cycle-closing delegation.
Command Palette → Developer: Toggle Developer Tools
(or F12)
Switch to the Console tab and run the agent. Watch for:
- JavaScript errors
- Server connection errors
- Tool invocation failures
Run validator and note the error:
node scripts/validate-agents.js 2>&1 | grep "ERROR"Common validator errors:
| Error | Fix |
|---|---|
Missing frontmatter |
Add --- delimiters |
Invalid YAML |
Check indentation (2 spaces) |
Missing 'name' |
Add name: agent-name to frontmatter |
Missing 'description' |
Add description: What this agent does |
Unknown tool 'xyz' |
Use correct tool name; prefix MCP tools with mcp: |
Tool not in agents list |
If agent uses agent tool, must have agents: frontmatter |
Agents list incomplete |
Coordinator must list all agents it calls |
VS Code settings for agents are in Copilot's namespace. Verify:
{
"github.copilot.chat.agentDebugLog.enabled": true,
"chat.useCustomizationsInParentRepositories": true,
"chat.subagents.allowInvocationsFromSubagents": false
}Not:
{
"agent.debug": true // ❌ Wrong namespace
}Settings in .vscode/settings.json override global settings. If a setting isn't working:
- Check Workspace settings (
.vscode/settings.json) - Check Global settings (
~/.config/Code/user/settings.json) - Workspace wins if both exist
If .github/copilot-instructions.md changes aren't picked up:
Command Palette → Copilot: Reload Customizations
Or enable monorepo discovery:
{
"chat.useCustomizationsInParentRepositories": true
}This loads customizations from parent folders (helps in monorepos where you open a subfolder).
Symptom: Agent takes 30+ seconds to respond
If the agent spawns many subagents, they should run in parallel, not serial:
# Good: Spawn multiple agents in parallel
agents:
- aria-specialist # parallel
- keyboard-navigator # parallel
- contrast-master # parallelIf response is slow, the agent might be calling agents sequentially. Review agent instructions for then, after, following — these hint at serial execution.
Use Agent Debug Log to identify slow MCP tool calls:
- Open Agent Debug Log
- Look for
mcp: tool-nameentries with high duration (ms) - That tool is the bottleneck
Optimization:
- Reduce tool scope (fewer files to scan)
- Cache results (don't re-scan same content)
- Use parallel tool calls instead of serial
If the agent stops early, it may have hit token budget. Check:
- Does the output say "response was truncated"?
- Are instructions too verbose? Consider shortening them
- Are examples too large? Inline only essential examples
- Configuration Guide — Agent settings and options
- Subagent Architecture — How agents delegate to each other
- Getting Started — First-time setup
- GitHub Repository Issues — Report bugs
- CHANGELOG — What's new in each version (check for known issues)