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 outils disponibles dans une AgentCore passerelle
Pour répertorier tous les outils disponibles fournis par une AgentCore passerelle, envoyez une requête POST au point de terminaison MCP de la passerelle et spécifiez tools/list comme méthode dans le corps de la requête :
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: tools/list
${RequestBody}
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, telle que spécifiée dans les outils de listage du Model Context Protocol (MCP). Inclure tools/list en tant quemethod. Sur la version2026-07-28, incluez également les champs de _meta version dansparams.
Pour obtenir la liste des paramètres éventuellement pris en charge pourtools/list, consultez l'paramsobjet dans le corps de la requête dans la section Outils 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 outils disponibles avec leurs noms, leurs descriptions et leurs schémas de paramètres.
Exemples de code pour les outils de référencement
Pour voir des exemples de liste des outils 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_tools(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-tools-request",
"method": "tools/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
tools = list_tools(gateway_url, access_token)
print(json.dumps(tools, 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_tools(gateway_url, access_token):
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}",
"MCP-Protocol-Version": "2026-07-28",
"Mcp-Method": "tools/list"
}
payload = {
"jsonrpc": "2.0",
"id": "list-tools-request",
"method": "tools/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
tools = list_tools(gateway_url, access_token)
print(json.dumps(tools, 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 tools
print("Listing tools...")
cursor = True
tools = []
while cursor:
next_cursor = cursor
if type(cursor) == bool:
next_cursor = None
list_tools_response = await session.list_tools(next_cursor)
tools.extend(list_tools_response.tools)
cursor = list_tools_response.nextCursor
tool_names = []
if tools:
for tool in tools:
tool_names.append(tool.name)
tool_names_string = "\n".join(tool_names)
print(
f"List MCP tools. # of tools - {len(tools)}"
f"List of tools - \n{tool_names_string}\n"
)
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
-
from strands.tools.mcp.mcp_client import MCPClient
from mcp.client.streamable_http import streamablehttp_client
import os
def create_streamable_http_transport(mcp_url: str, access_token: str):
return streamablehttp_client(mcp_url, headers={"Authorization": f"Bearer {access_token}"})
def get_full_tools_list(client):
"""
List tools w/ support for pagination
"""
more_tools = True
tools = []
pagination_token = None
while more_tools:
tmp_tools = client.list_tools_sync(pagination_token=pagination_token)
tools.extend(tmp_tools)
if tmp_tools.pagination_token is None:
more_tools = False
else:
more_tools = True
pagination_token = tmp_tools.pagination_token
return tools
def run_agent(mcp_url: str, access_token: str):
mcp_client = MCPClient(lambda: create_streamable_http_transport(mcp_url, access_token))
with mcp_client:
tools = get_full_tools_list(mcp_client)
print(f"Found the following tools: {[tool.tool_name for tool in tools]}")
run_agent(<MCP URL>, <Access token>)
- LangGraph MCP Client
-
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
def list_tools(
url,
headers
):
mcp_client = MultiServerMCPClient(
{
"agent": {
"transport": "streamable_http",
"url": url,
"headers": headers,
}
}
)
tools = asyncio.run(mcp_client.get_tools())
tool_details = []
tool_names = []
for tool in tools:
tool_names.append(f"{tool.name}")
tool_detail = f"{tool.name} - {tool.description} \n"
tool_properties = tool.args_schema.get('properties', {})
properties = []
for property_name, tool_property in tool_properties.items():
properties.append(f"{property_name} - {tool_property.get('description', None)} \n")
tool_details.append(f"{tool_detail}{"\n".join(properties)}")
tool_details_string = "\n".join(tool_details)
tool_names_string = "\n".join(tool_names)
print(
f"Langchain: List MCP tools. # of tools - {len(tools)}\n",
f"Langchain: List of tool names - \n{tool_names_string}\n"
f"Langchain: Details of tools - \n{tool_details_string}\n"
)
Si la recherche est activée sur la passerelle, l'outil de recherche x_amz_bedrock_agentcore_search sera répertorié en premier dans la réponse.