Search the guide

Type to search page titles, headings, and content.

Use ↑ ↓ to select, Enter to open, and Esc to close.

Section 04 / Governance guide

MCP Server Governance (Deep Dive)

Official documentation

Related sections: Enterprise & Org Policies · Managed Settings

Master switch

“MCP servers in Copilot” policy must be Enabled everywhere (enterprise or org) or no MCP servers run at all — under AI controls → MCP.

Official documentation

Related section: Managed Settings: supported keys

{
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverCommand": ["npx", "@playwright/mcp@latest"] }
  ],
  "deniedMcpServers": [
    { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/"] }
  ]
}

Evaluation order:

  1. Always allow built-in default servers (e.g. built-in GitHub MCP server).
  2. Block anything matching deniedMcpServers.
  3. If allowedMcpServers exists, block anything not matched.
  4. Block if URL/command has an unresolved variable (${VAR}) — can’t be verified.

If multiple managed-settings.json sources apply, all settings apply cumulatively (deny from anywhere blocks; allow must match at every layer that defines one).

Official documentation

  • Host your own v0.1-spec MCP registry, or use Azure API Center as backing store.
  • Enterprise/org config: AI controls → MCP → set MCP Registry URL, then Restrict MCP access to registry servers: Allow all vs Registry only.
  • Limitation: enforcement matches by server name/ID only — bypassable by editing local config. Not supported for cloud agent at all. Prefer the managed-settings allowlist for anything that must be airtight.
  • Registry only applies to remote and local servers; local server IDs must exactly match their registry IDs.
Client Registry display Registry-only enforcement
Copilot CLI ✅ ✅ v1.0.11+
Copilot cloud agent ❌ ❌
Eclipse ✅ ✅ v4.38+
JetBrains ✅ ✅ v1.5.64+
Visual Studio ✅ ✅ v18.4.0+
VS Code ✅ ✅ v1.109.3+
Xcode ✅ ✅ v0.47.0+

Eclipse, JetBrains, and Xcode require pre-release versions for MCP management features.

For users with multiple Copilot seats, private-registry policy resolves in this order: parent-enterprise scope over organization scope, then stricter Registry only over Allow all, then the most recently uploaded registry when scope and strictness tie.

Comparison

  managed-settings.json allowlist Custom registry
Status GA Public preview
Matching URL / stdio command / name — secure Name/ID only — bypassable
Cloud agent support Yes No