代理 365 CLI develop-mcp 命令参考

在 Dataverse 环境中管理 MCP 服务器。 该 develop-mcp 命令提供了发布、取消发布、注册以及为 Dataverse 环境中使用 MCP 服务器授予代理权限的选项。

Note

develop-mcp approveAgent 365 CLI中的 , develop-mcp block, 和 develop-mcp package-mcp-server 命令被移除。 租户管理员现在在Microsoft管理中心执行服务器审批和阻断——待处理的请求会在请求代理页面进行审核。 CLI不再为管理中心提交生成MCP服务器包;管理员直接在管理中心接入和管理服务器。

所需的最低角色:因子命令而异

Syntax

a365 develop-mcp [command] [options]

选项

Option Description
-v、--verbose 启用详细日志记录
-?、-h、--help 显示帮助和使用情况信息

develop-mcp evaluate

根据科学最佳实践评估你的MCP服务器,以评估生产准备度。 该工具输出一份包含评分、解释和行动项目的综合评估报告。 该命令发现MCP服务器暴露的工具,运行一套确定性和AI评分的语义检查,并生成一份HTML报告,评分模式质量并列出优先改进的行动项。

a365 develop-mcp evaluate --server-url <server-url> [--auth-token <auth-token>] [options]

evaluate 选项

Option Description
-u、--server-url <server-url> Required. MCP服务器的可流式HTTP端点URL(通常以 /mcp结尾)。
--auth-token <auth-token> Optional. 只有当MCP服务器需要认证时才需要。 服务器的持有者令牌。 偏好环境 A365_MCP_AUTH_TOKEN 变量;命令行传递的令牌可用于处理列表和壳体历史。
-o、--output-dir <output-dir> 目录中存放检查表和报告文件。 默认使用当前目录(.)。
--eval-engine <eval-engine> 哪个本地编码代理负责语义检查评分:auto(默认;尝试GitHub Copilot,然后是Claude Code)、github-copilot、claude-code,或none(跳过AI评分,预先评分的检查表)。
-v、--verbose 启用详细日志记录。
-?、-h、--help 显示帮助和使用情况信息。

evaluate 示例

使用自动引擎选择评估本地服务器:

a365 develop-mcp evaluate --server-url "http://localhost:5000/mcp"

使用通过环境变量提供的令牌和写入子文件夹的项目,评估经过身份验证的服务器:

$env:A365_MCP_AUTH_TOKEN = "<bearer-token>"
a365 develop-mcp evaluate --server-url "https://my-mcp-server.contoso.com/mcp" --output-dir "./eval"

仅生成清单,然后使用自己的 LLM 对其评分:

a365 develop-mcp evaluate --server-url "https://my-mcp-server.contoso.com/mcp" --eval-engine none

强制使用特定的评分引擎:

a365 develop-mcp evaluate --server-url "http://localhost:5000/mcp" --eval-engine claude-code

evaluate 环境变量

使用以下环境变量提供认证功能,并可选择控制每个本地评分引擎使用的模型。

Environment variable Purpose
A365_MCP_AUTH_TOKEN MCP服务器的持有令牌,未被传递时 --auth-token 使用。 比旗帜更受青睐,因为它能让代币不在流程中被挂牌和壳牌历史记录。
A365_EVAL_COPILOT_MODEL 覆盖 GitHub Copilot 模型。 需要精确的模型编号,例如 claude-haiku-4.5。
A365_EVAL_CLAUDE_MODEL 覆盖Claude代码模型。 接受模型别名(例如 haiku)或完整的模型ID。

develop-mcp grant-agents-access

允许自带自带(BYO)MCP服务器访问缺少代理身份的代理身份。

a365 develop-mcp grant-agents-access --mcp-server-name <NAME> --agent-blueprint-id <GUID> [options]

最低要求权限:全局管理员(或拥有创建全租户OAuth2权限的其他角色)

用这个命令查找并修复那些无法调用自带自带(BYO)MCP服务器的代理身份,因为他们缺少 Tools.ListInvoke.All 该服务器的权限。 命令会列出指定蓝图中缺少权限的代理实例,然后让你选择授予哪些实例。

MCP服务器名称解析为Microsoft Entra应用,并 - BYO附加在名称后。 例如,ext_Learn1 解析 为 ext_Learn1 - BYO。 该授权本身是租户范围内委托的 OAuth2AllPrincipals 权限,适用于该应用的服务主体,因此适用于蓝图中所有当前和未来的代理实例,而不仅仅是运行时列出的实例。

