View a markdown version of this page

WorkSpaces アプリケーション MCP サーバー - Amazon WorkSpaces Applications

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

WorkSpaces アプリケーション MCP サーバー

WorkSpaces アプリケーション MCP サーバーは、ストリーミングセッション中にデスクトップアプリケーションとやり取りするためのモデルコンテキストプロトコル (MCP) ツールを AI エージェントに提供するフルマネージドサービスです。エージェントは、ボタンのクリック、テキストの入力、スクロール、デスクトップのスクリーンショットの撮影を行うことができます。

概要

スタックでエージェントアクセスを有効にすると、エージェントはマネージド MCP サーバーに接続してデスクトップアプリケーションとやり取りできます。MCP サーバーは、エージェントとストリーミングセッション間の通信を処理します。エージェントは MCP ツールリクエストを送信し、サーバーはそれらをデスクトップで実行します。

MCP サーバーは AWS クラウドでホストされています。サーバーコンポーネントをインストールまたは保守する必要はありません。サーバーは、Streamable HTTP をトランスポートプロトコルとして使用します。

エージェントアクセスはnon-domain-joinedフリートとドメインに参加していないフリートの両方をサポートします。接続方法はフリートタイプによって異なります。Non-domain-joinedフリートはストリーミング URL でセッションを認証し、ドメインに参加しているフリートは SAML フェデレーションを介して認証します。フリートに一致するパスについては、「」を参照してくださいMCP サーバーへの接続

MCP サーバーへの接続

エージェントは、次のエンドポイントで MCP サーバーに接続します。

https://agentaccess-mcp.region.api.aws/mcp

MCP サーバーは AWS クラウドでホストされ、Streamable HTTP をトランスポートプロトコルとして使用します。サーバーコンポーネントをインストールまたは保守する必要はありません。

すべてのリクエストは、サービス名 の IAM 認証情報を使用して SigV4-signedされている必要がありますagentaccess-mcp。次の Python の例は、 を使用した一般的な接続パターンを示していますmcp-proxy-for-aws

