Windows 365 for Agentsは、エージェント セッション ライフサイクルにマップされる補完的なサーフェスを通じて機能を公開します。
- 管理用の Microsoft Graph API 。 IT 管理者とエージェント作成者は、これらの API を使用してプール容量をプロビジョニングおよび管理します。
- ランタイム セッション管理用のセッション API をWindows 365 for Agentsします。 パートナー アプリケーションはこの API を呼び出してクラウド PC をチェックし、作業が完了したら解放します。
- セッション内操作のためのモデル コンテキスト プロトコル (MCP) ツール。 AI エージェントは、セッションごとの MCP エンドポイントを介してこれらのツールを呼び出します。 画面共有の場合、パートナー アプリケーションは、人間の代わりに画面共有アクションを呼び出します。
これらのサーフェスは、プールのプロビジョニング、クラウド PC の取得、作業の実行、必要に応じて監視または支援をカバーします。
API ドキュメントの完全な一覧と入門ガイドについては、github ドキュメントWindows 365 for Agentsを参照してください。
コンピューターの作成: 管理
Microsoft Graph API 側では、Computer-Create プレーンでは、W365A Graph APIと W365 管理ポータルが使用されます。 これらのサーフェスを通じて、管理者と独立系ソフトウェア ベンダー (ISV) は次のことができます。
- クラウド PC エージェント プールをプロビジョニングします。
- ポリシーとイメージを構成します。
- 信頼されたパートナーの呼び出し元を登録します。
- プールの数をスケーリングします。
- MAC 課金を使用して測定をアタッチします。
クラウド PC エージェント プールの詳細については、Graph APIドキュメントを参照してください。
Computer-Get: セッション のチェックアウトとチェックイン
Computer-Get プレーンは、(Microsoft Graph ではなく) Windows 365 for Agents セッション API によって提供されるパートナー アプリケーション用の小さなランタイム コントロール サーフェイスです。
チェックアウト はクラウド PC を予約し、セッション ID と接続 URL を返します。
POST /api/pools/{poolId}/sessions?api-version=2.0
チェックアウトが成功すると、次の結果が返されます。
-
sessionId: セッション識別子 -
status: プロビジョニング結果 (例:Succeeded) -
computerUrl: MCP ツール呼び出しのベース URL (追加/mcp) -
screenshareUrl: 画面共有アクションのベース URL -
connectivityUrl:null可能性があります。それに依存しません。 MCP にはcomputerUrlを使用し、画面共有にはscreenshareUrlを使用します。
デバイスが割り当てられている間、チェックアウトには最大 30 秒かかる場合があります。
x-ms-sessionId ヘッダー (UUID v4) をべき等キーとして使用して、再試行によって重複するセッションが割り当てられないようにします。
セッションの種類 は、チェックアウト時に渡すヘッダーによって決定されます。
| Kind | ヘッダー | 用途 |
|---|---|---|
| HumanUser (既定値) | user-object-id |
Standard対話型セッションが AAD ID にバインドされています。 |
| Agentic |
x-ms-authorization-auxiliary (エージェント ID トークン) + user-object-id (エージェント ユーザー ID) |
エージェント駆動型セッション。 補助トークンは、テナントでプロビジョニングされた IDENTITY RM サービスによって発行されたエージェント ID トークンであり、アクセスを要求する特定のエージェント ("Sales Agent" など) を識別します。 |
Checkin は セッションを解放します。
DELETE /api/sessions/{sessionId}?api-version=2.0
チェックインには、パス内のsessionIdに一致するx-ms-sessionId ヘッダー (UUID v4) が必要です。 それは火と忘れです: 204 No Content 応答は、リリースが受け入れられ、クリーンアップが非同期的に完了したことを意味します。 アイドル 状態のセッションは、30 分の非アクティブ (MCP または画面共有要求はアクティビティとしてカウントされます) 後に自動的に削除されますが、パートナー アプリケーションは、作業が完了したときに常にセッションを明示的にチェックする必要があります。
Computer-Do: セッション内操作
パートナー アプリケーションがクラウド PC を取得した後、エージェントは MCP ツールを使用して操作します。 これらのツールは開いているモデル コンテキスト プロトコルに従います。そのため、プロトコルをサポートするすべてのエージェントは、カスタム統合なしでツールを検出して呼び出すことができます。
すべての MCP トラフィックは、セッションの MCP エンドポイントを通過します。これは、チェックアウト時に返されるcomputerUrlに/mcpを追加することによって形成されます。
POST {computerUrl}/mcp?api-version=1.0
すべての要求には、URL にコンピューター ID と一致する x-ms-computerId ヘッダーが含まれている必要があります。 各 POST は 1 つの JSON-RPC メッセージを送信し、1 つの応答を返します。
MCP セッション ライフサイクル。 クライアントは、ツールを呼び出す前に MCP 初期化ハンドシェイクを完了する必要があります。
- サーバー機能を受け取るために
initialize要求を送信します。 -
initialized通知を送信します (応答は必要ありません)。 - 発行ツールは、使用可能なツールを検出するために
tools/listを呼び出すか、tools/callを呼び出します。
初期化は、セッションごとに 1 回必要です。 MCP プレーンでは、デスクトップ操作 (マウス、キーボード、スクリーンショット キャプチャ)、ウィンドウ管理、コマンド実行、ブラウザーオートメーション、UI アクセシビリティ機能について説明します。
ツールとそのパラメーター スキーマの完全なカタログについては、「MCP Server のWindows 365 for Agents」を参照してください。
Computer-See/Take-Control: 人間の監督
Screenshare SDK を使用すると、パートナー アプリケーションはエージェント アクティビティのリアルタイムの人間の観察を独自の UI に直接埋め込むことができます。 エージェントのクラウド PC を WebRTC 経由でストリーミングし、必要に応じてマウスとキーボードの入力をセッションにリレーします。 SDK は、すべてのビデオ ストリーミング、入力リレー、および画面共有 API 呼び出しを処理する iframe をページ内に作成するため、アプリケーションがストリーミング スタックと直接対話することはありません。
ビューアーは、チェックアウト時に返された screenshareUrl に接続します。 個別の画面共有エンドポイントの構築は必要ありません。SDK は、指定したベース URL (computerUrl) とコンピューター ID から呼び出しを派生させます。
統合フロー
パートナー アプリケーションはセッションをチェックアウトし、CDN から SDK を読み込み、返された computerUrl トークンとベアラー トークンを ScreenShareViewerに送信します。 そこから iframe が引き継ぎ、ARI 画面共有 API を呼び出し、代わりにビデオ呼び出しに参加します。
Partner application ARI service
│ │
│ POST /api/pools/{poolId}/sessions │
│ ──────────────────────────────────────→│
│ │
│ 200 OK { screenshareUrl: "…" } │
│ ←──────────────────────────────────────│
│ │
│ Load screenshare-embed.js from CDN │
│ new ScreenShareViewer({ container, │
│ baseUrl, computerId }) │
│ viewer.connect(bearerToken) │
│ ─── postMessage to iframe ────────────→│
│ │
│ iframe calls ARI screenshare API │
│ iframe joins ACS video call │
│ live video streams back │
│ ←──────────────────────────────────────│
SDK ディストリビューション
CDN から screenshare-embed.js ビルドを読み込みます。
| CDN URL |
|---|
https://packages.global.cloudinferenceplatform.azure.com/screenshare-sdk/latest/screenshare-embed.js |
Viewer メソッド
ScreenShareViewer インスタンスは、セッションの完全なライフサイクル、接続、オプションの制御ハンドオフ、トークンの更新、および破棄を公開します。
| メソッド | 説明 |
|---|---|
connect(bearerToken) |
画面共有セッションを開始します。 Promise を返します。 |
takeControl() |
マウスとキーボードのコントロールを要求します (対話型モードのみ)。 最新の呼び出し元が常に優先します。拒否はありません。 |
releaseControl() |
コントロールを解放し、ビューアーを表示専用に返します。 |
updateToken(bearerToken) |
セッションを再起動せずにベアラー トークンを置き換えます。
TOKEN_EXPIRED エラーが発生した場合に使用します。 |
stop() |
セッションを終了し、DOM から iframe を削除します。 インスタンスを再利用することはできません。再接続する新しい ScreenShareViewer を作成します。 |
エラー応答
エラーは、コードとメッセージを含む error イベントを通じて表示されます。 各コードは、特定の回復アクションにマップされます。
| コード | 意味 | アクション |
|---|---|---|
TOKEN_EXPIRED |
ベアラー トークンの有効期限が切れています (401)。 |
viewer.updateToken(newToken) を呼び出します。 |
START_FAILED |
ARI Start API が失敗しました。 |
computerIdとプールの登録を確認します。 |
JOIN_FAILED |
ACS 呼び出し参加に失敗しました。 | 新しいトークンを使用して再試行します。 |
RECONNECT_FAILED |
自動再接続が終了しました (3 回)。 |
viewer.stop()を呼び出し、新しいビューアーを作成し、新しいトークンで再接続します。 |
IFRAME_LOAD_FAILED |
Iframe は 10 秒以内に応答しませんでした。 | ブラウザーから baseUrl に到達可能であることを確認します。 |
MODE_RESTRICTED |
viewOnly モードで発行された制御コマンド。 |
mode: 'interactive'を使用してビューアーを作成します。 |
クイック スタート
ビューアーをコンテナーにマウントし、既にチェックアウトされているセッションに接続する最小限のページ。 チェックアウト応答 (「Computer-Get」を参照) とベアラー トークンが既に存在することを前提としています (「認証」を参照)。
<!DOCTYPE html>
<html>
<head><title>Screen Share</title></head>
<body>
<div id="viewer" style="width: 100%; height: 600px;"></div>
<script src="https://packages.global.cloudinferenceplatform.azure.com/screenshare-sdk/latest/screenshare-embed.js"></script>
<script>
// Assumes you already have the checkout response (see Computer-Get)
// and a bearer token (see Authentication).
var computerUrl = checkoutResponse.computerUrl;
// computerId is embedded in computerUrl as /computers/{computerId}
var computerId = computerUrl.split('/computers/')[1];
var viewer = new ScreenShareViewer({
container: document.getElementById('viewer'),
baseUrl: computerUrl,
computerId: computerId
});
viewer.on('error', function (code, msg) {
console.error(code, msg);
});
viewer.connect(bearerToken);
</script>
</body>
</html>
Surface の概要
| Surface | 平面 | エンドポイント | によって呼び出されます | 用途 |
|---|---|---|---|---|
| Graph API | Computer-Create | W365A Graph APIおよび W365 管理ポータル | IT 管理者または ISV | プールを整形して維持します。 |
| セッション API | Computer-Get |
POST /api/pools/{poolId}/sessions (チェックアウト) |
パートナー アプリケーション | クラウド PC を予約します。 |
| セッション API | Computer-Get |
DELETE /api/sessions/{sessionId} (チェックイン) |
パートナー アプリケーション | クラウド PC を解放します。 |
| Mcp | Computer-Do | POST {computerUrl}/mcp |
AI エージェント | クラウド PC を操作します。 |
| Screenshare SDK | Computer-See、Computer-TakeControl |
ScreenShareViewer (CDN screenshare-embed.jsから) |
パートナー アプリ(人間に代わって) | 観察し、協力します。 |
組み合わせる方法
サーフェスは順番に動作し、呼び出し元間で明確なハンドオフが行われます。
- 管理者とエージェント作成者は 、Computer-Create を使用してプールをプロビジョニングします。
- パートナー アプリケーションは Computer-Get で Checkout を呼び出して、特定のエージェント作業用にクラウド PC を予約し、要求ヘッダーを介してセッションの種類を指定します。
- AI エージェントは、
{computerUrl}/mcpに対して MCP セッションを初期化し、 Computer-Do ツールを使用してクラウド PC を駆動します。 ほとんどの呼び出しはこのプレーンを通過します。 - 必要に応じて、パートナー アプリケーションは、観察または引き継ぐ人間の代わりに
{screenshareUrl}に対して Computer-See アクションを呼び出します。 - パートナー アプリケーションは、Computer-Get で Checkin を呼び出して、作業が完了したときにクラウド PC を解放します。 30 分間アイドル状態のままのセッションは自動的に削除されます。
次の手順
- MCP サーバーのWindows 365 for Agentsの詳細については、こちらをご覧ください。
- Windows 365 for Agents アーキテクチャについて説明します。
- エージェント セッションのライフサイクルについて説明します。