Agent 365 CLI develop-mcp 指令參考

管理 Dataverse 環境中的 MCP 伺服器。 此 develop-mcp 指令提供發佈、取消發佈、註冊及授予 MCP 伺服器代理權限的選項,供 Dataverse 環境中使用。

Note

Agent 365 的 CLI 不再包含 develop-mcp approve、 develop-mcp block和 develop-mcp package-mcp-server 指令。 租戶管理員現在可在 Microsoft 管理中心執行伺服器審核與封鎖——待處理的請求會在 Requested Agents 頁面進行審查。 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時使用。 使用這個變數代替旗標,因為它能避免讓權杖不在程序列表和 shell 歷史中。
A365_EVAL_COPILOT_MODEL 覆寫 GitHub Copilot 模型。 需要精確的模型 ID,例如 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。 該授權本身是租戶範圍內AllPrincipals委託的 OAuth2 授權,適用於該應用程式的服務主體,因此適用於藍圖中所有現有及未來的代理實例,而非僅執行時列出的。

你通常不會事先知道藍圖的 GUID。 如果沒有值或無效的 passing--agent-blueprint-id,會印出 Microsoft 第一方藍圖名稱和 ID,方便你找到它。 通過 --help 會列印相同的清單。

指令回報代理實例缺少權限後,按 Enter all 鍵可授予所有顯示的實例權限,並以逗號分隔的數字列表(例如) 1,3授權特定實例,或按 Enter 跳過授權。 在沒有提示的情況下,像腳本中,可以直接轉 --yes 為授權到每個列出的實例。

如果多個 Entra 應用程式共用相同 <name> - BYO 顯示名稱,指令會列出所有匹配,並詢問使用哪一個,而非猜測。

這個指令不會使用在 a365.config.json. 取而代之的是,它以 Microsoft Graph 命令列工具應用程式14d82eec-204b-4c2f-b7e8-296a70dab67e()登入,並請求以下 Microsoft Graph 委派的範圍:

  • Application.Read.All
  • AgentIdentity.Read.All
  • DelegatedPermissionGrant.ReadWrite.All

第一次在租戶中執行該指令時,你會看到管理員同意提示,針對這些範圍。 全域管理員或特權角色管理員必須將這些範圍授予 Microsoft Graph 命令列工具企業應用程式。 經同意後,每次運行只需一次登入。 如果指令無法取得標記,錯誤訊息會指定該應用程式及指令請求的範圍。

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 租用戶識別碼。 預設為當前 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 環境識別碼
--dry-run 展示不執行的情況下會做什麼
-v,--verbose 啟用詳細日誌記錄
-?、-h、--help 顯示說明與使用資訊

develop-mcp publish

將 MCP 伺服器發佈到 Dataverse 環境。

a365 develop-mcp publish [options]

使用此指令將 MCP 伺服器發佈到指定的 Dataverse 環境。

Important

發佈 MCP 伺服器不允許。 發佈只會將伺服器提交給你的租戶,並產生一個待審核的請求。 在任何代理人員使用伺服器之前,租戶管理員必須在 Microsoft 365 系統管理中心 的請求工具頁面上核准。 在管理員批准請求前,伺服器對代理者保持不可使用。 當指令成功時,CLI 會印出提醒,請租戶管理員批准伺服器。

當您發佈時,CLI 會在租戶中建立以下 Microsoft Entra 應用程式註冊:

App registration Purpose When created
<server-name>-PublicClients 持有用戶端主機(如 Visual Studio Code 與 Microsoft Copilot CLI)用來呼叫已發佈 MCP 伺服器的 OAuth 權限。 CLI 為每台伺服器建立這個應用程式。
<server-name>-A365Proxy 它作為一個機密客戶端應用程式,並有客戶端秘密。 CLI 會將應用程式的憑證轉發給平台,平台利用這些憑證建立伺服器的 Power Platform 連接器。 CLI 僅為自訂(非 Dataverse)MCP 伺服器建立此應用程式。 第一方 Dataverse 伺服器,例如 ,會跳過這個應用程式,因為平台會 msdyn_DataverseMCPServer先用自己的應用程式來呈現。

