本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
WorkSpaces 應用程式 MCP 伺服器
WorkSpaces 應用程式 MCP 伺服器是一項全受管服務,可為 AI 代理器提供模型內容協定 (MCP) 工具,以在串流工作階段期間與桌面應用程式互動。客服人員可以按一下按鈕、輸入文字、捲動和擷取桌面的螢幕擷取畫面。
概觀
當您在堆疊上啟用代理程式存取時,代理程式可以連線至受管 MCP 伺服器,以與桌面應用程式互動。MCP 伺服器會處理您的代理程式與串流工作階段之間的通訊。您的代理程式會傳送 MCP 工具請求,而伺服器會在桌面上執行這些請求。
MCP 伺服器託管在 AWS 雲端。您不需要安裝或維護任何伺服器元件。伺服器使用可串流 HTTP 做為其傳輸通訊協定。
代理程式存取支援non-domain-joined和加入網域的機群。連線方法因機群類型而異。Non-domain-joined的機群會使用串流 URL 驗證工作階段,而加入網域的機群則透過 SAML 聯合進行驗證。如需符合機群的路徑,請參閱 連線至 MCP 伺服器。
連線至 MCP 伺服器
代理程式會在下列端點連線至 MCP 伺服器:
https://agentaccess-mcp.region.api.aws/mcp
MCP 伺服器託管於 AWS 雲端,並使用可串流 HTTP 做為其傳輸通訊協定。您不需要安裝或維護任何伺服器元件。
每個請求都必須使用服務名稱為 的 IAM 憑證 SigV4-signedagentaccess-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 ...
對於其他語言,請撰寫您自己的 SigV4 簽署邏輯以進行傳出 MCP 請求,或使用支援 SigV4 簽署的程式庫。如需 的詳細資訊mcp-proxy-for-aws,請參閱 GitHub 上的 mcp-proxy-for-aws
驗證串流工作階段的方式取決於您的機群類型:
-
Non-domain-joined機群 — 將串流 URL 做為標頭傳遞。請參閱 與non-domain-joined的機群連線。
-
加入網域的機群 — 傳遞已簽署的 SAML 聲明做為中繼資料。請參閱 與加入網域的機群連線。
與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 應用程式 2.0 API 參考》中的 CreateStreamingURL。
與加入網域的機群連線
當客服人員存取加入網域的串流執行個體時,必須透過 SAML 供應商聯合連線。此要求同時適用於標準和客服人員工作階段。標準工作階段可讓使用者手動輸入密碼,或使用憑證型身分驗證,以獲得順暢的登入體驗。對於代理程式工作階段,需要憑證型身分驗證。
由於加入網域的串流執行個體需要透過 SAML 存取,因此您的 MCP 用戶端必須提供已簽署的 SAML 聲明,而不是串流 URL。編碼的 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 參數已新增至 1.6.1 mcp-proxy-for-aws版。如果沒有其他開發,舊版無法注入 _meta 欄位。若要升級,請執行 pip install -U mcp-proxy-for-aws。
如需使用 WorkSpaces 應用程式設定 SAML 聯合的詳細資訊,請參閱《Amazon WorkSpaces 應用程式管理指南》中的設定 SAML。如需詳細資訊和完整的工作範例,請參閱 GitHub 上範例中的 sample-code-for-workspaces-agent-access
連線模式
您可以在 MCP 請求上設定 X-Amzn-AgentAccess-Connect-Mode標頭,以控制代理程式等待桌面工作階段變成可用的方式。
注意
連線模式適用於non-domain-joined和加入網域的機群。將 X-Amzn-AgentAccess-Connect-Mode 標頭與機群類型使用的任何身分驗證機制一起設定 (non-domain-joined的機群的streaming-URL 標頭,或加入網域的機群的 SAML 聲明中繼資料)。
可使用下列模式:
-
BLOCKING (預設) — MCP 伺服器會等到桌面連線完全建立後再回應。
tools/list傳回 時,所有工具都會立即可用。 -
輪詢 — MCP 伺服器會立即回應,無需等待桌面連線。一開始,只有
connection_status工具可用。您的代理程式會輪詢此工具,直到建立連線為止,此時完整工具集便可供使用。
當您希望代理程式在等待桌面連線時執行其他工作,或需要更多控制連線逾時行為時,請使用 POLLING 模式。
下列範例示範如何使用 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-awsMCP 用戶端會自動處理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(必要)Up、scroll_direction(必要 —、Left、 或Right)Down、scroll_amount(必要 — 在刻度中,其中 120 個刻度等於一個車輪凹口)、modifiers(選用)。
鍵盤工具
type_text-
透過模擬每個角色的鍵盤事件來輸入文字。
參數:
text(必要 — 最多 10,000 個字元)。 key-
按金鑰或金鑰組合。
參數:
keys(必要 — 由 加入的單一金鑰或組合+,例如a、ctrl+c或ctrl+shift+s)。 hold_key-
在指定的持續時間內保留金鑰或金鑰組合。
參數:
keys(必要)、duration(必要 — 1 到 30 秒)。
螢幕工具
screenshot-
擷取桌面的螢幕擷取畫面。傳回的影像維度會定義所有滑鼠工具的座標空間。
參數:
include_cursor(選用 — 預設為false)。
MCP 工具轉送
MCP 工具轉送可讓客服人員透過直接 MCP 呼叫與應用程式和桌面作業系統互動,而不是使用電腦使用工具。當您啟用工具轉送時,MCP 伺服器會將 WorkSpaces 應用程式工作階段上設定的工具轉送至您的代理程式。
設定工具轉送
若要設定 MCP 工具轉送:
-
啟用工具轉送 — 透過 API 或主控台設定開啟
FORWARD_MCP_TOOLS代理程式動作。 -
在 WorkSpace 上設定 MCP 伺服器 — 服務會在下列路徑尋找組態檔案:
C:\ProgramData\NICE\dcv\mcp_server_redirection_config.json -
驗證工具可用性 — 如果組態檔案存在,服務會連線至檔案中設定的 MCP 伺服器,並轉送工具。代理程式列出其可用工具時,會顯示轉送的工具。
注意
必須啟用 IAM 存取和服務設定,工具轉送才能運作。IAM 許可不會覆寫服務設定。
工具轉送的 IAM 許可
呼叫轉送工具的 IAM 動作為 CallForwardedTool。您可以使用 StackArn條件金鑰來限制對特定堆疊的存取:
{ "Action": "agentaccess-mcp:*", "Resource": "*", "Condition": { "ArnLike": { "ponte-mcp:StackArn": "arn:aws:appstream:region:account-id:stack/stack-name" } } }
相容架構
您可以從支援可串流 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 應用程式的存取權。