你通常不会提前知道蓝图的GUID。 如果没有值或无效值,会--agent-blueprint-id打印出Microsoft第一方蓝图的名称和ID,方便查找。 通过 --help 会打印同样的名单。

命令报告代理实例缺失权限后,按回车 all 键授予所有显示的实例权限,按逗号分隔的数字列表(例如) 1,3授予特定实例,或按 回车 跳过授权。 在没有提示的情况下,将授予 --yes 传递给所有列出的实例,例如在脚本中。

如果多个Entra应用共享相同 <name> - BYO 显示名称,命令会列出所有匹配,并询问使用哪个匹配,而不是猜测。

grant-agents-access 选项

Option Description
--agent-blueprint-id <agent-blueprint-id> 用于检查代理实例的代理蓝图ID(GUID)。 如果你省略了这个选项或提供无效值,命令会打印第一方蓝图的名称和ID。
-s、--mcp-server-name <mcp-server-name> Required. MCP服务器名称。 Entra 应用的解析为 <name> - BYO。
--tenant-id <tenant-id> Azure AD 租户 ID。 默认当前的 Azure CLI context。
-y、--yes 在没有提示的情况下,将缺失权限授予所有列出的代理实例。
--device-code 使用设备代码认证代替交互式浏览器流程(Windows上的WAM代理)。 当WAM无法显示登录对话框时使用,比如嵌入式或远程终端。 在浏览器中打开 https://microsoft.com/devicelogin 。
--dry-run 报告哪些代理实例缺少权限但未授予权限。
-v、--verbose 启用详细日志记录
-?、-h、--help 显示帮助和使用情况信息

develop-mcp list-environments

列出可用于 MCP 服务器管理的所有 Dataverse 环境。

a365 develop-mcp list-environments [options]

此命令显示可在其中管理 MCP 服务器的所有 Dataverse 环境。

list-environments 选项

Option Description
--dry-run 显示在不执行的情况下将执行的作
-v、--verbose 启用详细日志记录
-?、-h、--help 显示帮助和使用情况信息

develop-mcp list-servers

列出特定 Dataverse 环境中的 MCP 服务器。

a365 develop-mcp list-servers [options]

该命令列出目前部署在指定Dataverse环境中的所有MCP服务器。

list-servers 选项

Option Description
-e、--environment-id <environment-id> Dataverse 环境 ID
--dry-run 显示在不执行的情况下将执行的作
-v、--verbose 启用详细日志记录
-?、-h、--help 显示帮助和使用情况信息

develop-mcp publish

将 MCP 服务器发布到 Dataverse 环境。

a365 develop-mcp publish [options]

使用此命令将 MCP 服务器发布到指定的 Dataverse 环境。

Important

发布一个MCP服务器不允许它。 发布只会将服务器提交给租户,并生成一个待审批请求。 在任何代理使用服务器之前,租户管理员必须在 Microsoft 365 管理中心 的请求工具页面上批准该服务器。 在管理员批准请求之前,服务器对代理保持不可用。 当命令成功时,CLI会打印提醒,要求租户管理员批准服务器。

发布时,CLI会在租户中创建一个<server-name>-PublicClients Microsoft Entra应用注册。 该应用持有客户端主机(如 Visual Studio Code 和 Microsoft Copilot CLI)用于调用已发布 MCP 服务器的 OAuth 权限。 由于该命令创建应用注册,运行CLI的账户必须拥有Application.ReadWrite.All Microsoft Graph权限。 没有它运行 publish 会失败。

Note

提供 --publisher-name 自定义(用户创建)MCP服务器。 该值写入已发布包的开发者元数据,且这些服务器是必需的。 对于第一方Microsoft拥有服务器(例如msdyn_DataverseMCPServer)则忽略了这一点,这些服务器总是以“Microsoft”发布。 当你省略时,CLI会交互式地提示; --yes 在CI或脚本化上下文中,无需提示即可通过发布。

publish 选项

Option Description
-e、--environment-id <environment-id> Dataverse 环境 ID
-s、--server-name <server-name> 要发布的 MCP 服务器名称
-a、--alias <alias> MCP 服务器的别名
-d、--display-name <display-name> MCP 服务器的显示名称
-p、--publisher-name <publisher-name> Publisher 名称写入已发布的包元数据。 自定义(用户创建)MCP服务器必不可少;被第一方Microsoft自有服务器忽视。 省略时会互动提示。
-y、--yes 跳过互动式的“继续发布吗? (y/N)" confirmation. 在人工干预或脚本化情境中使用。
--dry-run 显示在不执行的情况下将执行的作
-v、--verbose 启用详细日志记录
-?、-h、--help 显示帮助和使用情况信息

