View a markdown version of this page

Elenca le risorse disponibili in un AgentCore gateway - Amazon Bedrock AgentCore

Elenca le risorse disponibili in un AgentCore gateway

Per elencare tutte le risorse disponibili fornite da un AgentCore gateway, effettuate una richiesta POST all'endpoint MCP del gateway e specificate resources/list come metodo nel corpo della richiesta:

POST /mcp HTTP/1.1 Host: ${GatewayEndpoint} Content-Type: application/json Authorization: ${Authorization header} ${RequestBody}

Sostituisci i valori seguenti:

  • ${GatewayEndpoint}— L'URL del gateway, come fornito nella risposta dell'CreateGatewayAPI.

  • ${Authorization header}— Le credenziali di autorizzazione fornite dal provider di identità quando si configura l'autorizzazione in entrata.

  • ${RequestBody}— Il payload JSON del corpo della richiesta, come specificato in Listing resources in the Model Context Protocol (MCP). Includi comeresources/list. method

Nota

Per un elenco dei parametri opzionalmente supportati perresources/list, consultate l'paramsoggetto nel corpo della richiesta nella documentazione Resources in the Model Context Protocol. Nella parte superiore della pagina accanto alla barra di ricerca, puoi selezionare la versione MCP di cui desideri visualizzare la documentazione. Assicurati che la versione sia supportata da Amazon Bedrock AgentCore.

La risposta restituisce un elenco di risorse disponibili con i relativi URI, nomi, descrizioni e tipi MIME.

Nota

A differenza degli strumenti e dei prompt, gli URI delle risorse vengono restituiti senza un prefisso del nome di destinazione. L'URI originale del server MCP viene restituito così com'è.

Nota

Quando più destinazioni espongono lo stesso URI di risorsa, il gateway restituisce la risorsa dalla destinazione con il valore più basso. resourcePriority

Importante

Gli URI delle risorse vengono forniti dalla destinazione del server MCP a valle e non vengono convalidati o disinfettati dal gateway. Un server MCP dannoso o compromesso può restituire URI che puntano a endpoint interni (SSRF) o percorsi di file system locali (ad esempio,). file:///etc/passwd Convalida e disinfetta gli URI delle risorse prima di seguirli e non recupera o renderizza automaticamente gli URI da destinazioni di server MCP non affidabili.

Esempi di codice per elencare le risorse

Per visualizzare esempi di elenco delle risorse disponibili nel gateway, selezionate uno dei seguenti metodi:

Esempio
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}"))