View a markdown version of this page

Verfügbare Ressourcen in einem AgentCore Gateway auflisten - Amazon Grundgestein AgentCore

Verfügbare Ressourcen in einem AgentCore Gateway auflisten

Um alle verfügbaren Ressourcen aufzulisten, die ein AgentCore Gateway bereitstellt, stellen Sie eine POST-Anfrage an den MCP-Endpunkt des Gateways und geben Sie resources/list als Methode im Hauptteil der Anfrage Folgendes 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 Ressourcen im Model Context Protocol (MCP) auflisten angegeben. Einschließen resources/list als. method

Anmerkung

Eine Liste der optional unterstützten Parameter für resources/list finden Sie in der Dokumentation zum Model Context Protocol unter Ressourcen für das params Objekt im Anforderungstext. Oben auf der Seite neben der Suchleiste können Sie die MCP-Version auswählen, deren Dokumentation Sie anzeigen möchten. Stellen Sie sicher, dass es sich bei der Version um eine von Amazon Bedrock AgentCore unterstützte Version handelt.

Die Antwort gibt eine Liste verfügbarer Ressourcen mit ihren URIs, Namen, Beschreibungen und MIME-Typen zurück.

Anmerkung

Im Gegensatz zu Tools und Eingabeaufforderungen werden Ressourcen-URIs ohne Zielnamenpräfix zurückgegeben. Die ursprüngliche URI vom MCP-Server wird unverändert zurückgegeben.

Anmerkung

Wenn mehrere Ziele dieselbe Ressourcen-URI verfügbar machen, gibt das Gateway die Ressource aus dem Ziel mit dem niedrigsten Wert resourcePriority zurück.

Wichtig

Ressourcen-URIs werden vom Downstream-MCP-Serverziel bereitgestellt und vom Gateway weder validiert noch bereinigt. Ein böswilliger oder kompromittierter MCP-Server könnte URIs zurückgeben, die auf interne Endpunkte (SSRF) oder lokale Dateisystempfade verweisen (z. B.). file:///etc/passwd Überprüfen und bereinigen Sie Ressourcen-URIs, bevor Sie ihnen folgen, und rufen Sie URIs nicht automatisch von nicht vertrauenswürdigen MCP-Serverzielen ab oder rendern Sie sie.

Codebeispiele für das Auflisten von Ressourcen

Um Beispiele für das Auflisten verfügbarer Ressourcen im Gateway zu sehen, wählen Sie eine der folgenden Methoden aus:

Beispiel
Python requests package
  1. import requests import json def list_resources(gateway_url, access_token): headers = { "Content-Type": "application/json", "Authorization": f"Bearer {access_token}" } payload = { "jsonrpc": "2.0", "id": "list-resources-request", "method": "resources/list" } 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 resources = list_resources(gateway_url, access_token) print(json.dumps(resources, indent=2))
MCP Client
  1. import asyncio from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client async def execute_mcp( url, token, 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. List available resources print("Listing resources...") cursor = True resources = [] while cursor: next_cursor = cursor if isinstance(cursor, bool): next_cursor = None list_resources_response = await session.list_resources(next_cursor) resources.extend(list_resources_response.resources) cursor = list_resources_response.nextCursor if resources: for resource in resources: print(f"{resource.uri} - {resource.name} ({resource.mimeType})") print(f"Total resources: {len(resources)}") async def main(): url = "https://${GatewayEndpoint}/mcp" token = "your_bearer_token_here" # Optional additional headers additional_headers = { "Content-Type": "application/json", } await execute_mcp( url=url, token=token, headers=additional_headers ) # Run the async function if __name__ == "__main__": asyncio.run(main())
Strands MCP Client
  1. # NOTE: Strands SDK resource support may vary. Use the MCP Client approach # above for the most reliable resources/list implementation. from strands.tools.mcp.mcp_client import MCPClient from mcp.client.streamable_http import streamablehttp_client def create_streamable_http_transport(mcp_url: str, access_token: str): return streamablehttp_client(mcp_url, headers={"Authorization": f"Bearer {access_token}"}) def run_agent(mcp_url: str, access_token: str): mcp_client = MCPClient(lambda: create_streamable_http_transport(mcp_url, access_token)) with mcp_client: result = mcp_client.list_resources_sync() print(f"Found the following resources: {[r.uri for r in result.resources]}") run_agent(<MCP URL>, <Access token>)
LangGraph MCP Client
  1. # NOTE: LangGraph MCP adapter resource support may vary. Use the MCP Client # approach above for the most reliable resources/list implementation. import asyncio from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client async def list_resources(url, token): 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.list_resources() for resource in response.resources: print(f"{resource.uri} - {resource.name}") asyncio.run(list_resources("https://${GatewayEndpoint}/mcp", "${AccessToken}"))