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.
Recherchez des outils dans votre AgentCore passerelle à l'aide d'une requête en langage naturel
Si vous avez activé la recherche sémantique pour votre passerelle lorsque vous l'avez créée, vous pouvez appeler l'x_amz_bedrock_agentcore_searchoutil pour rechercher des outils dans votre passerelle à l'aide d'une requête en langage naturel. La recherche sémantique est particulièrement utile lorsque vous disposez de nombreux outils et que vous devez trouver ceux qui conviennent le mieux à votre cas d'utilisation. Pour savoir comment activer la recherche sémantique lors de la création d'une passerelle, consultez Créer une passerelle Amazon Bedrock AgentCore .
Pris en charge AWS Régions pour la recherche sémantique
La recherche sémantique est prise en charge dans les AWS régions suivantes :
| Nom de la région |
Région |
|
USA Est (Virginie du Nord)
|
us-east-1
|
|
USA Est (Ohio)
|
us-east-2
|
|
USA Ouest (Oregon)
|
us-west-2
|
|
Asie-Pacifique (Hyderabad)
|
ap-south-2
|
|
Asie-Pacifique (Mumbai)
|
ap-south-1
|
|
Asia Pacific (Seoul)
|
ap-northeast-2
|
|
Asie-Pacifique (Singapour)
|
ap-southeast-1
|
|
Asie-Pacifique (Sydney)
|
ap-southeast-2
|
|
Asia Pacific (Tokyo)
|
ap-northeast-1
|
|
Canada (Central)
|
ca-central-1
|
|
Europe (Francfort)
|
eu-central-1
|
|
Europe (Irlande)
|
eu-west-1
|
|
Europe (Londres)
|
eu-west-2
|
|
Europe (Milan)
|
eu-south-1
|
|
Europe (Paris)
|
eu-west-3
|
|
Europe (Espagne)
|
eu-south-2
|
|
Europe (Stockholm)
|
eu-north-1
|
|
Amérique du Sud (São Paulo)
|
sa-east-1
|
Pour rechercher un outil à l'aide de cet AgentCore outil, envoyez la requête POST suivante avec la tools/call méthode au point de terminaison MCP de la passerelle :
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}
{
"jsonrpc": "2.0",
"id": "${RequestName}",
"method": "tools/call",
"params": {
"name": "x_amz_bedrock_agentcore_search",
"arguments": {
"query": ${Query}
}
}
}
- 2026-07-28
-
Lors de la version2026-07-28, chaque demande contient l'MCP-Protocol-Versionen-tête, les en-têtes Mcp-Method et les en-têtes Mcp-Name des métadonnées de la demande, ainsi que 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/call
Mcp-Name: x_amz_bedrock_agentcore_search
{
"jsonrpc": "2.0",
"id": "${RequestName}",
"method": "tools/call",
"params": {
"name": "x_amz_bedrock_agentcore_search",
"arguments": {
"query": ${Query}
},
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientInfo": {
"name": "my-agent",
"version": "1.0.0"
},
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}
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.
-
${RequestName}— Un nom pour la demande.
-
${Query}— Une requête en langage naturel pour rechercher des outils.
La réponse renvoie une liste d'outils pertinents pour la requête.
Exemples de code pour la recherche d'outils
Pour voir des exemples d'utilisation de requêtes en langage naturel pour rechercher des outils 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 search_tools(gateway_url, access_token, query):
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}",
"MCP-Protocol-Version": "2025-11-25"
}
payload = {
"jsonrpc": "2.0",
"id": "search-tools-request",
"method": "tools/call",
"params": {
"name": "x_amz_bedrock_agentcore_search",
"arguments": {
"query": query
}
}
}
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
results = search_tools(gateway_url, access_token, "find order information")
print(json.dumps(results, indent=2))
- Python requests package (2026-07-28)
-
Dans la version2026-07-28, incluez les en-têtes Mcp-Method Mcp-Name et les métadonnées de demande et les champs de _meta version dans le corps. L'MCP-Protocol-Versionen-tête doit correspondre_meta.io.modelcontextprotocol/protocolVersion. Votre passerelle supportedVersions doit inclure2026-07-28.
import requests
import json
def search_tools(gateway_url, access_token, query):
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}",
"MCP-Protocol-Version": "2026-07-28",
"Mcp-Method": "tools/call",
"Mcp-Name": "x_amz_bedrock_agentcore_search"
}
payload = {
"jsonrpc": "2.0",
"id": "search-tools-request",
"method": "tools/call",
"params": {
"name": "x_amz_bedrock_agentcore_search",
"arguments": {
"query": query
},
"_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
results = search_tools(gateway_url, access_token, "find order information")
print(json.dumps(results, indent=2))
- MCP Client
-
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
import asyncio
async def execute_mcp(
url,
token,
tool_params,
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. Call specific tool
print(f"Calling tool: {tool_params['name']}")
tool_response = await session.call_tool(
name=tool_params['name'],
arguments=tool_params['arguments']
)
print(f"Tool response: {tool_response}")
return tool_response
async def main():
url = "https://${GatewayEndpoint}/mcp"
token = "your_bearer_token_here"
tool_params = {
"name": "x_amz_bedrock_agentcore_search",
"arguments": {
"query": "How do I find order details?"
}
}
await execute_mcp(
url=url,
token=token,
tool_params=tool_params
)
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
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]}")
result = mcp_client.call_tool_sync(
tool_use_id="tool-123", # A unique ID for the tool call
name="x_amz_bedrock_agentcore_search", # The name of the tool to invoke
arguments={"query": "find order information"} # A dictionary of arguments for the tool
)
print(result)
url = {gatewayUrl}
token = {AccessToken}
run_agent(url, token)
- LangGraph MCP Client
-
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
url = ""
headers = {}
def filter_search_tool(
):
mcp_client = MultiServerMCPClient(
{
"agent": {
"transport": "streamable_http",
"url": url,
"headers": headers,
}
}
)
tools = asyncio.run(mcp_client.get_tools())
builtin_search_tool = []
for tool in tools:
if tool.name == "x_amz_bedrock_agentcore_search":
builtin_search_tool.append(tool)
return builtin_search_tool
def execute_agent(
user_prompt,
model_id,
region,
tools
):
model = ChatBedrock(model_id=model_id, region_name=region)
agent = create_react_agent(model, filter_search_tool())
_response = asyncio.run(agent.ainvoke({
"messages": user_prompt
}))
_response = _response.get('messages', {})[1].content
print(
f"Invoke Langchain Agents Response"
f"Response - \n{_response}\n"
)
return _response