

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

# MCP 서버 통합 템플릿
<a name="cfn-template-mcp-server"></a>

Model Context Protocol(MCP) 서버 템플릿을 사용하면 Amazon Bedrock AgentCore에 OpenSearch 호스팅 MCP 서버를 배포하여 AI 에이전트와 OpenSearch 도구 간의 통합 복잡성을 줄일 수 있습니다. 자세한 내용은 [What is Amazon Bedrock AgentCore?](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html)를 참조하세요.

## 템플릿 기능
<a name="template-mcp-server-features"></a>

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

**관리형 MCP 서버 배포**  
Amazon Bedrock AgentCore Runtime을 사용하여 **opensearch-mcp-server-py**를 배포하고 기본 MCP 서버에 요청을 프록시하는 에이전트 엔드포인트를 제공합니다. 자세한 내용은 *GitHub*의 [opensearch-mcp-server-py](https://github.com/opensearch-project/opensearch-mcp-server-py)를 참조하세요.

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

**참고**  
MCP 서버 템플릿은 다음 AWS 리전에서만 사용할 수 있습니다.  
미국 동부(버지니아 북부)
미국 서부(오리건)
유럽(프랑크푸르트)
아시아 태평양(시드니)

## MCP 서버 템플릿을 사용하려면
<a name="template-mcp-server-procedure"></a>

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

1. [Amazon OpenSearch Service 콘솔](https://console.aws.amazon.com//aos/home )을 엽니다.

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

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

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

이 템플릿은 해당 선택적 파라미터가 지정되지 않은 경우, AgentCore Runtime과 다음 구성 요소를 생성합니다.
+ Amazon ECR 리포지토리
+ OAuth 권한 부여자로서 Amazon Cognito 사용자 풀
+ AgentCore Runtime이 사용하는 실행 역할

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

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

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

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

자세한 내용은 [OpenSearch Serverless의 정책 작업](security-iam-serverless.md#security-iam-serverless-id-based-policies-actions) 단원을 참조하십시오.

## AI 에이전트와의 통합
<a name="cfn-template-mcp-agent-integrations"></a>

배포 후 MCP 서버를 모든 MCP 호환 에이전트와 통합할 수 있습니다. 자세한 내용은 *Amazon Bedrock 개발자 가이드*의 [배포된 MCP 서버 간접 호출](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-mcp.html#runtime-mcp-invoke-server)을 참조하세요.

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

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

### Strands Agents 프레임워크 사용 예
<a name="strands-agent-integration-id"></a>

```
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 웹 사이트*의 [Hosting OpenSearch MCP Server with Amazon Bedrock AgentCore](https://opensearch.org/blog/hosting-opensearch-mcp-server-with-amazon-bedrock-agentcore/)를 참조하세요.