こんにちは!ネットワールドSEの殿貝です。
今回はAWSが新しく2026年5月にプレビュー提供を開始した「WorkSpaces Agent Access」を動かしてみました。
AIエージェントに専用のWindowsデスクトップを渡して、スクリーンショットを見て→クリック/入力する、を繰り返すことで業務アプリを自動操作させる、というサービスです。
実際にエージェントがデスクトップを認識して操作できるところまで確認できたので、アーキテクチャや動作の仕組みを整理してみます。
APIが無い業務アプリでも、画面を見てクリック・入力できるので、レガシーシステムの自動化に使えます。内部的にはWorkSpaces Applications(旧AppStream 2.0)の上で動いています。
全体アーキテクチャ
全体像はこんな感じです。
┌───────────────────────────────────────────────────┐
│ Agent (Python / Strands Agents SDK) │
│ │
│ ┌──────────────┐ ┌─────────────────────────┐ │
│ │ Bedrock │ │ MCP Client │ │
│ │ Claude │◄──►│ (mcp-proxy-for-aws) │ │
│ │ Sonnet 4.5 │ │ │ │
│ └──────────────┘ └────────────┬────────────┘ │
└───────────────────────────────────┼───────────────┘
│ SigV4 署名 + Streaming URL
▼
┌───────────────────────────────────────────────────┐
│ AWS マネージド MCP サーバー │
│ https://agentaccess-mcp.{region}.api.aws/mcp │
│ │
│ ツール: screenshot / click / type_text / scroll │
└───────────────────────────────────┬───────────────┘
│
▼
┌───────────────────────────────────────────────────┐
│ WorkSpaces Applications Fleet │
│ Windows Server インスタンス (1280x720) │
│ │
│ [Firefox] [Notepad++] [OpenOffice] [業務アプリ] │
└───────────────────────────────────┬───────────────┘
│
▼
┌───────────────────────────────────────────────────┐
│ S3 バケット (スクリーンショット保管・監査) │
└───────────────────────────────────────────────────┘
ポイントは、エージェントと Windows 環境の間に MCP (Model Context Protocol) サーバーが挟まっていることです。エージェントは MCP 経由で「スクショ撮って」「ここクリックして」「このテキスト入力して」という操作を送り、Windows 側の結果を受け取ります。
認証は AWS の SigV4 署名で、Streaming URL をヘッダーに乗せることでセッションを特定します。
エージェントの動作ループ
エージェントがデスクトップを操作する流れを具体的に書くとこうなります。
1. ユーザーが指示を出す
「Notepad++を開いてHello Worldと入力して」
2. LLM がまずスクショを撮ることを決める
→ Tool: screenshot
3. スクショ画像 (PNG) が返ってくる
→ LLM の Vision 能力で画面を分析
→ 「デスクトップにNotepad++のアイコンがある。座標は (73, 168) あたり」
4. LLM がダブルクリックを決める
→ Tool: double_click(73, 168)
5. 再度スクショを撮る
→ 「Notepad++が起動した。エディタ領域が見える」
6. テキスト入力
→ Tool: type_text("Hello World")
7. 確認のスクショ
→ 「Hello Worldが入力されている。完了」
8. ユーザーに結果報告
スクショ→判断→操作→スクショ→判断→... のループを、LLMが自律的に回します。座標の推定もLLMのVision能力に依存しているのが面白いところです。
また、今回の検証で利用したAWSマネージドMCPサーバは、以下の機能を利用できます。
| ツール | 機能 |
|---|---|
| screenshot | スクリーンショット取得 |
| left_click / double_click / right_click / triple_click | クリック操作 |
| type_text | テキスト入力 |
| key / hold_key | キーボード操作 |
| scroll | スクロール |
| move_pointer | マウス移動 |
| left_click_drag / left_mouse_down / left_mouse_up | ドラッグ操作 |
| middle_click | 中クリック |
インフラ構成
今回構築した環境は以下の通りです。
| レイヤー | リソース |
|---|---|
| ネットワーク | VPC, 2 Public Subnets, Internet Gateway, Security Group |
| コンピュート | AppStream Fleet (Always-On, stream.standard.medium, DESKTOP mode) |
| アプリ配信 | AppStream Stack (AgentAccessConfig: COMPUTER_VISION + COMPUTER_INPUT) |
| ストレージ | S3 バケット (スクリーンショット保管, 7日自動削除) |
| 認証 | IAM Role + Policy (agentaccess-mcp:* / appstream:CreateStreamingURL) |
| AI基盤 | Amazon Bedrock (Claude Sonnet 4.5, JP Inference Profile) |
| 接続 | AWS マネージド MCP サーバー |
Fleet の設定で重要なのは --stream-view DESKTOP です。これを指定しないとアプリ配信モードになり、エージェントにはデスクトップが見えません。
技術スタック
| コンポーネント | 技術 |
|---|---|
| Agent Framework | Strands Agents SDK (Python) |
| LLM | Amazon Bedrock / Claude Sonnet 4.5 |
| デスクトップ操作 | WorkSpaces Agent Access (Preview) |
| プロトコル | Model Context Protocol (MCP) over Streamable HTTP |
| 認証 | AWS SigV4 (service name: agentaccess-mcp) |
| MCP Transport | mcp-proxy-for-aws |
制約・制限事項 (2026年6月時点)
現時点ではプレビュー機能のため、いくつかの制約があります。
| 制約 | 内容 |
|---|---|
| SLA | なし(プレビューのため仕様変更の可能性あり) |
| 画面解像度 | 1280x720 のみ |
| OS | Windows Server イメージのみ |
| ドメイン参加 | 非対応 |
| マルチセッション | 非対応 |
| Elastic Fleet | 非対応 |
| VPC エンドポイント | 非対応 |
| 人間の画面観察 | AI専用セッションを人間がリアルタイムで見る標準手段なし |
また、Computer Use 系全般の課題として、スクリーンショットのトークン消費が大きい点があります。1280x720 の PNG で 1500〜5000 input tokens / 枚程度。1セッション10アクションなら 35,000 input tokens 程度になるので、コスト制御(max_tokens やループ回数制限)はしておいた方が安心です。
やってみた:OpenOffice Calc でデータ入力 + SUM関数
実際にエージェントを動かしてみます。
なお、公式にサンプルコードが公開されており、環境構築からエージェント実行まで一通り揃っています。今回はそれを参考に、対話的に指示を出せるスクリプトを用意しました。
ターミナルで対話型スクリプトを起動します。
$ python3 run_agent.py ✅ Streaming URL 取得成功 ================================================== WorkSpaces Agent Access - 対話モード ================================================== 指示を入力してください (quit で終了) ==================================================
起動すると Streaming URL の発行 → MCP 接続が自動で行われ、対話プロンプトが表示されます。ここに自然言語で指示を入力するだけです。
以下の指示を出してみました。
OpenOffice Calcを開いて、A1に"商品名"、B1に"金額"、A2に"りんご"、B2に"150"、A3に"みかん"、B3に"100"、B4にSUM関数で合計を入れて
エージェントの動き(1回目)
まずデスクトップのスクショを撮って、OpenOfficeのアイコンを発見。ダブルクリックで起動を試みます。

