关于允许列表
可以定义允许列表和拒绝列表来控制企业中的用户可以在 Copilot 客户端和云沙盒中运行哪些 MCP 服务器。 这些列表定义在贵企业的 managed-settings.json 中,你可以将其存储在 GitHub 上。 有关详细信息,请参阅“公司中的 MCP 服务器使用情况”。
allowedMcpServers 并 deniedMcpServers 应用于在用户设置和存储库设置中定义的 MCP 服务器,但 不适用于 存储库自定义代理配置文件中定义的 MCP 服务器。 但是,你可以通过确保组织或存储库级自定义防火墙不允许启动这些服务器所需的任何域名,来防止使用在自定义代理配置档案中配置的 MCP 服务器。 请参阅“自定义或禁用GitHub Copilot的防火墙”。
这些控件也适用于支持 MCP 托管设置的客户端上的 Copilot 连接器。 如果定义允许列表,则用户只能使用其 URL 与允许列表条目匹配的连接器。 请参阅 “允许 Copilot 连接器”。
先决条件
- 要运行任何 MCP 服务器,必须为企业或允许 MCP 服务器的组织启用策略中的 CopilotMCP 服务器。
- 如果当前将 MCP 服务器限制为自定义注册表,建议关闭此限制,以避免与新的允许列表冲突并维护单个事实来源。 将 “限制 MCP 访问注册表服务器 ”策略设置为 “允许所有”,并选择性地清除 MCP 注册表 URL 的值。
可以在策略的 MCP 部分找到这些设置Copilot。 请参阅“管理企业中 GitHub Copilot 的策略和功能”。
定义允许列表或拒绝列表
-
为您的企业创建
managed-settings.json文件。 大多数企业将此文件存储在存储库中.github-private。 还可以使用移动设备管理直接在用户的计算机上安装它。 请参阅“选择如何将企业管理的设置部署到用户”。 -
编辑文件以定义 MCP 服务器的允许列表和拒绝列表。 可以按名称、服务器 URL 或特定命令进行匹配。 有关语法详细信息,请参阅“企业托管设置”中的 allowedMcpServers 和 deniedMcpServers 。
以下示例允许与这三个允许列表条目中的任何一个匹配的服务器。 配置为访问根文件系统的文件系统服务器始终被阻止,即使它也与允许列表条目匹配。
JSON { "allowedMcpServers": [ { "serverUrl": "https://api.githubcopilot.com/*" }, { "serverCommand": ["npx", "@playwright/mcp@latest"] }, { "serverCommand": ["cmd", "/c", "uvx", "markitdown-mcp"] } ], "deniedMcpServers": [ { "serverCommand": [ "npx", "-y", "@modelcontextprotocol/server-filesystem", "/" ] } ] }{ "allowedMcpServers": [ { "serverUrl": "https://api.githubcopilot.com/*" }, { "serverCommand": ["npx", "@playwright/mcp@latest"] }, { "serverCommand": ["cmd", "/c", "uvx", "markitdown-mcp"] } ], "deniedMcpServers": [ { "serverCommand": [ "npx", "-y", "@modelcontextprotocol/server-filesystem", "/" ] } ] }
允许 Copilot 连接器
Copilot 连接器是远程 MCP 服务器,因此可以使用 serverUrl 条目来允许或阻止它们。 如果未定义 allowedMcpServers,则允许使用连接器,除非它们与 deniedMcpServers 条目匹配,而且无需添加这些连接器。 如果定义了 allowedMcpServers,则连接器会被阻止,除非其 URL 与某个条目匹配。
若要允许所有连接器(包括将来添加的连接器),请将以下通配符条目添加到现有 allowedMcpServers 列表中。
{
"allowedMcpServers": [
{ "serverUrl": "https://api.github.com/copilot-connectors/api/v1/connectors/*/mcp" }
]
}
{
"allowedMcpServers": [
{ "serverUrl": "https://api.github.com/copilot-connectors/api/v1/connectors/*/mcp" }
]
}
若要仅允许特定连接器,请改为为每个连接器的 URL 添加一个条目。 有关每个连接器的 URL,请参阅 连接器 URL。 例如,以下条目允许 Slack 和 Sentry 连接器。
{
"allowedMcpServers": [
{ "serverUrl": "https://api.github.com/copilot-connectors/api/v1/connectors/githubcopilotslackmcp/mcp" },
{ "serverUrl": "https://api.github.com/copilot-connectors/api/v1/connectors/githubcopilotsentrymcp/mcp" }
]
}
{
"allowedMcpServers": [
{ "serverUrl": "https://api.github.com/copilot-connectors/api/v1/connectors/githubcopilotslackmcp/mcp" },
{ "serverUrl": "https://api.github.com/copilot-connectors/api/v1/connectors/githubcopilotsentrymcp/mcp" }
]
}
这些示例仅显示连接器条目。 将其他条目保留在允许列表中,因为任何与条目不匹配的 MCP 服务器都将被阻止。
若要阻止特定连接器,请将其 URL 添加到 deniedMcpServers。 由于拒绝规则优先,因此可以将通配符允许列表条目与拒绝列表条目合并,以允许除阻止的连接器以外的所有连接器。 若要阻止所有连接器,请将通配符 URL 添加到 deniedMcpServers。
连接器网址
| 连接器 | MCP 服务器 URL |
|---|---|
| Airtable | https:/ |
| Amplitude | https:/ |
| Apify | https:/ |
| Atlassian Rovo | https:/ |
| Azure 数据资源管理器 | https:/ |
| Bitly | https:/ |
| Canva | https:/ |
| Cloudflare | https:/ |
| Composio | https:/ |
| Figma | https:/ |
| 格拉法纳云 | https:/ |
| LaunchDarkly | https:/ |
| 线性 | https:/ |
| 清醒 | https:/ |
| Microsoft Learn Docs | https:/ |
| 米罗 | https:/ |
| 氖 | https:/ |
| Netlify | https:/ |
| 概念 | https:/ |
| 端口 | https:/ |
| 邮差 | https:/ |
| Sentry | https:/ |
| Slack | https:/ |
| Statsig | https:/ |
| Vercel | https:/ |
| 工作 IQ | https:/ |
评估规则
Copilot 客户端按以下顺序评估 MCP 服务器:
- 始终允许内置默认服务器,例如内置的 GitHub MCP 服务器。
- 如果服务器与
deniedMcpServers中的任何条目匹配,则阻止该服务器。 - 如果存在
allowedMcpServers,且它与某个条目不匹配,则阻止该服务器。 - 如果服务器的 URL 或命令包含未解析的变量(例如
${VARIABLE},或者$VARIABLE,客户端无法验证服务器),则阻止服务器。
如果客户端从多个 managed-settings.json 部署方法接收设置,则所有设置都适用。 来自任何源的拒绝规则都会阻止该服务器,而服务器必须在每个定义了允许列表的层级都匹配某个允许列表条目。
如果允许列表或拒绝列表格式不正确(例如,JSON 无效),客户端会将策略视为空 allowedMcpServers 列表。 这会阻止除内置默认服务器之外的所有服务器。
如果客户端由于检索或设备发现错误而无法确定策略层,它将保留以前强制执行的策略。 有效策略可能会变得更加严格,但限制性不小。