develop-mcp unpublish

从 Dataverse 环境取消发布 MCP 服务器。

a365 develop-mcp unpublish [options]

使用此命令从指定的 Dataverse 环境中删除 MCP 服务器。

unpublish 选项

Option Description
-e、--environment-id <environment-id> Dataverse 环境 ID
-s、--server-name <server-name> 用于取消发布的 MCP 服务器名称
--dry-run 显示在不执行的情况下将执行的作
-?、-h、--help 显示帮助和使用情况信息

develop-mcp register-external-mcp-server

用Entra、外部OAuth、API密钥或无认证注册外部MCP服务器。

a365 develop-mcp register-external-mcp-server [options]

使用该命令向租户注册一个外部托管的(第三方)MCP服务器。 该命令创建平台所需的 Microsoft Entra 应用注册,调用 Agent 365 平台添加 MCP 服务器,并为新应用注册配置重定向 URI 和 API 权限。

服务器名称必须以 ext_ 前缀开头,且长度最多为20个字符,例如 ext_MyServer。 工具名称必须与远程MCP服务器暴露的名称完全一致。 名称不匹配会导致工具调用在运行时失败。

你可以通过三种方式提供参数:

  • 把它们当作命令行选项传递。
  • 提供一个带有 --input-file的 JSON 文件。 命令行选项覆盖文件中的数值。 文件结构请参见 register-external-mcp-server-sample.json CLI模板。
  • 省略任何需要交互提示的值。

注册成功后,请租户管理员批准新的MCP服务器,确保代理可以使用。 如果你注册了 ExternalOAuth,也将显示的重定向 URI 添加到你的外部 IDP 应用中。

Important

如果注册失败,而 Microsoft Entra 应用注册创建后,应用不会自动回滚。 在重新尝试前,先在Azure门户手动删除它们。

register-external-mcp-server 选项

某些选项仅适用于特定认证类型,如描述栏所述。

Option Description
-s、--server-name <server-name> MCP服务器名称。 例如,必须以 ext_ 最多20字符开头 ext_MyServer
-u、--server-url <server-url> 远程MCP服务器URL。 必须是有效的 HTTP 或 HTTPS URL
-a、--auth-type <auth-type> 认证类型: EntraOAuth, ExternalOAuth, APIKey, 或 NoAuth
--publisher <publisher> Publisher 名称(用于包元数据)
--description <description> 服务器描述(用于包元数据)
--tools <tools> 例如,该服务器暴露的工具名称列表被逗号分隔 tool1,tool2,tool3
-f、--input-file <input-file> 指向带有注册参数的JSON文件的路径
--remote-scopes <remote-scopes> 例如 api://{appId-guid}/{scopeName},远程MCP服务器的示域。 与 EntraOAuth 配合使用
-t、--tenant-id <tenant-id> Entra租户ID用于应用注册。 默认归 az login 当前租户
--service-tree-id <service-tree-id> 用于Entra应用注册的ServiceTree ID。 Microsoft企业租户中必备
-l、--secret-lifetime-months <months> 在创建的Entra应用中生成的客户端秘密,生命周期以月为单位(1-24)。 默认为24个月(2年)。 如果你的租户保单要求更高上限更短,可以把租户的价值设定在低于上限的 appManagementPolicies 范围内
--idp-authorization-url <url> 外部OAuth授权URL。 当 --auth-type 为 ExternalOAuth 时,为必填项
--idp-token-url <url> 外部OAuth令牌URL。 当 --auth-type 为 ExternalOAuth 时,为必填项
--idp-scopes <scopes> 外部OAuth示波器。 当 --auth-type 为 ExternalOAuth 时,为必填项
--idp-client-id <client-id> 外部OAuth客户端ID。 当 --auth-type 为 ExternalOAuth 时,为必填项
--idp-client-secret <client-secret> 外部OAuth客户端秘密。 当 --auth-type 为 ExternalOAuth 时,为必填项
--api-key-location <location> API密钥位置: Header 或 Query。 当 --auth-type 为 APIKey 时,为必填项
--api-key-name <name> API 键参数或头部名称,例如 X-API-Keytoken或 。 当 --auth-type 为 APIKey 时,为必填项
--dry-run 显示在不执行的情况下将执行的作
-v、--verbose 启用详细日志记录
-?、-h、--help 显示帮助和使用情况信息