ところが、初回セットアップウィザード が表示されました。

エージェントは「Cancelで閉じよう」「次はFinishを押そう」と試行錯誤しますが、ここで ツール呼び出し10回の制限に到達。ちなみに「10回で止まった」のはサービス側の制約ではなく、コスト暴走防止のために私が設定した制限です。

Tool #4: left_click (Cancel ボタン) Tool #8: left_click (Next >> ボタン) Tool #10: left_click (Finish ボタン) → 制限到達。作業未完了。
現実の GUI 操作では予想外のダイアログが出てくるので、ツール呼び出し回数の設定は余裕を持たせる必要があることが分かります。自身で設定した制限も効いていることもわかり、安心しました。
エージェントの動き(2回目:「続きやって」)
対話モードなのでセッションが維持されています。「続きやって」と入力するだけで、前回の状態から続行してくれます。

ウィザードは完了済みだったので、OpenOffice のスタート画面が表示されていました。「Spreadsheet」をクリックして Calc を起動。

ここからはスムーズです。
Tool #14: type_text("商品名") → A1に入力
Tool #15: key (Tab) → B1に移動
Tool #16: type_text("金額") → B1に入力
Tool #19: type_text("りんご") → A2に入力
Tool #21: type_text("150") → B2に入力
Tool #24: type_text("みかん") → A3に入力
Tool #26: type_text("100") → B3に入力
Tool #28: type_text("=SUM(B2:B3)") → B4にSUM関数
Tool #29: key (Enter) → 確定
Tool #30: screenshot → 完成確認

結果: SUM関数が正しく動作して、合計 250 が B4 に表示されました。
エージェントはセルの移動に Tab / Enter / クリックを使い分け、SUM関数も =SUM(B2:B3) という正しい構文で入力してくれました。全30回のツール呼び出しで完了。
この検証から分かったこと
- 予想外の UI(ウィザード等)が出ると操作回数を消費する → 回数制限は余裕を持って設定すべき
- 対話モードならセッション維持で「続き」ができる → 人間がフォールバックとして介入可能
- セル操作・関数入力は正確 → スプレッドシートの定型処理は十分実用的
- 1セッション30ツール呼び出し ≒ 数十秒〜1分程度 → 体感としては少し待つけど許容範囲
まとめ
Amazon WorkSpaces Agent Access を動かして、AIエージェントが Windows デスクトップをスクショ→操作する一連のフローを確認できました。
APIのないレガシー業務アプリの自動化や、画面操作が必要な定型業務のRPA的な使い方が見えてきます。プレビュー段階なので本番投入はまだ先ですが、仕組みを理解しておくと GA 時にすぐ動けそうです。
皆様もぜひ触ってみてください! それでは、またお会いしましょう〜