Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Listar los recursos disponibles en una AgentCore puerta de enlace
Para enumerar todos los recursos disponibles que proporciona una AgentCore puerta de enlace, haga una solicitud POST al punto final MCP de la puerta de enlace y especifique resources/list el método en el cuerpo de la solicitud:
ejemplo
- 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
-
En la versión2026-07-28, cada solicitud incluye el MCP-Protocol-Version encabezado, el encabezado de los Mcp-Method metadatos de la solicitud y los campos de _meta versión en el cuerpo.
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}
La puerta de enlace solo acepta las versiones del protocolo MCP que figuran en el supportedVersions campo de su configuración. protocolConfiguration.mcp Para usar la versión2026-07-28, asegúrese de que la puerta de enlace la supportedVersions incluya. Puedes cambiar las versiones compatibles con la UpdateGateway API.
Reemplace los siguientes valores:
-
${GatewayEndpoint}— La URL de la puerta de enlace, tal como se indica en la respuesta de la CreateGateway API.
-
${Authorization header}— Las credenciales de autorización del proveedor de identidad al configurar la autorización Configure la autorización de entrada para su puerta de enlace entrante.
-
${McpProtocolVersion}— La versión del protocolo MCP de la solicitud, por ejemplo. 2025-11-25 La versión debe ser compatible con su puerta de enlace.
-
${RequestBody}— La carga útil JSON del cuerpo de la solicitud, tal como se especifica en Listar los recursos en el protocolo de contexto modelo (MCP). Incluir resources/list como. method En la versión2026-07-28, incluya también los campos de la _meta versión enparams.
Para obtener una lista de los parámetros que se admiten opcionalmenteresources/list, consulte el params objeto en el cuerpo de la solicitud, en la sección Recursos, en la documentación del Model Context Protocol. En la parte superior de la página, junto a la barra de búsqueda, puede seleccionar la versión del MCP cuya documentación desea ver. Asegúrese de que la versión sea compatible con Amazon Bedrock AgentCore.
La respuesta devuelve una lista de los recursos disponibles con sus URI, nombres, descripciones y tipos de MIME.
A diferencia de las herramientas y las indicaciones, los URI de los recursos se devuelven sin un prefijo en el nombre del destino. El URI original del servidor MCP se devuelve tal cual.
Cuando varios destinos exponen el mismo URI de recurso, la puerta de enlace devuelve el recurso del destino con el valor más bajoresourcePriority.
Los URI de recursos los proporciona el servidor MCP de destino descendente y la puerta de enlace no los valida ni los desinfecta. Un servidor MCP malintencionado o comprometido podría devolver los URI que apunten a puntos finales internos (SSRF) o a rutas del sistema de archivos local (por ejemplo,). file:///etc/passwd Valide y desinfecte los URI de los recursos antes de seguirlos y no obtenga ni renderice automáticamente los URI de destinos de servidores MCP que no sean de confianza.
Ejemplos de código para enumerar los recursos
Para ver ejemplos de cómo enumerar los recursos disponibles en la puerta de enlace, seleccione uno de los siguientes métodos:
ejemplo
- Python requests package (2025-11-25 and earlier)
-
Establezca el MCP-Protocol-Version encabezado en una versión compatible con su puerta de enlace.
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)
-
En la versión2026-07-28, agrega los Mcp-Method encabezados MCP-Protocol-Version y e incluye los campos de _meta versión en el cuerpo de la solicitud. Su puerta de enlace supportedVersions debe incluir2026-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}"))