View a markdown version of this page

Listar os recursos disponíveis em um AgentCore gateway - Amazon Bedrock AgentCore

Listar os recursos disponíveis em um AgentCore gateway

Para listar todos os recursos disponíveis fornecidos por um AgentCore gateway, faça uma solicitação POST para o endpoint MCP do gateway e especifique resources/list como método no corpo da solicitação:

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

Substitua os valores a seguir:

  • ${GatewayEndpoint}— O URL do gateway, conforme fornecido na resposta da CreateGatewayAPI.

  • ${Authorization header}— As credenciais de autorização do provedor de identidade quando você configura a autorização de entrada.

  • ${RequestBody}— A carga JSON do corpo da solicitação, conforme especificado em Listar recursos no Model Context Protocol (MCP). Incluir resources/list como method o.

nota

Para obter uma lista de parâmetros com suporte opcional pararesources/list, consulte o params objeto no corpo da solicitação em Recursos na documentação do Model Context Protocol. Na parte superior da página ao lado da barra de pesquisa, você pode selecionar a versão do MCP cuja documentação você deseja visualizar. Certifique-se de que a versão seja compatível com o Amazon Bedrock AgentCore.

A resposta retorna uma lista dos recursos disponíveis com seus URIs, nomes, descrições e tipos de MIME.

nota

Diferentemente das ferramentas e dos prompts, os URIs de recursos são retornados sem um prefixo de nome de destino. O URI original do servidor MCP é retornado no estado em que se encontra.

nota

Quando vários destinos expõem o mesmo URI de recurso, o gateway retorna o recurso do destino com o menor resourcePriority valor.

Importante

Os URIs de recursos são fornecidos pelo destino do servidor MCP downstream e não são validados ou higienizados pelo gateway. Um servidor MCP malicioso ou comprometido pode retornar URIs apontando para endpoints internos (SSRF) ou caminhos locais do sistema de arquivos (por exemplo,). file:///etc/passwd Valide e limpe os URIs de recursos antes de segui-los e não busque ou renderize automaticamente os URIs de destinos não confiáveis do servidor MCP.

Exemplos de código para listar recursos

Para ver exemplos de listagem de recursos disponíveis no gateway, selecione um dos seguintes métodos:

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