MCP 서버 대상
MCP 서버는 Bedrock AgentCore에서 모델 및 에이전트와의 상호 작용을 위한 로컬 도구, 데이터 액세스 또는 사용자 지정 함수를 제공합니다. Bedrock AgentCore에서는 게이트웨이를 생성할 때 미리 구성된 MCP 서버를 대상으로 정의할 수 있습니다.
MCP 서버는 에이전트가 검색하고 사용할 수 있는 도구, 프롬프트 및 리소스를 호스팅합니다. Bedrock AgentCore에서는 게이트웨이를 사용하여 대상을 이러한 기능과 연결하고 에이전트 런타임에 연결합니다. 프로토콜 핸드셰이크를 수행하고 사용 가능한 기능을 인덱싱하는 SynchronizeGatewayTargets API를 통해 외부 MCP 서버에 연결합니다. MCP 서버 설치 및 사용에 대한 자세한 내용은 Amazon Bedrock AgentCore MCP Server: Vibe coding with your coding assistant를 참조하세요.
주요 고려 사항 및 제한 사항
나열 모드
ListingMode는 MCP 서버 대상에 대해 DYNAMIC 또는 DEFAULT로 설정할 수 있습니다.
-
DYNAMIC 모드에서 클라이언트는 사용자가 MCP 작업을 호출할 때 MCP 서버 기능을 검색합니다. Gateway는 요청을 MCP 서버로 전달하여 서버 기능을 검색합니다. 현재 DYNAMIC 모드는 의미 체계 검색 또는 아웃바운드 3레깅 OAuth(3LO)와 상호 운용할 수 없습니다.
-
변경되지 않는 한, 나열 모드는 DEFAULT로 설정됩니다. DEFAULT 모드에서 클라이언트는 SynchronizeGatewayTargets API에서 제공하는 동기화 작업을 통해 MCP 서버 기능을 검색합니다.
암시적 동기화
DEFAULT 모드의 대상의 경우 CreateGatewayTarget 및 UpdateGatewayTarget 작업은 기능 검색 및 인덱싱을 자동으로 트리거합니다. 두 작업 중 하나가 호출되면 Gateway는 MCP의 tools/list 기능을 사용하여 사용 가능한 도구를 가져오고,를 사용하여 프롬프트를 표시하고prompts/list, resources/list 및를 사용하여 리소스를 가져오고resources/templates/list, 반환된 기능을 통합 카탈로그에 추가합니다.
명시적 동기화
기본 모드의 대상에 대한 기능 카탈로그는 SynchronizeGatewayTargets API를 호출하여 수동으로 새로 고칠 수 있습니다. 호출되면 게이트웨이의 사용 가능한 기능 목록이 업데이트됩니다. MCP 서버의 도구, 프롬프트, 리소스 정의가 변경될 때마다 API를 호출해야 합니다.
동기화는 MCP 서버를 통합할 때 정확한 기능 카탈로그를 유지하기 위한 중요한 메커니즘입니다. 암시적 동기화는 대상 생성 및 업데이트 중에 자동으로 발생하며, Gateway는 MCP 서버에서 도구, 프롬프트 및 리소스를 즉시 검색하고 인덱싱하여 의미 체계 검색 및 통합 목록에 기능을 사용할 수 있도록 합니다. 명시적 동기화는 SynchronizeGatewayTargets API를 통해 온디맨드로 수행되므로 MCP 서버가 독립적으로 기능을 수정할 때 MCP 기능 카탈로그를 검색할 수 있습니다.
SynchronizeGatewayTargets를 호출하는 경우
MCP 서버 대상의 나열 모드가 DEFAULT로 설정될 때마다 도구, 프롬프트 또는 리소스가 추가, 제거 또는 수정된 후 SynchronizeGatewayTargets API를 사용합니다. Gateway는 의미 체계 검색을 위한 벡터 임베딩을 사전 계산하고 정규화된 기능 카탈로그를 유지하므로 사용자가 사용 가능한 최신 도구, 프롬프트 및 리소스를 검색하고 호출할 수 있도록 동기화가 필요합니다.
API를 호출하는 방법
/gateways/ { gatewayIdentifier}/에 대한 PUT 요청을 요청 본문의 대상 ID와 동기화합니다. API는 202 응답을 즉시 반환하고 동기화를 비동기적으로 처리합니다. 대규모 기능 세트의 경우 작업이 몇 분 정도 걸릴 수 있으므로 GetGatewayTarget을 통해 대상 상태를 모니터링하여 동기화 진행 상황을 추적합니다.
권한 부여 전략
다음과 같은 유형의 권한 부여 전략이 지원됩니다.
-
권한 없음 - 게이트웨이는 사전 구성된 권한 부여 없이 MCP 서버를 호출합니다. 이 접근 방식은 권장되지 않습니다.
-
OAuth - 게이트웨이는 2각 OAuth(클라이언트 자격 증명 권한 부여 유형)와 3각 OAuth(권한 부여 코드 유형)를 모두 지원합니다. 게이트웨이가 MCP 서버를 호출하도록 동일한 계정 및 리전의 Amazon Bedrock AgentCore Identity에서 권한 부여 공급자를 구성합니다.
-
IAM( AWS 서명 버전 4(Sig V4) ) - 게이트웨이는 게이트웨이 서비스 역할 자격 증명과 함께 SigV4를 사용하여 MCP 서버에 대한 요청에 서명합니다. SigV4 서명에
IamCredentialProvider필요한 서비스 이름과 선택적 리전(기본값은 게이트웨이 리전)으로를 구성합니다. -
API 키 - 게이트웨이는 API 키 자격 증명 공급자를 사용하여 MCP 서버로 인증합니다. 게이트웨이와 동일한 계정 및 리전의 Amazon Bedrock AgentCore Identity에서 API 키 공급자를 구성합니다.
중요
IAM(SigV4) 아웃바운드 권한 부여를 사용하려면 기본적으로 IAM 인증을 지원하는 AWS 서비스 뒤에 MCP 서버가 호스팅되어야 합니다. 게이트웨이는 SigV4를 사용하여 아웃바운드 요청에 서명하지만 대상의 인증 구성은 수정하지 않습니다. 대상 서비스는 SigV4 서명을 확인할 수 있어야 합니다.
다음 AWS 서비스는 기본적으로 IAM 인증을 지원하며 MCP 서버 대상에 대한 IAM 아웃바운드 권한 부여와 호환됩니다.
-
Amazon Bedrock AgentCore Gateway
-
Amazon Bedrock AgentCore 런타임( AgentCore 런타임에서 MCP 서버 배포 참조)
-
Amazon API Gateway
-
Lambda 함수 URLs
Application Load Balancer 또는 직접 Amazon EC2 엔드포인트와 같이 SigV4 서명을 기본적으로 확인하지 않는 서비스는 IAM 아웃바운드 권한 부여와 호환되지 않습니다. MCP 서버가 이러한 서비스 중 하나 뒤에 호스팅되는 경우 OAuth 또는 API 키 권한 부여를 대신 사용합니다.
MCP 서버 대상의 구성 고려 사항
다음을 구성해야 합니다.
-
MCP 서버에는 도구 기능이 있어야 합니다. 프롬프트 및 리소스 기능은 선택 사항이며 서버가 알림을 보낼 때 자동으로 동기화됩니다.
-
지원되는 MCP 프로토콜 버전은 - 2025-06-18 , 2025-03-26 및 2025-11-25입니다.
-
서버의 제공된 URL/엔드포인트의 경우 URL을 인코딩해야 합니다. 게이트웨이는 동일한 URL을 사용하여 서버를 호출합니다.
작은 정보
MCP 서버가 AgentCore 런타임에서 호스팅되는 경우 게이트웨이에서 MCP 세션을 활성화하거나 대상의에 허용된 요청 및 응답 헤더Mcp-Session-Id로를 추가합니다metadataConfiguration. 이렇게 하면 각 요청에서 MCP 서버를 사용한 반복 초기화가 방지되고 후속 도구 호출의 지연 시간이 줄어듭니다.
권한 부여 코드 흐름을 사용하여 OAuth 보호 MCP 서버에 연결
Amazon Bedrock AgentCore Gateway는 MCP 서버 대상에서 권한 부여 코드 권한 부여 유형(3각 OAuth)을 지원하기 위해 대상 생성을 위한 두 가지 방법을 제공합니다.
MCP 서버 대상 생성 중 암시적 동기화
이 방법을 사용하면 관리자가 응답에 반환된 권한 부여 URL을 사용하여 CreateGatewayTarget UpdateGatewayTarget, 또는 SynchronizeGatewayTargets 작업 중에 권한 부여 코드 흐름을 완료합니다. 이를 통해 Amazon Bedrock AgentCore Gateway는 MCP 서버의 도구를 미리 검색하고 캐싱할 수 있습니다.
참고
대기 중인 권한 부여 상태(, 또는 CREATE_PENDING_AUTH )인 대상은 삭제, 업데이트 UPDATE_PENDING_AUTH 또는 동기화할 수 없습니다SYNCHRONIZE_PENDING_AUTH. 대상에 대한 추가 작업을 수행하기 전에 권한 부여가 완료되거나 실패할 때까지 기다립니다.
MCP 서버 대상 생성 중에 스키마를 미리 제공
이 방법을 사용하면 관리자 사용자는 Amazon Bedrock AgentCore Gateway가 MCP 서버에서 동적으로 가져오는 대신 mcpToolSchema 필드를 사용하여 CreateGatewayTarget 또는 UpdateGatewayTarget 작업 중에 직접 도구 스키마를 제공합니다. Amazon Bedrock AgentCore Gateway는 제공된 스키마를 구문 분석하고 도구 정의를 캐싱합니다.
참고
정적 도구 스키마(mcpToolSchema)가 구성된 대상은 동기화할 수 없습니다. UpdateGatewayTarget 호출을 통해 정적 스키마를 제거하여 동적 도구 동기화를 활성화합니다.
URL 세션 바인딩
OAuth 2.0 권한 부여 URL 세션 바인딩은 OAuth 권한 부여 요청을 시작한 사용자가 동의를 제공한 사용자와 동일한지 확인합니다. 사용자가 동의를 완료하면 브라우저는 고유한 세션 URI를 사용하여 대상에 구성된 반환 URL로 다시 리디렉션합니다. 그러면 애플리케이션은 CompleteResourceTokenAuth API를 호출하여 사용자의 자격 증명과 세션 URI를 모두 표시합니다. Amazon Bedrock AgentCore 자격 증명은 흐름을 시작한 사용자가 액세스 토큰에 대한 권한 부여 코드를 교환하기 전에 흐름을 완료한 동일한 사용자인지 확인합니다.
이렇게 하면 사용자가 실수로 권한 부여 URL을 공유하고 다른 사람이 동의를 완료하여 잘못된 당사자에게 액세스 토큰을 부여하는 시나리오가 방지됩니다. 권한 부여 URL 및 세션 URI는 10분 동안만 유효하므로 오용 기간이 추가로 제한됩니다. 세션 바인딩은 대상 생성(암시적 동기화) 및 도구 호출 중에 적용됩니다.
참고
AWS 관리 콘솔을 통해 대상 작업(생성, 업데이트 또는 동기화) 및 권한 부여를 수행할 때 리소스 소유자를 대신하여 CompleteResourceTokenAuth 호출이 수행되므로 권한 부여 후 추가 작업이 필요하지 않습니다.
권한 구성
MCP 서버 대상을 생성, 업데이트 또는 동기화하는 데 사용하는 IAM 역할에는 다음 예제에 표시된 권한이 있어야 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateGateway", "bedrock-agentcore:GetGateway", "bedrock-agentcore:CreateGatewayTarget", "bedrock-agentcore:GetGatewayTarget", "bedrock-agentcore:SynchronizeGatewayTargets", "bedrock-agentcore:UpdateGatewayTarget" ], "Resource": "arn:aws:bedrock-agentcore:*:*:*gateway*" }, { "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateWorkloadIdentity", "bedrock-agentcore:GetWorkloadAccessToken", "bedrock-agentcore:GetWorkloadAccessTokenForUserId", "bedrock-agentcore:GetResourceOauth2Token", "bedrock-agentcore:GetResourceApiKey", "bedrock-agentcore:CompleteResourceTokenAuth", "secretsmanager:GetSecretValue" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:EnableKeyRotation", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*", "kms:CreateAlias", "kms:DisableKey", "kms:*" ], "Resource": "arn:aws:kms:*:123456789012:key/*" } ] }