Reciba un aviso de una AgentCore puerta de enlace
Para obtener una solicitud específica, realice una solicitud POST al punto final MCP de la puerta de enlace y especifique prompts/get el método en el cuerpo de la solicitud, el nombre de la solicitud y los argumentos:
POST /mcp HTTP/1.1
Host: ${GatewayEndpoint}
Content-Type: application/json
Authorization: ${Authorization header}
${RequestBody}
Reemplace los siguientes valores:
-
${GatewayEndpoint}— La URL de la puerta de enlace, tal como se proporciona en la respuesta de la CreateGatewayAPI.
-
${Authorization header}— Las credenciales de autorización del proveedor de identidad al configurar la autorización entrante.
-
${RequestBody}— La carga útil JSON del cuerpo de la solicitud, tal como se especifica en Cómo obtener un mensaje en el Model Context Protocol (MCP). prompts/getIncluya como method e incluya el name del mensaje y su. arguments
La respuesta devuelve el mensaje renderizado como un conjunto de mensajes, cada uno con una función y un contenido.
La prompts/get operación envía la solicitud en directo al servidor MCP descendente. El nombre de la solicitud debe incluir el prefijo de destino (por ejemplo,). myTarget___myPrompt
Ejemplos de código para obtener un mensaje
Para ver ejemplos de cómo obtener un mensaje desde la puerta de enlace, seleccione uno de los siguientes métodos:
ejemplo
- curl
-
-
La siguiente solicitud curl muestra un ejemplo de solicitud para obtener una llamada a myTarget___code_review través de una puerta de enlace con el IDmygateway-abcdefghij.
curl -X POST \
https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": "get-prompt-request",
"method": "prompts/get",
"params": {
"name": "myTarget___code_review",
"arguments": {
"language": "python",
"code": "print(\"hello\")"
}
}
}'
- Python requests package
-
-
import requests
import json
def get_prompt(gateway_url, access_token, prompt_name, arguments):
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}"
}
payload = {
"jsonrpc": "2.0",
"id": "get-prompt-request",
"method": "prompts/get",
"params": {
"name": prompt_name,
"arguments": arguments
}
}
response = requests.post(gateway_url, headers=headers, json=payload)
return response.json()
# Example usage
gateway_url = "https://${GatewayEndpoint}/mcp" # Replace with your actual gateway endpoint
access_token = "${AccessToken}" # Replace with your actual access token
result = get_prompt(
gateway_url,
access_token,
"myTarget___code_review", # Replace with {targetName}___{promptName}
{"language": "python", "code": "print('hello')"}
)
print(json.dumps(result, indent=2))
- MCP Client
-
-
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
import asyncio
async def execute_mcp(
url,
token,
prompt_name,
prompt_arguments,
headers=None
):
default_headers = {
"Authorization": f"Bearer {token}"
}
headers = {**default_headers, **(headers or {})}
async with streamablehttp_client(
url=url,
headers=headers,
) as (
read_stream,
write_stream,
callA,
):
async with ClientSession(read_stream, write_stream) as session:
# 1. Perform initialization handshake
print("Initializing MCP...")
_init_response = await session.initialize()
print(f"MCP Server Initialize successful! - {_init_response}")
# 2. Get specific prompt
print(f"Getting prompt: {prompt_name}")
prompt_response = await session.get_prompt(
name=prompt_name,
arguments=prompt_arguments
)
print(f"Prompt response: {prompt_response}")
return prompt_response
async def main():
url = "https://${GatewayEndpoint}/mcp"
token = "your_bearer_token_here"
prompt_name = "myTarget___code_review"
prompt_arguments = {
"language": "python",
"code": "print('hello')"
}
await execute_mcp(
url=url,
token=token,
prompt_name=prompt_name,
prompt_arguments=prompt_arguments
)
if __name__ == "__main__":
asyncio.run(main())
- LangGraph MCP Client
-
-
NOTA: La compatibilidad con los avisos del adaptador LangGraph MCP puede variar. Utilice el enfoque de cliente MCP anterior para obtener la implementación más confiableprompts/get.
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def get_prompt(url, token, prompt_name, arguments):
headers = {"Authorization": f"Bearer {token}"}
async with streamablehttp_client(url=url, headers=headers) as (
read_stream, write_stream, callA
):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
response = await session.get_prompt(
name=prompt_name,
arguments=arguments
)
for message in response.messages:
print(f"{message.role}: {message.content}")
asyncio.run(get_prompt(
"https://${GatewayEndpoint}/mcp",
"${AccessToken}",
"myTarget___code_review",
{"language": "python", "code": "print('hello')"}
))
Errores
La prompts/get operación puede devolver los siguientes tipos de errores:
-
Errores devueltos como parte del código de estado HTTP:
-
AuthenticationError
-
La solicitud falló debido a que las credenciales de autenticación no son válidas.
Código de estado HTTP: 401
-
AuthorizationError
-
La persona que llama no tiene permiso para recibir el mensaje.
Código de estado HTTP: 403
-
ResourceNotFoundError
-
El mensaje especificado no existe.
Código de estado HTTP: 404
-
ValidationError
-
Los argumentos proporcionados no satisfacen los argumentos obligatorios de la solicitud.
Código de estado HTTP: 400
-
InternalServerError
-
Se ha producido un error interno del servidor.
Código de estado HTTP: 500
-
Errores de MCP. Para obtener más información sobre estos tipos de errores, consulte las solicitudes en la documentación del Model Context Protocol (MCP).