

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

# 에이전트 프레임워크와 함께 사용
<a name="mcp-server-configure-frameworks"></a>

OpenSearch MCP 서버를 Python 에이전트 프레임워크에 직접 통합하여 자율 에이전트가 더 큰 워크플로의 일부로 OpenSearch에 프로그래밍 방식으로 액세스할 수 있도록 할 수 있습니다.

## Strands Agents
<a name="mcp-server-strands"></a>

[Strands Agents](https://strandsagents.com)는 기본 MCP 지원 및 Amazon Bedrock을 기본 모델 공급자로 사용하는 AWS네이티브 에이전트 SDK입니다. 다음 예시에서는 적절한 환경 변수를 설정하여 Strands 에이전트를 OpenSearch Service 도메인 또는 OpenSearch Serverless 컬렉션에 연결합니다. OpenSearch Serverless 컬렉션에 연결할 `true` 때 `AWS_OPENSEARCH_SERVERLESS`로 설정하고 관리형 도메인의 경우 생략합니다.

```
import os
from strands import Agent
from strands.tools.mcp import MCPClient
from mcp import stdio_client, StdioServerParameters

# For a managed domain:
#   OPENSEARCH_URL = https://<domain-endpoint>.<region>.es.amazonaws.com
#
# For an OpenSearch Serverless collection, also set:
#   AWS_OPENSEARCH_SERVERLESS = true
#   OPENSEARCH_URL = https://<collection-id>.<region>.aoss.amazonaws.com
opensearch_client = MCPClient(
    lambda: stdio_client(
        StdioServerParameters(
            command="uvx",
            args=["opensearch-mcp-server-py"],
            env={
                "OPENSEARCH_URL":            os.environ["OPENSEARCH_URL"],
                "AWS_REGION":                os.environ["AWS_REGION"],
                "AWS_IAM_ARN":               os.environ["AWS_IAM_ARN"],
                # Set to "true" for OpenSearch Serverless, omit for managed domains
                "AWS_OPENSEARCH_SERVERLESS": os.environ.get("AWS_OPENSEARCH_SERVERLESS", "false"),
            },
        )
    )
)

with opensearch_client:
    agent = Agent(tools=opensearch_client.list_tools_sync())
    response = agent("List all indexes and show the document count for each")
    print(response)
```

Strands는 Amazon Bedrock을 기본 모델 공급자로 사용합니다. 리전에서 Claude에 대해 AWS 자격 증명을 구성하고 모델 액세스를 활성화했는지 확인합니다. 자세한 내용은 [Strands Bedrock 공급자](https://strandsagents.com/docs/user-guide/concepts/model-providers/amazon-bedrock/) 설명서를 참조하세요.

## LangGraph
<a name="mcp-server-langgraph"></a>

[LangGraph](https://github.com/langchain-ai/langgraph)는 상태 저장 에이전트를 빌드하기 위한 하위 수준 오케스트레이션 프레임워크입니다. 다음 예제에서는 `langchain-mcp-adapters`를 사용하여 Amazon Bedrock에서 지원하는 LangGraph ReAct 에이전트에 OpenSearch MCP 도구를 로드합니다. Strands와 마찬가지로 OpenSearch Serverless 컬렉션에 연결할 `true` 때를 `AWS_OPENSEARCH_SERVERLESS`로 설정합니다.

```
import asyncio
import os
from langchain_aws import ChatBedrock
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent

async def main():
    async with MultiServerMCPClient(
        {
            "opensearch": {
                "command": "uvx",
                "args": ["opensearch-mcp-server-py"],
                "env": {
                    # Managed domain:  https://<domain-endpoint>.<region>.es.amazonaws.com
                    # Serverless:      https://<collection-id>.<region>.aoss.amazonaws.com
                    "OPENSEARCH_URL":            os.environ["OPENSEARCH_URL"],
                    "AWS_REGION":                os.environ["AWS_REGION"],
                    "AWS_IAM_ARN":               os.environ["AWS_IAM_ARN"],
                    # Set to "true" for OpenSearch Serverless, omit for managed domains
                    "AWS_OPENSEARCH_SERVERLESS": os.environ.get("AWS_OPENSEARCH_SERVERLESS", "false"),
                },
                "transport": "stdio",
            }
        }
    ) as mcp_client:
        tools = mcp_client.get_tools()
        model = ChatBedrock(
            model_id="anthropic.claude-3-5-sonnet-20241022-v2:0",
            region_name=os.environ["AWS_REGION"],
        )
        agent = create_react_agent(model, tools)
        result = await agent.ainvoke(
            {"messages": [{"role": "user", "content": "Check cluster health and list all indexes"}]}
        )
        print(result["messages"][-1].content)

asyncio.run(main())
```

필수 패키지를 설치합니다.

```
pip install langchain-aws langchain-mcp-adapters langgraph
```