MCP 서버 통합 템플릿 - Amazon OpenSearch Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

MCP 서버 통합 템플릿

모델 컨텍스트 프로토콜(MCP) 서버 템플릿을 사용하면 Amazon Bedrock AgentCore에 OpenSearch 호스팅 MCP 서버를 배포하여 AI 에이전트와 OpenSearch 도구 간의 통합 복잡성을 줄일 수 있습니다. 자세한 내용은 Amazon Bedrock AgentCore란 무엇입니까?를 참조하세요.

템플릿 기능

이 템플릿에는 MCP 서버를 배포하고 관리하기 위한 다음과 같은 주요 기능이 포함되어 있습니다.

관리형 MCP 서버 배포

Amazon Bedrock AgentCore 런타임을 사용하여 opensearch-mcp-server-py를 배포하고 기본 MCP 서버에 요청을 프록시하는 에이전트 엔드포인트를 제공합니다. 자세한 내용은 GitHubopensearch-mcp-server-py를 참조하세요.

인증 및 보안

인바운드 인증(사용자에서 MCP 서버로)과 아웃바운드 인증(MCP 서버에서 OpenSearch로)을 모두 처리하고 엔터프라이즈 인증을 위한 OAuth를 지원합니다.

참고

MCP 서버 템플릿은 다음 에서만 사용할 수 있습니다 AWS 리전.

  • 미국 동부(버지니아 북부)

  • 미국 서부(오리건)

  • 유럽(프랑크푸르트)

  • 아시아 태평양(시드니)

MCP 서버 템플릿을 사용하려면

다음 단계에 따라 MCP 서버 템플릿을 배포하고 OpenSearch 도메인에 연결합니다.

  1. Amazon OpenSearch Service 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 통합을 선택합니다.

  3. MCP 서버 통합 템플릿을 찾습니다.

  4. 도메인 구성을 선택합니다. 그런 다음 OpenSearch 도메인 엔드포인트를 입력합니다.

템플릿은 해당 선택적 파라미터가 지정되지 않은 경우 AgentCore 런타임과 다음 구성 요소를 생성합니다.

  • Amazon ECR 리포지토리

  • OAuth 권한 부여자로서의 Amazon Cognito 사용자 풀

  • AgentCore 런타임에서 사용하는 실행 역할

이 절차를 완료한 후에는 다음 생성 후 단계를 따라야 합니다.

  1. Amazon OpenSearch Service의 경우: 실행 역할 ARN을 OpenSearch 백엔드 역할에 매핑하여 도메인에 대한 액세스를 제어합니다.

    Amazon OpenSearch Serverless의 경우: 실행 역할이 컬렉션에 액세스할 수 있도록 허용하는 데이터 액세스 정책을 생성합니다.

  2. 권한 부여자로부터 OAuth 액세스 토큰을 가져옵니다. 그런 다음이 토큰을 사용하여 CloudFormation 스택 출력에 나열된 URL에서 MCP 서버에 액세스합니다.

자세한 내용은 OpenSearch Serverless의 정책 작업 단원을 참조하십시오.

AI 에이전트와 통합

배포 후 MCP 서버를 모든 MCP 호환 에이전트와 통합할 수 있습니다. 자세한 내용은 Amazon Bedrock 개발자 안내서배포된 MCP 서버 호출을 참조하세요.

개발자 통합

에이전트 구성에 MCP 서버 엔드포인트를 추가할 수 있습니다. Amazon Q Developer CLI, 사용자 지정 에이전트 또는 기타 MCP 호환 에이전트와 함께 사용할 수도 있습니다.

엔터프라이즈 배포

중앙 호스팅 에이전트는 OpenSearch를 하나의 구성 요소로 사용하여 여러 서비스에 연결할 수 있습니다. 이 에이전트는 OAuth 및 엔터프라이즈 인증 시스템을 지원하며 여러 사용자 및 사용 사례를 지원하도록 확장됩니다.

import os import requests from strands import Agent from strands.tools.mcp import MCPClient from mcp.client.streamable_http import streamablehttp_client def get_bearer_token(discovery_url: str, client_id: str, client_secret: str): response = requests.get(discovery_url) discovery_data = response.json() token_endpoint = discovery_data['token_endpoint'] data = { 'grant_type': 'client_credentials', 'client_id': client_id, 'client_secret': client_secret } headers = { 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.post(token_endpoint, data=data, headers=headers) token_data = response.json() return token_data['access_token'] if __name__ == "__main__": discovery_url = os.environ["DISCOVERY_URL"] client_id = os.environ["CLIENT_ID"] client_secret = os.environ["CLIENT_SECRET"] mcp_url = os.environ["MCP_URL"] bearer_token = get_bearer_token(discovery_url, client_id, client_secret) opensearch_mcp_client = MCPClient(lambda: streamablehttp_client(mcp_url, { "authorization": f"Bearer {bearer_token}", "Content-Type": "application/json" })) with opensearch_mcp_client: tools = opensearch_mcp_client.list_tools_sync() agent = Agent(tools=tools) agent("list indices")

자세한 내용은 OpenSearch 웹 사이트의 Amazon Bedrock AgentCore로 OpenSearch MCP 서버 호스팅을 참조하세요. OpenSearch