关于允许列表
可以定义允许列表和拒绝列表来控制企业中的哪些 MCP 服务器用户可以在客户端中 Copilot 运行。 这些列表定义在贵企业的 managed-settings.json 中,而该 managed-settings.json 可以存储在 GitHub 上。
有关详细信息,请参阅“公司中的 MCP 服务器使用情况”。
先决条件
- 要运行任何 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 客户端按以下顺序评估 MCP 服务器:
- 始终允许内置默认服务器,例如内置的 GitHub MCP 服务器。
- 如果服务器与
deniedMcpServers中的任何条目匹配,则阻止该服务器。 - 如果存在
allowedMcpServers,且它与某个条目不匹配,则阻止该服务器。 - 如果服务器的 URL 或命令包含未解析的变量(例如
${VARIABLE},或者$VARIABLE,客户端无法验证服务器),则阻止服务器。
如果客户端从多个 managed-settings.json 部署方法接收设置,则所有设置都适用。 来自任何源的拒绝规则会阻止服务器,服务器必须与定义服务器的每个层的允许列表条目匹配。
如果允许列表或拒绝列表格式不正确(例如,JSON 无效),客户端会将策略视为空 allowedMcpServers 列表。 这会阻止除内置默认服务器之外的所有服务器。
如果客户端由于检索或设备发现错误而无法确定策略层,它将保留以前强制执行的策略。 有效策略可能会变得更加严格,但限制性不小。