托管插件与 MCP
限制插件市场和服务器身份,理解空列表、逐条锁定与跨来源匹配。
市场来源、插件启用状态和 MCP 服务器允许范围是三个管理对象。允许安装某插件,不等于其服务器可以绕过 MCP 策略。
插件和市场
| 配置 | 用途 |
|---|---|
| enabledPlugins | 以 PLUGIN@MARKETPLACE 为键,true 要求启用,false 要求禁用 |
| extraKnownMarketplaces | 提供可用市场及来源,可指定 autoUpdate |
| strictKnownMarketplaces | 将安装限制在指定市场列表 |
extraKnownMarketplaces 支持 github、git、directory 来源。autoUpdate 明确 true / false 时,用户不能改变该市场的自动更新决定;仍须先满足 strictKnownMarketplaces。
strictKnownMarketplaces 空数组锁定所有市场,包括内置市场,不表示“只限制用户添加的市场”。托管 enabledPlugins 与 extraKnownMarketplaces 按条目合并,固定条目不能本地禁用或重指向,其余个人条目仍可管理。
MCP 匹配
{
"allowedMcpServers": [
{ "serverUrl": "https://mcp.example.com/*" },
{ "serverCommand": ["npx", "-y", "@example/mcp-server"] }
],
"deniedMcpServers": [
{ "serverName": "untrusted-server" }
]
}替换为实际服务器。每个条目只能有一个 matcher。
- serverUrl 匹配远程 HTTP / SSE,支持星号;scheme、host 忽略大小写,path 区分大小写。
- serverCommand 精确匹配 stdio 可执行命令及参数顺序,不支持命令通配。
- serverName 精确匹配用户赋予的标签,适合标记但不足以稳定验证服务身份。
CLI 专门参考要求允许列表 serverName 为字母数字、下划线和连字符;拒绝列表可为任意非空名。有对应 URL / command matcher 时,该类型服务器必须按它匹配,不能再用一个容易重命名的标签绕过。
允许与拒绝
不设置 allowedMcpServers 不加允许列表限制;空数组拒绝所有非默认服务器。deniedMcpServers 不设或空数组不新增拒绝。deny 永远优先。
多个来源的 allowed 取交集,denied 取并集。可信第一方内置服务器豁免这些列表,不能用这里的规则禁止它们。不要把空数组与未设置混为一谈。
匹配前 URL 会规范化,包括 scheme / host 小写、Punycode、移除默认端口、片段和 DNS 尾点;authority 中的通配不会跨 / 扩展到路径。命令变量展开与远程 URL 规范化是不同过程,身份规则应以实际连接定义核对。
与企业注册表区别
设备级 allowedMcpServers / deniedMcpServers 独立于企业注册表允许列表。后者由 CLI 对非默认服务器计算指纹并向企业服务验证;服务不可用时失败关闭。两种管理能力可同时存在,应分别排查阻止原因。
支持矩阵显示 cloud agent 不支持这两个托管 MCP 列表键,不能直接将 CLI 配置套到云端;云端 MCP 要按它自身的配置和策略章节处理。
企业允许列表的完整判定、格式错误和获取失败处理,见托管允许列表。私有Registry参考仍明确名称/ID匹配可被配置修改绕过,不能因CLI执行了指纹验证请求就认定其具备不可绕过的隔离保证。