기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
MCP 프로토콜 계약
에이전트가 도구 및 에이전트 서버를 호출할 수 있도록 모델 컨텍스트 프로토콜(MCP)을 구현하기 위한 요구 사항을 이해합니다.
예제 코드는 AgentCore 런타임에서 MCP 서버 배포를 참조하세요.
프로토콜 구현 요구 사항
MCP 서버는 다음과 같은 특정 프로토콜 요구 사항을 구현해야 합니다.
-
전송 : Streamable-http 전송이 필요합니다. 기본적으로 AWS의 세션 관리 및 로드 밸런싱과의 호환성을 위해 상태 비저장 모드(
stateless_http=True)를 사용합니다. -
세션 관리: 플랫폼은 세션 격리를 위한
Mcp-Session-Id헤더를 자동으로 추가합니다. 상태 비저장 모드에서 서버는 플랫폼 생성Mcp-Session-Id헤더를 거부하지 않도록 상태 비저장 작업을 지원해야 합니다.
작은 정보
또한 Amazon Bedrock AgentCore는 유도(다중 stateless_http=False 턴 사용자 상호 작용) 및 샘플링(LLM 생성 콘텐츠)과 같은 기능을 활성화하는 상태 저장 MCP 서버()를 지원합니다. MCP 프로토콜 버전 2025-11-25 이하의 경우 서버가 열린 세션을 통해 이러한 요청을 전송하기 때문에 유도 및 샘플링에 상태 저장 모드가 필요합니다. 버전 2026-07-28 이상의 경우 유도 및 샘플링은 상태 저장 모드가 필요하지 않은 다중 왕복 요청(MRTR) 패턴을 사용합니다. MRTR에 대한 자세한 내용은 모델 컨텍스트 프로토콜 설명서의 다중 왕복 요청을
상태 저장 모드는 여러 요청에 걸쳐 MCP 세션 내에서 상태를 전달합니다. 상태 비저장 MCP 서버는 데이터베이스와 같이 애플리케이션이 관리하는 지원 저장소에 상태를 유지합니다. 명시적 상태 핸들을 사용하여 해당 상태를 참조합니다. 서버는 도구 결과에서 상태 식별자를 반환하고 클라이언트는 나중에 도구 호출을 통해 스토어로 다시 전달합니다. 명시적 상태 핸들에 대한 자세한 내용은 모델 컨텍스트 프로토콜 설명서의 명시적 상태 핸들
MCP 세션 관리 및 microVM 고정성
모델 컨텍스트 프로토콜(MCP)은 Mcp-Session-Id 헤더를 사용하여 세션 상태 및 라우팅 요청을 관리합니다. MCP 사양은 MCP 스트리밍 가능한 HTTP 전송
MicroVM 고정성: Amazon Bedrock AgentCore는 Mcp-Session-Id 헤더를 사용하여 요청을 동일한 microVM 인스턴스로 라우팅합니다. 클라이언트는 응답에서 Mcp-Session-Id 반환된를 캡처하고 세션 선호도를 보장하기 위해 모든 후속 요청에 포함해야 합니다. 일관된 세션 ID가 없으면 각 요청이 새 microVM으로 라우팅되어 콜드 스타트로 인한 추가 지연 시간이 발생할 수 있습니다.
상태 비저장 MCP(stateless_http=True):
-
플랫폼은를 생성하고 MCP 서버에 대한 요청에
Mcp-Session-Id포함합니다. -
MCP 서버는 플랫폼 제공 세션 ID를 수락해야 합니다(거부하지 않음).
-
플랫폼은 응답에서 클라이언트
Mcp-Session-Id에 동일한를 반환합니다. -
클라이언트는 microVM 선호도에 대한 모든 후속 요청에이 세션 ID를 포함해야 합니다.
상태 저장 MCP(stateless_http=False):
-
클라이언트는
Mcp-Session-Id헤더 없이 초기화 요청을 보냅니다. -
플랫폼은 응답
Mcp-Session-Id으로를 반환합니다. -
클라이언트는 세션 상태 및 microVM 선호도 모두에 대한
Mcp-Session-Id모든 후속 요청에 이를 포함해야 합니다.
상태 저장 MCP 세션 관리에 대한 자세한 내용은 MCP 세션 관리 사양을
참고
두 모드 모두에서 Amazon Bedrock AgentCore는 항상 Mcp-Session-Id 헤더를 클라이언트에 반환합니다. 최적의 성능을 위해 항상이 헤더를 캡처하고 재사용합니다.
컨테이너 요구 사항
MCP 서버는 다음 사양을 충족하는 컨테이너화된 애플리케이션으로 배포되어야 합니다.
-
호스트:
0.0.0.0 -
포트:
8000- MCP 서버 통신을 위한 표준 포트(HTTP 프로토콜과 다름) -
플랫폼: ARM64 컨테이너 - AWS Amazon Bedrock AgentCore 런타임 환경과의 호환성에 필요합니다.
경로 요구 사항
/mcp - POST
용도
MCP RPC 메시지를 수신하고 에이전트의 도구 기능을 통해 처리하고 표준 MCP RPC 메시지를 사용하여 InvokeAgentRuntime API 페이로드를 완전히 전달합니다.
응답 형식
application/json 및를 응답 콘텐츠 유형text/event-stream으로 지원하는 JSON-RPC 기반 요청/응답 형식
사용 사례
/mcp 엔드포인트는 다음과 같은 몇 가지 주요 용도로 사용됩니다.
-
도구 호출 및 관리
-
에이전트 기능 검색
-
리소스 액세스 및 조작
-
다단계 에이전트 워크플로
오류 처리
MCP 서버는 오류를 표준 JSON-RPC 2.0 오류 응답으로 반환합니다. 대부분의 오류는 MCP 사양에 따라 HTTP 200 상태 코드와 함께 JSON-RPC error 객체에서 전달됩니다. 인증, 권한 부여 및 프로토콜 수준 요청 오류만 200이 아닌 HTTP 상태 코드를 사용합니다. 다음 표는 각 런타임 예외를 JSON-RPC 오류 코드, HTTP 상태 코드 및 메시지에 매핑합니다. 일부 예외는 JSON-RPC 오류 코드를 공유하지만 다른 메시지를 반환하므로 별도의 행으로 나열됩니다.
| JSON-RPC 오류 코드 | 런타임 예외 | HTTP 오류 코드 | 오류 메시지 |
|---|---|---|---|
|
-32001 |
UnauthorizedException |
401 |
인증 오류 - 잘못된 자격 증명 |
|
-32002 |
AccessDeniedException |
403 |
권한 부여 오류 - 권한 부족 |
|
-32003 |
ThrottlingException |
200 |
속도 제한 초과 - 요청이 너무 많음 |
|
-32003 |
ServiceQuotaExceededException |
200 |
속도 제한 초과 - 요청이 너무 많음 |
|
-32004 |
ResourceNotFoundException |
200 |
리소스를 찾을 수 없음 - 요청된 리소스가 존재하지 않음 |
|
-32005 |
ConflictException |
200 |
리소스 충돌 - 리소스가 이미 있음 |
|
-32005 |
RetryableConflictException |
200 |
세션 작업이 진행 중입니다. 다시 시도하세요. |
|
-32006 |
ValidationException |
200 |
검증 오류 - 잘못된 요청 데이터 |
|
-32010 |
RuntimeClientError |
200 |
도구 실행 오류 - 자세한 내용은 CloudWatch 로그를 확인하세요. |
|
-32011 |
McpRequestUnacceptableException |
406 |
헤더 수락 오류 - MCP 프로토콜에는 수락 헤더: application/json, text/event-stream이 필요합니다. |
|
-32603 |
기타 예외 |
200 |
내부 오류 - 서버 오류 |
ConflictException 및 RetryableConflictException 둘 다 JSON-RPC 오류 코드-32005(HTTP 200)를 사용하지만 메시지로 구분됩니다. 서비스가 세션을 프로비저닝하거나 해제하는 동안 두 번째 작업이 세션을 대상으로 하면 서비스는 RetryableConflictException (Session operation in progress, please retry)를 반환합니다. MCP는 JSON-RPC 본문의 오류와 함께 HTTP 200을 반환하므로 호출자는 응답 본문을 검사하고 짧은 지수 백오프로 재시도해야 합니다. MCP 클라이언트는 이를 자동 재시도하지 않습니다.
오류 응답 예제:
{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32005, "message": "Session operation in progress, please retry" } }
OAuth 인증 응답
OAuth로 구성된 에이전트는 RFC 6749(OAuth 2.0)
401 권한이 없음
권한 부여 헤더가 누락되거나 비어 있을 때 반환됩니다.
응답에는 다음과 같은 WWW-Authenticate 헤더가 포함됩니다.
WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}"
참고
SigV4-configured 에이전트는 ACCESS_DENIED 오류와 함께 HTTP 403을 반환하며 WWW-Authenticate 헤더를 포함하지 않습니다.