View a markdown version of this page

Répertorier les ressources disponibles dans une AgentCore passerelle - Base rocheuse de l'Amazonie AgentCore

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Répertorier les ressources disponibles dans une AgentCore passerelle

Pour répertorier toutes les ressources disponibles fournies par une AgentCore passerelle, envoyez une requête POST au point de terminaison MCP de la passerelle et spécifiez resources/list comme méthode dans le corps de la demande :

Exemple
2025-11-25 and earlier
POST /mcp HTTP/1.1 Host: ${GatewayEndpoint} Accept: application/json, text/event-stream Content-Type: application/json Authorization: ${Authorization header} MCP-Protocol-Version: ${McpProtocolVersion} ${RequestBody}
2026-07-28

Lors de la version2026-07-28, chaque demande contient l'MCP-Protocol-Versionen-tête, l'en-tête Mcp-Method des métadonnées de la demande et les champs de _meta version dans le corps.

POST /mcp HTTP/1.1 Host: ${GatewayEndpoint} Accept: application/json, text/event-stream Content-Type: application/json Authorization: ${Authorization header} MCP-Protocol-Version: 2026-07-28 Mcp-Method: resources/list ${RequestBody}
Note

La passerelle accepte uniquement les versions du protocole MCP répertoriées dans le supportedVersions champ de sa protocolConfiguration.mcp configuration. Pour utiliser la version2026-07-28, assurez-vous que votre passerelle l'supportedVersionsinclut. Vous pouvez modifier les versions prises en charge à l'aide de l'UpdateGatewayAPI.

Remplacez les valeurs suivantes :

  • ${GatewayEndpoint}— L'URL de la passerelle, telle que fournie dans la réponse de l'CreateGatewayAPI.

  • ${Authorization header}— Les informations d'autorisation fournies par le fournisseur d'identité lorsque vous configurez l'autorisation Configurez l'autorisation entrante pour votre passerelle entrante.

  • ${McpProtocolVersion}— La version du protocole MCP pour la demande, telle que2025-11-25. La version doit être prise en charge par votre passerelle.

  • ${RequestBody}— La charge utile JSON du corps de la requête, comme spécifié dans Listing resources in the Model Context Protocol (MCP). Inclure resources/list en tant quemethod. Sur la version2026-07-28, incluez également les champs de _meta version dansparams.

Note

Pour obtenir la liste des paramètres éventuellement pris en charge pourresources/list, consultez l'paramsobjet dans le corps de la requête dans la section Ressources de la documentation du Model Context Protocol. En haut de la page, à côté de la barre de recherche, vous pouvez sélectionner la version du MCP dont vous souhaitez consulter la documentation. Assurez-vous que la version est prise en charge par Amazon Bedrock AgentCore.

La réponse renvoie une liste des ressources disponibles avec leurs URI, leurs noms, leurs descriptions et leurs types MIME.

Note

Contrairement aux outils et aux invites, les URI des ressources sont renvoyés sans préfixe de nom de cible. L'URI d'origine du serveur MCP est renvoyé tel quel.

Note

Lorsque plusieurs cibles exposent le même URI de ressource, la passerelle renvoie la ressource de la cible dont la resourcePriority valeur est la plus faible.

Important

Les URI de ressources sont fournis par la cible du serveur MCP en aval et ne sont ni validés ni nettoyés par la passerelle. Un serveur MCP malveillant ou compromis peut renvoyer des URI pointant vers des points de terminaison internes (SSRF) ou des chemins de système de fichiers locaux (par exemple). file:///etc/passwd Validez et nettoyez les URI des ressources avant de les suivre, et ne récupérez ni ne restituez automatiquement les URI provenant de cibles de serveurs MCP non fiables.

Exemples de code pour répertorier les ressources

Pour voir des exemples de liste des ressources disponibles dans la passerelle, sélectionnez l'une des méthodes suivantes :

Exemple
Python requests package (2025-11-25 and earlier)

Définissez l'MCP-Protocol-Versionen-tête sur une version prise en charge par votre passerelle.

import requests import json def list_resources(gateway_url, access_token): headers = { "Content-Type": "application/json", "Authorization": f"Bearer {access_token}", "MCP-Protocol-Version": "2025-11-25" } 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))
Python requests package (2026-07-28)

Sur version2026-07-28, ajoutez les Mcp-Method en-têtes MCP-Protocol-Version et et incluez les champs de _meta version dans le corps de la demande. Votre passerelle supportedVersions doit inclure2026-07-28.

import requests import json def list_resources(gateway_url, access_token): headers = { "Content-Type": "application/json", "Authorization": f"Bearer {access_token}", "MCP-Protocol-Version": "2026-07-28", "Mcp-Method": "resources/list" } payload = { "jsonrpc": "2.0", "id": "list-resources-request", "method": "resources/list", "params": { "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientInfo": {"name": "my-agent", "version": "1.0.0"}, "io.modelcontextprotocol/clientCapabilities": {} } } } 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
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
# 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
# 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}"))