Holen Sie sich eine Aufforderung von einem AgentCore Gateway
Um eine bestimmte Aufforderung zu erhalten, stellen Sie eine POST-Anfrage an den MCP-Endpunkt des Gateways und geben Sie prompts/get als Methode im Hauptteil der Anfrage den Namen der Aufforderung und die Argumente an:
POST /mcp HTTP/1.1
Host: ${GatewayEndpoint}
Content-Type: application/json
Authorization: ${Authorization header}
${RequestBody}
Ersetzen Sie die folgenden Werte:
-
${GatewayEndpoint}— Die URL des Gateways, wie sie in der Antwort der CreateGatewayAPI angegeben wurde.
-
${Authorization header}— Die Autorisierungsdaten des Identitätsanbieters, wenn Sie die eingehende Autorisierung einrichten.
-
${RequestBody}— Die JSON-Payload des Anfragetexts, wie unter Abrufen einer Aufforderung im Model Context Protocol (MCP) angegeben. Fügen prompts/get Sie die Eingabeaufforderung method und ihre Eingabeaufforderung ein und schließen Sie sie ein. name arguments
Die Antwort gibt die gerenderte Aufforderung als Array von Nachrichten zurück, von denen jede eine Rolle und einen Inhalt hat.
Der prompts/get Vorgang leitet die Anfrage live an den Downstream-MCP-Server weiter. Der Name der Aufforderung muss das Zielpräfix enthalten (z. B.). myTarget___myPrompt
Codebeispiele für das Abrufen einer Eingabeaufforderung
Um Beispiele für das Abrufen einer Aufforderung vom Gateway zu sehen, wählen Sie eine der folgenden Methoden aus:
Beispiel
- curl
-
-
Die folgende Curl-Anfrage zeigt eine Beispielanforderung, um eine Aufforderung zu erhalten, die myTarget___code_review über ein Gateway mit der ID mygateway-abcdefghij aufgerufen wird.
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
-
-
HINWEIS: Die Unterstützung von LangGraph MCP-Adapter-Eingabeaufforderungen kann variieren. Verwenden Sie den oben genannten MCP-Client-Ansatz, um die prompts/get zuverlässigste Implementierung zu erzielen.
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')"}
))
Fehler
Der prompts/get Vorgang kann die folgenden Fehlertypen zurückgeben:
-
Fehler, die als Teil des HTTP-Statuscodes zurückgegeben wurden:
-
AuthenticationError
-
Die Anfrage ist aufgrund ungültiger Anmeldeinformationen fehlgeschlagen.
HTTP-Statuscode: 401
-
AuthorizationError
-
Der Anrufer ist nicht berechtigt, die Aufforderung zu erhalten.
HTTP-Statuscode: 403
-
ResourceNotFoundError
-
Die angegebene Eingabeaufforderung ist nicht vorhanden.
HTTP-Statuscode: 404
-
ValidationError
-
Die angegebenen Argumente entsprechen nicht den erforderlichen Argumenten der Aufforderung.
HTTP-Statuscode: 400
-
InternalServerError
-
Es ist ein interner Serverfehler aufgetreten.
HTTP-Statuscode: 500
-
MCP-Fehler. Weitere Informationen zu diesen Fehlertypen finden Sie unter Prompts in der Dokumentation zum Model Context Protocol (MCP).