Plantillas de integración de servidores MCP
Con las plantillas de servidor del protocolo de contexto para modelos (MCP), puede implementar un servidor MCP alojado en OpenSearch en Amazon Bedrock AgentCore, lo que reduce la complejidad de la integración entre los agentes de IA y las herramientas de OpenSearch. Para más información, consulte ¿Qué es Amazon Bedrock AgentCore?.
Características de la plantilla
Esta plantilla incluye las siguientes características clave para implementar y administrar su servidor MCP.
- Implementación de un servidor MCP administrado
-
Implementa opensearch-mcp-server-py con tiempo de ejecución de Amazon Bedrock AgentCore y proporciona un punto de conexión de agente que envía las solicitudes por proxy al servidor MCP subyacente. Para obtener más información, consulte opensearch-mcp-server-py
en GitHub. - Seguridad y autenticación
-
Gestiona tanto la autenticación entrante (de los usuarios al servidor MCP) como la autenticación saliente (del servidor MCP a OpenSearch) y admite OAuth para la autenticación empresarial.
nota
La plantilla del servidor MCP solo está disponible en las siguientes Regiones de AWS:
-
Este de EE. UU. (Norte de Virginia)
-
Oeste de EE. UU. (Oregón)
-
Europa (Fráncfort)
-
Asia-Pacífico (Sídney)
Para utilizar la plantilla de servidor MCP
Siga estos pasos para implementar la plantilla de servidor MCP y conectarla a su dominio de OpenSearch.
-
Abra la consola de Amazon OpenSearch Service
. -
En el panel de navegación de la izquierda, seleccione Integraciones.
-
Localice la plantilla de integración del servidor MCP.
-
Elija Configurar dominio. A continuación, introduzca el punto de conexión de su dominio de OpenSearch.
La plantilla crea un tiempo de ejecución de AgentCore y los siguientes componentes, si no se especifican los parámetros opcionales correspondientes:
-
Un repositorio de Amazon ECR.
-
O bien, utilice un grupo de usuarios de Amazon Cognito como autorizador OAuth.
-
Una función de ejecución utilizada por el Tiempo de ejecución de AgentCore
Después de completar este procedimiento, debe seguir estos pasos posteriores a la creación:
-
Para Amazon OpenSearch Service: asigne su ARN de rol de ejecución a un rol de backend de OpenSearch para controlar el acceso a su dominio.
Para Amazon OpenSearch sin servidor: cree una política de acceso a los datos que permita que su rol de ejecución acceda a su colección.
-
Obtenga un token de acceso de OAuth de su autorizador. A continuación, utilice este token para acceder al servidor MCP en la URL que aparece en la salida de la pila de CloudFormation.
Para obtener más información, consulte Acciones de política de OpenSearch sin servidor.
Integración con agentes de IA
Tras la implementación, puede integrar el servidor MCP con cualquier agente compatible con MCP. Para obtener más información, consulte Invocar a su servidor MCP desplegado en la Guía para desarrolladores de Amazon Bedrock.
- Integración de desarrolladores
-
Puede agregar el punto de conexión del servidor MCP a la configuración de su agente. También puede usarlo con la CLI para Amazon Q Developer, agentes personalizados u otros agentes compatibles con MCP.
- Implementación empresarial
-
Los agentes alojados en Central pueden conectarse a varios servicios con OpenSearch como un componente. Este agente es compatible con los sistemas de autenticación OAuth y empresariales y se escala para admitir varios usuarios y casos de uso.
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")Para obtener más información, consulte Alojamiento del servidor MCP de OpenSearch con Amazon Bedrock AgentCore