from mcp_proxy_for_aws import aws_iam_streamablehttp_client async with aws_iam_streamablehttp_client( endpoint="https://agentaccess-mcp.region.api.aws/mcp", aws_service="agentaccess-mcp", aws_region="region", headers={ # Fleet-type-specific headers (see the following subsections) }, metadata={ # Fleet-type-specific metadata (see the following subsections) }, ) as (read, write, _): # Use read/write streams with your MCP client ...

他の言語の場合は、送信 MCP リクエスト用の独自の SigV4 署名ロジックを記述するか、SigV4 署名をサポートするライブラリを使用します。の詳細についてはmcp-proxy-for-aws、GitHub のmcp-proxy-for-aws」を参照してください。

ストリーミングセッションの認証方法は、フリートタイプによって異なります。

non-domain-joinedフリートとの接続

non-domain-joinedフリートの場合、 CreateStreamingURL API を使用してストリーミング URL を生成し、すべてのリクエストでX-Amzn-AgentAccess-Streaming-Session-Urlヘッダーとして渡します。エージェント固有のパラメータは必要ありません。エージェントの動作は、スタックのエージェントアクセス設定によって決まります。

import boto3 from mcp_proxy_for_aws import aws_iam_streamablehttp_client # Generate streaming URL appstream = boto3.client("appstream", region_name="region") response = appstream.create_streaming_url( StackName="stack-name", FleetName="fleet-name", UserId="user-id", ) streaming_url = response["StreamingURL"] # Connect to MCP server async with aws_iam_streamablehttp_client( endpoint="https://agentaccess-mcp.region.api.aws/mcp", aws_service="agentaccess-mcp", aws_region="region", headers={ "X-Amzn-AgentAccess-Streaming-Session-Url": streaming_url, }, ) as (read, write, _): ...

CreateStreamingURL API の詳細については、Amazon WorkSpaces Applications 2.0 API Reference」の「CreateStreamingURL」を参照してください。

ドメインに参加しているフリートとの接続

エージェントがドメインに参加しているストリーミングインスタンスにアクセスする場合、接続は SAML プロバイダーを介してフェデレーションされる必要があります。この要件は、標準セッションとエージェントセッションの両方に適用されます。標準セッションでは、ユーザーはパスワードを手動で入力したり、証明書ベースの認証を使用してシームレスなログインエクスペリエンスを実現したりできます。エージェントセッションでは、証明書ベースの認証が必要です。

ドメイン結合ストリーミングインスタンスは SAML 経由でアクセスする必要があるため、MCP クライアントはストリーミング URL の代わりに署名付き SAML アサーションを提供する必要があります。エンコードされた SAML アサーションが HTTP ヘッダーのサイズ制限を超えています。これを回避するには、 の metadataフィールドを使用しますmcp-proxy-for-aws

from mcp_proxy_for_aws import aws_iam_streamablehttp_client # saml_response: your signed, base64-encoded SAML assertion # stack_arn: the ARN of the AppStream stack for the AD user async with aws_iam_streamablehttp_client( endpoint="https://agentaccess-mcp.region.api.aws/mcp", aws_service="agentaccess-mcp", aws_region="region", metadata={ "saml_response": saml_response, "stack_arn": stack_arn, }, ) as (read, write, _): ...
注記

metadata パラメータがmcp-proxy-for-awsバージョン 1.6.1 で追加されました。以前のバージョンでは、追加の開発なしで _metaフィールドを挿入することはできません。アップグレードするには、 を実行しますpip install -U mcp-proxy-for-aws

WorkSpaces アプリケーションを使用した SAML フェデレーションの設定の詳細については、「Amazon WorkSpaces アプリケーション管理ガイド」の「SAML の設定」を参照してください。 Amazon WorkSpaces 詳細と完全な実例については、GitHub の Samples の sample-code-for-workspaces-agent-access AWS リポジトリを参照してください。

接続モード

MCP リクエストで X-Amzn-AgentAccess-Connect-Modeヘッダーを設定することで、エージェントがデスクトップセッションが利用可能になるまでの待機方法を制御できます。

注記

接続モードは、non-domain-joinedトとドメイン結合フリートの両方に適用されます。フリートタイプが使用する認証メカニズム (non-domain-joinedフリートの場合は streaming-URL ヘッダー、ドメイン結合フリートの場合は SAML アサーションメタデータ) とともに X-Amzn-AgentAccess-Connect-Modeヘッダーを設定します。

次の方法を使用できます。

  • BLOCKING (デフォルト) — MCP サーバーは、応答する前にデスクトップ接続が完全に確立されるまで待機します。が tools/listを返すと、すべてのツールがすぐに使用できます。

  • POLLING — MCP サーバーはデスクトップ接続を待たずにすぐに応答します。最初は、 connection_status ツールのみを使用できます。エージェントは、接続が確立されるまでこのツールをポーリングし、その時点で完全なツールセットが利用可能になります。

デスクトップ接続を待っている間にエージェントが他の作業を実行できるようにする場合、または接続タイムアウト動作をより詳細に制御する必要がある場合は、POLLING モードを使用します。

次の例は、ポーリングモードを使用する方法を示しています。

# Pass the header when creating the MCP connection headers = { "X-Amzn-AgentAccess-Streaming-Session-Url": streaming_url, # non-domain-joined fleets "X-Amzn-AgentAccess-Connect-Mode": "POLLING", } # After initialize, tools/list returns immediately with connection_status tools = await session.list_tools() # tools = [connection_status] # Poll connection_status until the desktop is ready while True: result = await session.call_tool("connection_status", {}) status = json.loads(result.content[0].text) if status["state"] == "CONNECTED": break time.sleep(2) # Now tools/list returns the full set (screenshot, left_click, type_text, etc.) tools = await session.list_tools()

セッションのクリーンアップ

MCP リクエストで X-Amzn-AgentAccess-Expire-Streaming-Session-On-Deleteヘッダーを設定することで、エージェントが接続を終了したときにストリーミングセッションの有効期限が切れるかどうかを制御できます。次の値を使用できます。

  • true — エージェントが明示的な HTTP DELETEリクエストを送信すると、MCP サーバーはクリーンアップの一環として WorkSpaces アプリケーションストリーミングセッションを期限切れにします。セッションの有効期限が切れると、基盤となるストリーミングインスタンスが終了し、フリートの設定済み自動スケーリングポリシーがトリガーされます。詳細については、「Amazon WorkSpaces アプリケーションのフリートAuto Scaling」を参照してください。

  • false (デフォルト) — ストリーミングセッションは、切断タイムアウトに達するまで実行され続けます。切断タイムアウトの詳細については、「」を参照してくださいAmazon WorkSpaces アプリケーションでフリートを作成する

注記

デフォルトでは、クライアントライフサイクルを適切に終了するとmcp-proxy-for-aws、MCP クライアントが自動的にDELETEリクエストを処理します。

使用可能なツール

MCP サーバーには、エージェントがストリーミングセッション中にデスクトップとやり取りするための以下のツールが用意されています。すべてのツール名は agentaccess___ プレフィックスを使用します。

マウスツール

left_click

指定された座標で左クリックを実行します。

パラメータ: x (必須)y、 (必須)、 modifiers (オプション、例: ctrlまたは ctrl+shift)。

double_click

指定された座標でダブルクリックを実行します。

パラメータ: x (必須)、 y (必須)、 modifiers (オプション)。

triple_click

指定された座標でトリプルクリックを実行します。

パラメータ: x (必須)、 y (必須)、 modifiers (オプション)。

right_click

指定された座標で右クリックを実行します。

パラメータ: x (必須)、 y (必須)、 modifiers (オプション)。

middle_click

指定された座標でミドルクリックを実行します。

パラメータ: x (必須)、 y (必須)、 modifiers (オプション)。

left_click_drag

開始座標から終了座標への左クリックドラッグを実行します。

パラメータ: start_x (必須)start_y、 (必須)、 end_x (必須)、 end_y (必須)。

left_mouse_down

指定された座標で左マウスボタンを長押しします。

パラメータ: x (必須)、 y (必須)、 modifiers (オプション)。

left_mouse_up

指定された座標で左マウスボタンを離します。

パラメータ: x (必須)、 y (必須)、 modifiers (オプション)。

move_pointer

ポインタを指定された座標に移動します。

パラメータ: x (必須)、 y (必須)。

scroll

指定された座標でマウスホイールをスクロールします。

パラメータ: x (必須)y、 (必須 — scroll_direction UpDown、、または Right)Leftscroll_amount (必須 — ティックで、120 ティックは 1 ホイールノッチに相当)、 modifiers (オプション)。

キーボードツール

type_text

文字ごとにキーボードイベントをシミュレートしてテキストを入力します。

パラメータ: text (必須 — 最大 10,000 文字)。

key

キーまたはキーの組み合わせを押します。

パラメータ: keys (必須 — 、actrl+c、 など+、 によって結合された単一のキーまたは組み合わせctrl+shift+s)。

hold_key

指定された期間、キーまたはキーの組み合わせを保持します。

パラメータ: keys (必須)、 duration (必須 — 1~30 秒)。

画面ツール

screenshot

デスクトップのスクリーンショットをキャプチャします。返される画像ディメンションは、すべてのマウスツールの座標空間を定義します。

パラメータ: include_cursor (オプション — デフォルトは )false

MCP ツールの転送

MCP ツール転送を使用すると、エージェントはコンピュータ使用ツールを使用するのではなく、直接 MCP 呼び出しを通じてアプリケーションやデスクトップオペレーティングシステムとやり取りできます。ツール転送を有効にすると、MCP サーバーは WorkSpaces アプリケーションセッションで設定されたツールをエージェントに転送します。

ツール転送の設定

MCP ツール転送を設定するには:

  1. ツール転送を有効にする — API またはコンソール設定を使用してFORWARD_MCP_TOOLSエージェントアクションを有効にします。

  2. WorkSpace で MCP サーバーを設定する — サービスは、次のパスで設定ファイルを検索します。

    C:\ProgramData\NICE\dcv\mcp_server_redirection_config.json
  3. ツールの可用性の検証 — 設定ファイルが存在する場合、サービスは ファイルで設定された MCP サーバーに接続し、ツールを転送します。転送されたツールは、エージェントが使用可能なツールを一覧表示したときに表示されます。

注記

ツール転送が機能するには、IAM アクセスとサービス設定の両方を有効にする必要があります。IAM アクセス許可は、サービス設定を上書きしません。

ツール転送の IAM アクセス許可

転送されたツールを呼び出すための IAM アクションは ですCallForwardedToolStackArn 条件キーを使用して、特定のスタックへのアクセスの範囲を設定できます。

{ "Action": "agentaccess-mcp:*", "Resource": "*", "Condition": { "ArnLike": { "ponte-mcp:StackArn": "arn:aws:appstream:region:account-id:stack/stack-name" } } }

互換性のあるフレームワーク

Streamable HTTP および SigV4 署名をサポートする任意の MCP 互換エージェントフレームワークから WorkSpaces アプリケーション MCP サーバーに接続できます。以下のフレームワークがテストされています。

  • Strands Agents SDK — ネイティブ MCP クライアントサポートを提供します。

  • mcp-proxy-for-aws — Python での MCP リクエストの SigV4 署名を処理する軽量トランスポート。

モニタリング

次のサービスを使用して、エージェントのアクティビティをモニタリングできます。

  • AWS CloudTrail — エージェントセッションイベントは CloudTrail に記録されます。エージェントが接続するタイミング、使用するツール、セッションが終了するタイミングを表示できます。ツール呼び出しはデータイベントであり、データイベントをログに記録する証跡を設定する必要があります。詳細については、CloudTrail ユーザーガイド」の「データイベントのログ記録」を参照してください。

  • CloudWatch — エージェントセッションの運用メトリクスは CloudWatch で利用できます。

  • Amazon S3 — スクリーンショットストレージを設定すると、エージェントセッション中にキャプチャされたスクリーンショットは、指定した Amazon S3 バケットで使用できます。スクリーンショットは、次のキー形式で保存されます。

    agentaccess/screenshots/year=YYYY/month=MM/day=DD/session-id/timestamp.png

    パスの UUID は WorkSpaces アプリケーションストリーミングセッション ID です。

はじめに

WorkSpaces アプリケーション MCP サーバーの使用を開始するには、「」を参照してくださいWorkSpaces アプリケーションへのアクセス権をエージェントに付与する