由於指令會建立應用程式註冊,執行 CLI 的帳號必須擁有 Application.ReadWrite.All Microsoft Graph 權限。 沒有這個許可,就會 publish 失敗。 如果發佈失敗,CLI 會刪除它所建立的應用程式註冊。 如果你取消發佈伺服器,請手動刪除這些應用程式註冊。

在用政策限制用戶端秘密壽命的 appManagementPolicies 租戶中,請將 --secret-lifetime-months 客戶端秘密設定在其期限 <server-name>-A365Proxy 內的壽命。

Note

提供 --publisher-name 自訂(使用者創建)MCP 伺服器。 該值會寫入已發佈套件的開發者元資料,且是這些伺服器所必需的。 對於第一方Microsoft擁有的伺服器(例如 msdyn_DataverseMCPServer)會忽略,這些伺服器總是以「Microsoft」形式發佈。 當你省略時,CLI 會互動式地提示;在 CI 或腳本化情境中,無需提示即可通過 --yes 發佈。

publish 選項

Option Description
-e,--environment-id <environment-id> Dataverse 環境識別碼
-s,--server-name <server-name> 發佈的 MCP 伺服器名稱
-a,--alias <alias> MCP 伺服器的別名
-d,--display-name <display-name> MCP 伺服器的顯示名稱
-p,--publisher-name <publisher-name> Publisher 名稱寫入已發佈套件的元資料。 自訂(使用者創建)MCP 伺服器所必需;被第一方 Microsoft 擁有的伺服器忽略。 省略時會互動提示。
--service-tree-id <service-tree-id> ServiceTree ID 用於 Microsoft Entra 應用程式註冊,該 publish ID。 這是 Microsoft 企業租戶的必備條件。
-l,--secret-lifetime-months <months> Microsoft Entra 應用程式中<server-name>-A365Proxy客戶端秘密的壽命以月份計(1-24)。 若省略,Microsoft Entra ID 會套用約 2 年的預設壽命。 如果你的 appManagementPolicies 房客保單規定最高限額較短,請設定在該限額內的價值。
-y,--yes 跳過互動式的「繼續發佈嗎? (y/N)" confirmation. 在 CI 或腳本情境中使用。
--dry-run 展示不執行的情況下會做什麼
-v,--verbose 啟用詳細日誌記錄
-?、-h、--help 顯示說明與使用資訊

develop-mcp unpublish

從 Dataverse 環境中卸載 MCP 伺服器。

a365 develop-mcp unpublish [options]

使用此指令將 MCP 伺服器從指定的 Dataverse 環境中移除。

unpublish 選項

Option Description
-e,--environment-id <environment-id> Dataverse 環境識別碼
-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 個字元開頭,最多 20 個字元 ext_MyServer
-u,--server-url <server-url> 遠端 MCP 伺服器的網址。 必須是有效的 HTTP 或 HTTPS URL
-a,--auth-type <auth-type> 認證類型:EntraOAuth、、ExternalOAuthAPIKey、或NoAuth
--publisher <publisher> Publisher 名稱(用於套件元資料)
--description <description> 伺服器描述(用於封裝元資料)
--tools <tools> 例如,該伺服器暴露的工具名稱清單會以逗號分隔 tool1,tool2,tool3
-f,--input-file <input-file> 指向帶有註冊參數的 JSON 檔案路徑
--remote-scopes <remote-scopes> 遠端 MCP 伺服器的範圍,例如 api://{appId-guid}/{scopeName}。 搭配 EntraOAuth 使用
-t,--tenant-id <tenant-id> 用 Entra 租戶 ID 來註冊應用程式。 預設為現有 az login 租戶
--service-tree-id <service-tree-id> ServiceTree ID 用於 Entra 應用程式註冊。 Microsoft 企業租戶的必備功能
-l,--secret-lifetime-months <months> 在建立的 Entra 應用程式中產生的客戶端秘密,壽命以月為單位(1 到 24)。 預設為24個月(2年)。 如果你的房客保單規定最高限額較短,請將價值設定低於 appManagementPolicies 上限
--idp-authorization-url <url> 外部 OAuth 授權網址。 當 --auth-type 為 ExternalOAuth 時為必填
--idp-token-url <url> 外部 OAuth 令牌網址。 當 --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 顯示說明與使用資訊