기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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-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 서명을 지원하는 라이브러리를 사용합니다. 에 대한 자세한 내용은 GitHub의 mcp-proxy-for-awsmcp-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 Applications 2.0 API 참조의 CreateStreamingURL을 참조하세요. Amazon WorkSpaces
도메인에 조인된 플릿에 연결
에이전트가 도메인에 조인된 스트리밍 인스턴스에 액세스하는 경우 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의 샘플에서 sample-code-for-workspaces-agent-access
연결 모드
MCP 요청에 X-Amzn-AgentAccess-Connect-Mode 헤더를 설정하여 에이전트가 데스크톱 세션을 사용할 수 있을 때까지 기다리는 방법을 제어할 수 있습니다.
참고
연결 모드는 non-domain-joined 플릿과 도메인에 조인된 플릿 모두에 적용됩니다. 플릿 유형이 사용하는 인증 메커니즘과 함께 X-Amzn-AgentAccess-Connect-Mode 헤더를 설정합니다(non-domain-joined 플릿의 경우 스트리밍 URL 헤더 또는 도메인에 조인된 플릿의 경우 SAML 어설션 메타데이터).
다음 모드를 사용할 수 있습니다.
-
차단(기본값) - MCP 서버는 데스크톱 연결이 완전히 설정될 때까지 기다렸다가 응답합니다. 가
tools/list반환되면 모든 도구를 즉시 사용할 수 있습니다. -
POLLING - 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 애플리케이션 스트리밍 세션을 만료합니다. 세션을 만료하면 기본 스트리밍 인스턴스가 종료되고 플릿의 구성된 Auto Scaling 정책이 트리거됩니다. 자세한 내용은 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(필수 -Up,DownLeft, 또는Right),scroll_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 도구 전달을 설정하려면:
-
도구 전달 활성화 - 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 Applications MCP 서버를 시작하려면 섹션을 참조하세요에이전트에게 WorkSpaces 애플리케이션에 대한 액세스 권한 제공 시작하기.