Loading...
Loading...
Connects AI agents to remote Windows desktop applications on Amazon WorkSpaces Applications (AppStream 2.0) through the managed Agent Access MCP server, and guides reliable desktop automation. Covers connecting an agent to the MCP endpoint (SigV4, streaming URL, and Active Directory SAML/Domain Join), BLOCKING vs POLLING connect modes, the computer-use tools (screenshot, click, type, key, scroll), screenshot-budget and action-batching discipline, MCP tool forwarding (forwarded___ tools), session lifecycle and expire-on-delete, and troubleshooting connection errors. Use when building or debugging an agent that drives a remote Windows desktop or GUI application via WorkSpaces Applications / AppStream — including "dcv session not ready", "client_disconnected", 400 signing-region, POLLING/connection_status, SAML assertion, or forwarded tool questions. Not for Amazon WorkSpaces Personal/Core virtual desktops or general AppStream fleet administration unrelated to agent access.
npx skill4agent add aws/agent-toolkit-for-aws amazon-workspaces-agent-accesshttps://agentaccess-mcp.{region}.api.aws/mcpagentaccess-mcpscreenshotleft_clicktype_textappstream create-streaming-urlmcp-proxy-for-awsmcp-proxy-for-awsretrieve_skillretrieve_skillfilefile="references/connection-setup.md"file_read.kiro/skills/amazon-workspaces-agent-access/~/.claude/skills/amazon-workspaces-agent-access/retrieve_skillconnect_to_desktopX-Amzn-AgentAccess-Connect-ModeBLOCKINGPOLLINGconnect_to_desktopconnection_mode: "POLLING"session_idapplication_iduser_idX-Amzn-AgentAccess-Connect-Mode: POLLINGtools/listconnection_statusconnection_statusCONNECTEDtools/listscreenshotleft_click# Correct POLLING usage — the mode is an HTTP header on the MCP connection:
async with aws_iam_streamablehttp_client(
endpoint="https://agentaccess-mcp.us-east-1.api.aws/mcp", # use YOUR fleet's region
aws_service="agentaccess-mcp", aws_region="us-east-1", # region must match the fleet (else 400)
headers={
"X-Amzn-AgentAccess-Streaming-Session-Url": streaming_url,
"X-Amzn-AgentAccess-Connect-Mode": "POLLING", # header, not a tool arg
},
) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
# tools/list now returns ONLY connection_status until the desktop is up:
while json.loads((await session.call_tool("connection_status", {})).content[0].text)["state"] != "CONNECTED":
await asyncio.sleep(2)
tools = await session.list_tools() # now the full desktop tool setX-Amzn-AgentAccess-Streaming-Session-Url_metaaws.agentaccess/workspacesApplicationsSamlAssertionaws.agentaccess/workspacesApplicationsStackArnX-Amzn-AgentAccess-Expire-Streaming-Session-On-DeletetruefalsefalseDELETEmcp-proxy-for-awsforwarded___<server-name>___<tool-name>forwarded___filesystem___read_fileforwarded___<tool-name>COMPUTER_INPUTCOMPUTER_VISIONAgentAccessConfig| User need | Read |
|---|---|
Enable agent access on a stack ( | enabling-agent-access.md |
| Connect an agent to the MCP server — endpoint, SigV4, streaming URL (non-domain-joined), or Active Directory SAML/Domain Join | connection-setup.md |
Choose BLOCKING vs POLLING; poll | connection-modes.md |
| The computer-use tool set (mouse, keyboard, screenshot) and their parameters | tools-reference.md |
| Automate reliably — screenshot budget, action batching, trusting UI actions, coordinate planning, dialog recovery | automation-best-practices.md |
Expose your own MCP servers on the fleet as | tool-forwarding.md |
| Session lifecycle — cleanup, expire-on-delete, idle timeout, one-agent-per-session | session-lifecycle.md |
Debug an error (exact string → cause → fix): | troubleshooting.md |
agentaccess-mcpagentaccess-mcpInvokeMcpGetScreenshotLeftClickTypeTextagentaccess-mcp:StackArnagentaccess-mcp:*Resource: *COMPUTER_VISIONs3:PutObjectCOMPUTER_INPUTCOMPUTER_VISIONFORWARD_MCP_TOOLSFORWARD_MCP_TOOLSCallForwardedToolagentaccess-mcp:StackArnUserControlMode: VIEW_STOPagentaccess-mcpTypeTexttype_text