Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Warning
Wenn Sie eine Verbindung zu Nicht-Foundry-Tools herstellen, können Ihnen Kosten entstehen, und Daten können außerhalb des Compliance-Bereichs von Foundry gesendet und gemäß den geltenden Bedingungen und Richtlinien zur Datenverarbeitung verarbeitet werden. In der Dokumentation des Tools erfahren Sie, wie Sie den Zugriff auf das Tool verwalten.
In diesem Artikel erfahren Sie, wie Sie eine Toolbox erstellen, Tools hinzufügen und konfigurieren, überprüfen, ob sie geladen werden, die Toolbox in einen gehosteten Agent integrieren und Toolboxversionen verwalten. Eine konzeptionelle Einführung in Toolboxen finden Sie unter Was ist Toolbox in Foundry?. Informationen zur Toolkonfigurationssyntax und Authentifizierungsoptionen für jeden Tooltyp finden Sie unter Konfigurieren von Tools.
Voraussetzungen
Ein aktives Microsoft Foundry-Projekt.
RBAC: Gewähren Sie der Rolle " Foundry User " im Foundry-Projekt jede Identität, die für Ihr Szenario gilt:
- Entwickler (immer erforderlich) – die Identität, die Toolboxversionen erstellt, aktualisiert und verwaltet.
- Identität des Agents (erforderlich bei Verwendung eines Prompt-Agents) – die verwaltete Identität des Agents, die zur Laufzeit Tools aufruft.
- Endbenutzer (nur für OAuth-Flüsse erforderlich) – jeder Benutzer, dessen Identität über OAuth- oder UserEntraToken-Verbindungen (z. B. OAuth-basiertes MCP- oder Benutzer-Entra-Token (verwaltete Benutzeridentitäts-Passthrough) übertragen wird.
Schrittweise Anleitungen zum Zuweisen der Rolle " Foundry User " zu einer Agentidentität finden Sie unter "Zuweisen von Berechtigungen zur Agentidentität".
Ihr Foundry-Projekt muss sich in einer der unterstützten Regionen befinden. Einzelne Werkzeugtypen in einer Toolbox sind nach Region und Modell weiter eingeschränkt – nicht alle Werkzeugtypen sind in jeder Region oder mit jedem Modell verfügbar. Siehe Region und Modellkompatibilität.
Installieren Sie das Microsoft Foundry Toolkit für Visual Studio Code Erweiterung aus dem Visual Studio Code Marketplace.
Python SDK:
pip install azure-ai-projects azure-identity.NET SDK: Installieren Sie den kohärenten Vorschaupaketsatz und Azure Identity:
dotnet add package Azure.AI.Projects --version 2.1.0-beta.4 dotnet add package Azure.AI.Projects.Agents --version 2.1.0-beta.4 dotnet add package Azure.AI.Extensions.OpenAI --version 2.1.0-beta.4 dotnet add package Azure.IdentityJavaScript SDK:
npm install @azure/ai-projects @azure/identityAzure Developer CLI: Installieren Sie die Azure Developer CLI (
azd, 1,25 oder höher) und das einheitliche Foundry CLI-Erweiterungspaket:# Install the unified bundle (provides azd ai agent, connection, inspector, # project, routine, skill, and toolbox). azd ext install microsoft.foundry
Wichtig
- Eine Toolbox unterstützt höchstens ein Tool ohne Feld
name(Websuche, Azure KI-Suche, Codedolmetscher, Dateisuche). Wenn Sie mehrere Instanzen desselben Tooltyps einschließen möchten, legen Sie für jede Instanz eine eindeutigenameInstanz fest, um sie zu unterscheiden. Wenn Sie zwei Instanzen desselben Typs ohne einnameeinschließen, wird eininvalid_payloadFehler zurückgegeben. Ausführliche Informationen finden Sie unter "Mehrere Tooltypen". - Fügen Sie jedem Werkzeug in Ihrem Werkzeugkasten ein
descriptionhinzu, um dem Modell bei der Auswahl des richtigen Werkzeugs für jede Anforderung zu helfen. - Lesen Sie die Dokumentation der einzelnen Tools sorgfältig, um mehr über die Einrichtung, Einschränkungen und Warnungen der einzelnen Tools zu erfahren.
Wenn Sie GitHub Copilot für Azure zum Erstellen eines Gerüsts für einen gehosteten Agent verwenden, der die Toolbox verwendet, beschreiben die folgenden Qualifikationsverweise denselben Endpunktvertrag (env var, headers, MCP-Protokoll, Zitatmuster und Problembehandlung), den der Agent implementieren muss:
- Toolboxreferenz für Anleitungen zum Endpunktformat, MCP-Protokoll, OAuth-Zustimmungsbehandlung, Zitatmuster und Problembehandlung.
- Verwenden Sie die Toolbox in einem gehosteten Agenten, um Hinweise zur Endpunktauflösung, zum Umgebungsvariablenvertrag, zur Nutzlaststruktur, zu Code-Integrationsmustern und zur Ablaufverfolgung zu finden.
Schnellpfad
- Erstellen:Eine Toolbox-Version erstellen mit einem oder mehreren Tools. Halten Sie jeden Codeausschnitt auf eine einzelne Aufgabe konzentriert und auf maximal 30 Zeilen beschränkt; verwenden Sie für vollständige Anwendungen die verlinkten, gepflegten Beispiele.
- Veröffentlichen oder Auswählen einer Version: Die erste Version wird automatisch zum Standard. Testen und höherstufen Sie für spätere Versionen eine Version, wenn Sie bereit sind, sie als Standard zu verwenden.
- Verbinden und verwenden: Kopieren Sie den Consumer-Endpunkt der Toolbox und integrieren Sie ihn dann in Ihren Agenten.
- Überprüfen Sie Folgendes: Verwenden Sie den versionsspezifischen Endpunkt, um die verfügbaren Tools auflisten zu können, und führen Sie dann eine Agentanforderung aus, die ein erwartetes Tool aufruft.
Featureunterstützung
SDKs und Tools unterstützen Toolbox-Verwaltungsvorgänge, wie in der folgenden Tabelle dargestellt.
| Operation | Python SDK | REST-API | .NET SDK | JavaScript SDK | Azure Developer-Befehlszeilenschnittstelle (CLI) | Gießerei-Werkzeugsatz |
|---|---|---|---|---|---|---|
| Toolbox Aktualisierung, auflisten, abrufen und löschen | ✔️ | ✔️ | ✔️ | ✔️ | N/A | ✔️ |
| Toolboxversion erstellen | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Toolboxversionsliste, Abrufen und Löschen | ✔️ | ✔️ | ✔️ | ✔️ | N/A | Nein. Die Benutzeroberfläche zeigt nur die neueste Version an. |
| Leitplanke (RAI-Richtlinie) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Sie können Toolboxen auch im Gespräch mit Foundry MCP Server verwalten. Siehe "Verwalten von Toolboxen mit Foundry MCP Server".
Sie können einer Toolbox die folgenden Tools hinzufügen. Diese Tabelle enthält SDK- und Toolunterstützung für jedes Tool und ob das Tool auch direkt an einen Agent (außerhalb einer Toolbox) angefügt werden kann. Informationen dazu, wie der Datenverkehr jedes Tools fließt, wenn Ihr Projekt die Netzwerkisolation verwendet, finden Sie unter "Netzwerkisolation" für eine Toolbox.
| Werkzeug | In einem Werkzeugkasten | Direkte Toolintegration | Python SDK | REST-API | .NET SDK | JavaScript SDK | Azure Developer-Befehlszeilenschnittstelle (CLI) | Gießerei-Werkzeugsatz |
|---|---|---|---|---|---|---|---|---|
| Modellkontextprotokoll (MCP) | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Websuche | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Azure KI-Suche | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Codedolmetscher | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Dateisuche | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| OpenAPI | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Nein |
| Agent-zu-Agent-Kommunikation (A2A) | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Nein |
| Browserautomatisierung | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Nein |
| Fabric IQ | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Arbeits-IQ | ✅ Ja | ✅ Ja | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Toolsuche | ✅ Ja | ❌ Nein | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Fähigkeiten | ✅ Ja | ❌ Nein | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Nein |
Die Verfügbarkeit von Tools hängt auch von der Region und dem Modell Ihres Projekts ab. Stellen Sie vor der Bereitstellung einer Toolbox sicher, dass Ihre Zielregion die tooltypen unterstützt, die Sie verwenden möchten. Siehe Toolunterstützung nach Region und Modell.
Erstellen einer Toolboxversion
Erstellen Sie eine Toolboxversion basierend auf den benötigten Tools.
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import MCPToolboxTool, ToolSearchToolboxTool, WebSearchToolboxTool
# Create Foundry project client
endpoint = "https://<your-foundry-account>.services.ai.azure.com/api/projects/<your-project>"
project = AIProjectClient(
endpoint=endpoint,
credential=DefaultAzureCredential(),
)
# Create toolbox version with web search and MCP tools
toolbox_version = project.toolboxes.create_version(
name="my-toolbox",
description="Toolbox with web search and an MCP server",
tools=[
WebSearchToolboxTool(),
MCPToolboxTool(
server_label="myserver",
server_url="https://your-mcp-server.example.com",
require_approval="never",
project_connection_id="my-key-auth-connection",
),
ToolSearchToolboxTool(),
],
)
print(f"Created toolbox: {toolbox_version.name}, version: {toolbox_version.version}")
using Azure.Identity;
using Azure.AI.Projects;
// Create Foundry project client
var projectEndpoint = "https://<your-foundry-account>.services.ai.azure.com/api/projects/<your-project>";
AIProjectClient projectClient = new(new Uri(projectEndpoint), new DefaultAzureCredential());
AgentToolboxes toolboxClient = projectClient.AgentAdministrationClient.GetAgentToolboxes();
WebSearchToolboxTool webTool = new();
MCPToolboxTool mcpTool = new(serverLabel: "myserver")
{
ServerUri = new Uri("https://your-mcp-server.example.com"),
ToolCallApprovalPolicy = new McpToolCallApprovalPolicy(
GlobalMcpToolCallApprovalPolicy.NeverRequireApproval),
};
ToolSearchToolboxTool searchTool = new() { Name = "ToolBoxSearch" };
ToolboxVersion toolboxVersion = await toolboxClient.CreateVersionAsync(
name: "my-toolbox",
tools: [webTool, mcpTool, searchTool],
description: "Toolbox with web search, MCP, and tool search"
);
Console.WriteLine($"Created toolbox: {toolboxVersion.Name}, version: {toolboxVersion.Version}");
POST {project_endpoint}/toolboxes/my-toolbox/versions?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json
{
"description": "Toolbox with web search, MCP, and tool search",
"tools": [
{
"type": "web_search",
"description": "Search the web for current information"
},
{
"type": "mcp",
"server_label": "myserver",
"server_url": "https://your-mcp-server.example.com",
"require_approval": "never",
"project_connection_id": "my-key-auth-connection"
},
{
"type": "toolbox_search"
}
]
}
Hinweis
Verwenden Sie den Tokenbereich https://ai.azure.com/.default beim Abrufen des Bearer-Tokens.
import { DefaultAzureCredential } from "@azure/identity";
import { AIProjectClient } from "@azure/ai-projects";
// Create Foundry project client
const projectEndpoint = "https://<your-foundry-account>.services.ai.azure.com/api/projects/<your-project>";
const project = new AIProjectClient(projectEndpoint, new DefaultAzureCredential());
const toolboxVersion = await project.toolboxes.createVersion(
"my-toolbox",
[
{
type: "web_search",
description: "Search the web for current information",
},
{
type: "mcp",
server_label: "myserver",
server_url: "https://your-mcp-server.example.com",
require_approval: "never",
project_connection_id: "my-key-auth-connection",
},
{ type: "toolbox_search" },
],
{
description: "Toolbox with web search, MCP, and tool search",
},
);
console.log(`Created toolbox: ${toolboxVersion.name}, version: ${toolboxVersion.version}`);
Verwenden Sie das Microsoft Foundry Toolkit für Visual Studio Code Erweiterung, um eine Toolbox aus der Ansicht Tools zu erstellen und zu veröffentlichen.
- Wählen Sie das Foundry Toolkit in der Aktivitätsleiste aus.
- Erweitern Sie unter "Meine Ressourcen"Ihren Projektnamen>Tools.
- Wählen Sie das Symbol "+Toolbox hinzufügen " aus.
- Geben Sie auf der Registerkarte " Benutzerdefinierte Toolbox erstellen" den Namen und die Beschreibung der Toolbox ein, und fügen Sie die gewünschten Tools hinzu.
- Wählen Sie zum Aktivieren der absichtsbasierten Toolrouting die Option "Toolsuche" aus.
- Wählen Sie "Veröffentlichen" aus.
Beim Veröffentlichen einer neuen Toolbox wird die erste Version erstellt. Diese Version wird automatisch zur Standardversion.
Erstellen Sie mit dem einheitlichen microsoft.foundryErweiterungspaket (siehe Voraussetzungen) eine Toolbox in zwei Schritten:
- Verwenden Sie
azd ai connection create, um jede Projektverbindung zu registrieren, auf die die Toolbox verweist (ein Aufruf pro Anmeldeinformationssatz). - Verwenden Sie
azd ai toolbox create --from-file <toolbox.yaml>, um die Toolbox zu erstellen. Die YAML verweist auf Verbindungen nach Namen und bettet niemals Anmeldeinformationen ein.
Das Muster ist für jede Verbindungsart und jeden Authentifizierungstyp identisch:
Legen Sie das aktive Projekt einmal pro Shell fest:
azd ai project set $PROJECT_ENDPOINTErstellen Sie eine Verbindung mit
azd ai connection create. Die Flags unterscheiden sich je nach Authentifizierungstyp, aber die Befehlsstruktur ist immer:azd ai connection create <name> \ --kind <remote-tool|remote-a2a|cognitive-search|GroundingWithCustomSearch> \ --target <endpoint-url> \ --auth-type <none|custom-keys|api-key|oauth2|user-entra-token|project-managed-identity|agentic-identity> \ [--custom-key "Header=Value" | --key <key> | --client-id ... --client-secret ... --authorization-url ... --token-url ... | --audience <aad-resource-uri>]Verwenden Sie
azd ai connection listundazd ai connection show <name>, um Verbindungen zu prüfen, undazd ai connection delete <name> --force, um sie zu entfernen.Erstellen Sie eine Toolbox-YAML, die auf eine oder mehrere vorhandene Verbindungen anhand des Namens verweist. YaML bettet niemals Anmeldeinformationen ein:
# my-toolbox.yaml description: <human-readable description> connections: - name: <project-connection-name> # must already exist in the project # Optional: add connectionless built-in tools and policies. tools: - type: web_search name: web - type: code_interpreter container: { type: auto } name: code # Tool search is connectionless. - type: toolbox_search # For Azure AI Search, set the index in the tool entry: # - type: azure_ai_search # name: search # azure_ai_search: # indexes: # - project_connection_id: <azure-ai-search-connection-name> # index_name: <search-index-name> # For Bing Custom Search, set the instance in the tool entry: # - type: web_search # name: bing # custom_search_configuration: # project_connection_id: <bing-connection-name> # instance_name: <bing-instance-name> # Optional: attach existing project skills as MCP resources. skills: - name: <skill-name> # uses the skill's default version - name: <other-skill> version: "2" # pin to a specific skill version (string) policies: rai_config: rai_policy_name: <policy-name> # must already exist on the projectMindestens einer von
connections,skillsodertoolsmuss nicht leer sein. Verweise auf Fähigkeiten müssen auf Fähigkeiten verweisen, die bereits im selben Foundry-Projekt vorhanden sind; siehe Fähigkeiten in Foundry verwenden, um sie mitazd ai skill createzu erstellen. Einzelheiten zur Einrichtung der End-to-End-Toolsuche finden Sie unter Toolsuche verwenden.Erstellen Sie die Toolbox aus dieser Datei:
azd ai toolbox create <toolbox-name> --from-file ./my-toolbox.yamlDie erste Version wird automatisch zum Standard. Verwenden Sie
azd ai toolbox list,azd ai toolbox show <name>,azd ai toolbox version list <name>undazd ai toolbox delete <name> --forcezum Verwalten von Toolboxen.
Beispiel: MCP-Server mit schlüsselbasierter Authentifizierung
# 1. Create the connection
azd ai connection create my-gh-conn \
--kind remote-tool \
--target https://api.githubcopilot.com/mcp/ \
--auth-type custom-keys \
--custom-key "Authorization=Bearer $GITHUB_PAT"
# 2. Create the toolbox
azd ai toolbox create my-toolbox \
--from-file ./my-toolbox.yaml \
--no-prompt
# my-toolbox.yaml
description: GitHub MCP toolbox
connections:
- name: my-gh-conn
MCP-Endpunkt der Toolbox abrufen
Je nach Rolle sind zwei Endpunktmuster vorhanden:
| Rolle | Endpunkt | Wann verwendet werden soll |
|---|---|---|
| Toolboxentwickler | {project_endpoint}/toolboxes/{toolbox_name}/versions/{version}/mcp?api-version=v1 |
Testen oder überprüfen Sie eine bestimmte Version, bevor Sie sie als Standard bewerben. |
| Toolbox-Verbraucher | {project_endpoint}/toolboxes/{toolbox_name}/mcp?api-version=v1 |
Verbinden Sie Agents mit der Toolbox. Dient immer dem default_version. Die von Ihnen erstellte erste Version wird automatisch als Standard festgelegt. |
Ersetzen Sie die Platzhalter durch Ihre eigenen Werte:
-
{project_endpoint}ist Ihr Foundry-Projektendpunkt im Formularhttps://<your-foundry-account>.services.ai.azure.com/api/projects/<your-project>. Kopieren Sie es von der Seite „Übersicht“ Ihres Projekts im Foundry-Portal oder aus der Spalte Endpunkt-URL in der Ansicht „Toolboxes“ des Microsoft Foundry Toolkit für Visual Studio Code. -
{toolbox_name}und{version}sind der Name und die Version der Toolbox, die Sie in der Toolbox-Version erstellt haben.
Tip
Verbinden Sie Agenten mit dem Toolbox-Consumerendpunkt. Es liefert immer das default_version aus, sodass Sie neue Versionen freigeben können, ohne den Agentcode zu ändern oder ihn neu bereitzustellen. Reservieren Sie den Toolbox-Entwicklerendpunkt (versionsspezifisch) zum Testen einer Version, bevor Sie sie höher stufen.
Hinweis
Die erste Version einer neuen Toolbox wird automatisch auf default_version (v1) heraufgestuft. Wenn Sie die Standardeinstellung später ändern müssen, lesen Sie Eine Version als Standardversion festlegen.
Kopieren Sie in der Erweiterung Microsoft Foundry Toolkit for Visual Studio Code den Verbraucher-Endpunkt der Toolbox aus der Ansicht Toolboxes.
- Wählen Sie das Foundry Toolkit in der Aktivitätsleiste aus.
- Erweitern Sie unter "Meine Ressourcen"Ihren Projektnamen>Tools.
- Suchen Sie auf der Registerkarte "Toolboxes " Ihre Toolbox.
- Kopieren Sie den Endpunkt in der Spalte "Endpunkt-URL ".
Der Endpunkt-URL-Wert ist der Toolbox-Verbraucherendpunkt. Verwenden Sie das in der vorherigen Tabelle gezeigte Entwicklermuster, um einen versionsspezifischen Endpunkt zu erstellen.
Überprüfen der Verfügbarkeit des Tools
Vergewissern Sie sich vor dem Ausführen des vollständigen Agents, dass die Toolbox die erwarteten Tools mithilfe eines MCP-Client-SDK für den Endpunkt lädt. Verwenden Sie den versionsspezifischen Endpunkt , um eine Version zu überprüfen, bevor Sie sie als Standard festlegen.
Installieren Sie das MCP-Client-SDK:
pip install mcp
Verbinden Sie sich mit der Toolbox und listen Sie die Werkzeuge auf.
import asyncio
from azure.identity import DefaultAzureCredential
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession
url = "https://<account>.services.ai.azure.com/api/projects/<proj>/toolboxes/<name>/versions/<version>/mcp?api-version=v1"
token = DefaultAzureCredential().get_token("https://ai.azure.com/.default").token
headers = {
"Authorization": f"Bearer {token}",
}
async def verify_toolbox():
async with streamablehttp_client(url, headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
# List available tools
tools_result = await session.list_tools()
print(f"Tools found: {len(tools_result.tools)}")
for tool in tools_result.tools:
print(f" - {tool.name}: {(tool.description or '')[:80]}")
# Call a tool (replace with actual tool name and arguments)
result = await session.call_tool("<tool_name>", arguments={})
print(result)
asyncio.run(verify_toolbox())
Hinweis
Verwenden Sie die Registerkarte "REST-API", um die Verfügbarkeit von Tools aus .NET zu überprüfen, oder verwenden Sie das Python MCP-Client-SDK.
Verwenden Sie den versionsspezifischen Endpunkt (/versions/{version}/mcp), um eine Version zu überprüfen, bevor Sie sie bewerben.
1. Initialisieren der MCP-Sitzung:
POST {project_endpoint}/toolboxes/{toolbox_name}/versions/{version}/mcp?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}
2. Senden Sie die initialisierte Benachrichtigung:
POST {project_endpoint}/toolboxes/{toolbox_name}/versions/{version}/mcp?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json
{"jsonrpc":"2.0","method":"notifications/initialized"}
3. Verfügbare Tools auflisten:
POST {project_endpoint}/toolboxes/{toolbox_name}/versions/{version}/mcp?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
4. Aufrufen eines Tools:
POST {project_endpoint}/toolboxes/{toolbox_name}/versions/{version}/mcp?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"<TOOL_NAME>","arguments":{}}}
Installieren Sie das MCP-Client-SDK:
npm install @modelcontextprotocol/sdk
Verbinden Sie sich mit der Toolbox und listen Sie die Werkzeuge auf.
import { DefaultAzureCredential } from "@azure/identity";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
const url = "https://<account>.services.ai.azure.com/api/projects/<proj>/toolboxes/<name>/versions/<version>/mcp?api-version=v1";
const credential = new DefaultAzureCredential();
const token = await credential.getToken("https://ai.azure.com/.default");
const transport = new StreamableHTTPClientTransport(
new URL(url),
{
requestInit: {
headers: {
Authorization: `Bearer ${token.token}`,
},
},
},
);
const client = new Client({ name: "test", version: "1.0" });
await client.connect(transport);
// List available tools
const toolsResult = await client.listTools();
console.log(`Tools found: ${toolsResult.tools.length}`);
for (const tool of toolsResult.tools) {
console.log(` - ${tool.name}: ${(tool.description || "").slice(0, 80)}`);
}
// Call a tool (replace with actual tool name and arguments)
const result = await client.callTool({ name: "<tool_name>", arguments: {} });
console.log(result);
await client.close();
Verwenden Sie den MCP-Endpunkt der Toolbox mit einem Beispiel für einen gehosteten Agent mit Gerüstvorlage, um das Laden der Toolbox in VS Code zu überprüfen.
- Suchen Sie im Foundry Toolkit unter Meine Ressourcen>dein Projektname>Tools die Toolbox, die Sie testen möchten.
- Wählen Sie "Scaffold Code-Template" aus.
- Wählen Sie einen Projektordner aus, wenn Sie dazu aufgefordert werden.
- Folgen Sie der generierten
README.md, um Abhängigkeiten zu installieren, Umgebungsvariablen zu konfigurieren und das Beispiel lokal auszuführen. - Verwenden Sie Agent Inspector oder führen Sie
python main.pyaus, um zu bestätigen, dass die Werkzeuge der Toolbox geladen werden und reagieren.
Verwenden Sie für die versionsspezifische Überprüfung in diesem Schritt die Python- oder REST-API-Registerkarte, bevor Sie eine neue Toolbox-Version veröffentlichen.
Hinweis
Verwenden Sie die Registerkarte "REST-API", um die Verfügbarkeit des Tools zu überprüfen, oder verwenden Sie das Python MCP-Client-SDK.
Check – initialize: HTTP 200. Wenn Sie den Initialisierungsschritt überspringen, schlagen nachfolgende Aufrufe fehl.
Prüfung — tools/list:
len(tools) > 0– leer bedeutet, dass die Toolboxversion nicht ordnungsgemäß bereitgestellt wurde.Jedes Tool verfügt über
name,descriptionundinputSchema. Informationen zu Toolbenennungskonventionen finden Sie in der MCP-Spezifikation.inputSchemaweist einpropertiesFeld auf (einige MCP-Server lassen dieses Feld aus, wodurch OpenAI unterbrochen wird).Toolnamen werden nach Tooltyp namespacesiert:
Tooltyp Toolnamenformat Example MCP {server_label}.{tool_name}myserver.some_toolOpenAPI {openapi_name}.{operationId}weatherapi.getForecastA2A Der Name des Tools name(Agentname) oder der Verbindungsname, fallsnameweggelassen wirdmyagentAlle anderen Tooltypen Der nameFeldwert oder der Standardtoolnameweb_searchMCP-Tools enthalten einen
_meta.tool_configurationBlock, der Laufzeiteinstellungen enthält, z. B.require_approval. Siehe Erzwingen der Toolgenehmigung.Notieren Sie sich die genauen Parameternamen für den Aufrufschritt (z. B
query. vsqueries).
Überprüfung - tools/call:
- Kein Top-Level-Feld
error. Wenn vorhanden, prüfen Sieerror.code. Standard-MCP-Fehlercodes finden Sie in der MCP-Spezifikation:-
-32006→ OAuth-Zustimmung erforderlich (URL extrahieren auserror.message). - Andere Codes → serverseitiger Fehler.
-
-
result.content[]enthält Einträge mit"type": "text"- dies ist die Toolausgabe. - Bei AI Search:
result.structuredContent.documents[]auf Blockmetadaten prüfen (title,url,id,score). - Überprüfen Sie
result.content[].resource._metabei der Dateisuche auf Blockmetadaten (title,file_id,document_chunk_id,score). - Für die Websuche überprüfen Sie
result.content[].resource._meta.annotations[]auf URL-Zitate (type,url,title,start_index,end_index). - Überprüfen Sie für Fabric IQ
result.structuredContent.documents[]auf Zitatblöcke. Jedes Dokument enthälttitleundurlFelder, die auf das Fabric Element (Ontology, Data Agent oder Power BI Semantikmodell) zeigen, mit dem die Antwort geerdet wird. - Achten Sie auf
"ServerError"in Textinhalten – das Tool wurde ausgeführt, ist jedoch auf einen internen Fehler gestoßen.
Toolspezifische tools/call Argumentbeispiele:
| Tooltyp | Argumente |
|---|---|
| KI-Suche | {"query": "search text"} |
| Dateisuche |
{"queries": ["search text"]} — oder {"queries": ["search text"], "vector_store_ids": ["<VECTOR_STORE_ID>"]} wenn der Vektorspeicher dynamisch übergeben wird |
| Codedolmetscher | {"code": "print(2 ** 100)"} |
| Websuche | {"search_query": "weather in seattle"} |
| A2A | {"message": {"parts": [{"type": "text", "text": "Hello"}]}} |
| Fabric IQ | Variiert je nach verfügbaren Tool – in der Regel {"query": "..."} für Abfragetools |
| Arbeit IQ | {"message": {"parts": [{"type": "text", "text": "Hello"}]}} |
| MCP | {"query": "what is agent service"} |
Integrieren Sie die Toolbox in Ihren Agent
LangGraph
Anforderungen für gehostete Integrationsfragmente: Installieren .langchain-azure-ai[tools]>1.2.3 Das Fragment verwendet AzureAIProjectToolbox; verwenden Sie das gepflegte LangGraph-Beispiel für den vollständigen Agenten, den Paketsatz und die Bereitstellungsdateien.
.env Datei:
FOUNDRY_PROJECT_ENDPOINT=https://<account>.services.ai.azure.com/api/projects/<project>
TOOLBOX_ENDPOINT=https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<toolbox-name>/versions/<version>/mcp?api-version=v1
TOOLBOX_NAME=agent-tools
AZURE_AI_MODEL_DEPLOYMENT_NAME=gpt-4o
main.py (Schlüsselmuster):
from langchain_azure_ai.tools import AzureAIProjectToolbox
toolbox = AzureAIProjectToolbox(toolbox_name=TOOLBOX_NAME)
tools = await toolbox.get_tools()
Wichtig
Klasse langchain_azure_ai.tools.AzureAIProjectToolbox erfordert langchain-azure-ai[tools]>1.2.3.
Microsoft Agent Framework
Installieren Sie agent-framework-foundry zusätzlich zum erforderlichen Azure Identity-Paket. Die vollständige Implementierung finden Sie im verwalteten Agent Framework-Beispiel.
Verwenden Sie FoundryToolbox aus dem Agent Framework SDK, um eine Verbindung mit dem Toolbox-Endpunkt herzustellen. Die Klasse verarbeitet die Toolboxauthentifizierung und leitet den Kontext des Anrufs des gehosteten Agents weiter.
.env Datei:
FOUNDRY_PROJECT_ENDPOINT=https://<account>.services.ai.azure.com/api/projects/<project>
TOOLBOX_ENDPOINT=https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<toolbox-name>/versions/<version>/mcp?api-version=v1
AZURE_AI_MODEL_DEPLOYMENT_NAME=gpt-4o
main.py (Schlüsselmuster):
from agent_framework.foundry import FoundryToolbox
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Toolbox MCP endpoint (platform-injected at runtime via TOOLBOX_ENDPOINT)
TOOLBOX_ENDPOINT = "https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<toolbox-name>/versions/<version>/mcp?api-version=v1"
toolbox = FoundryToolbox(
credential,
url=TOOLBOX_ENDPOINT,
)
agent = chat_client.as_agent(
name="my-toolbox-agent",
instructions="You are a helpful assistant with access to Foundry toolbox tools.",
tools=[toolbox],
)
ResponsesAgentServerHost().run()
Copilot SDK
Anforderungen für gehostete Integrationsfragmente: Installieren Sie das GitHub Copilot SDK für Ihre Laufzeit. Die Gliederung hängt von anwendungseigenen McpBridge und _get_toolbox_token Hilfsern ab, die hier nicht implementiert sind. Folgen Sie den vorhandenen Toolbox-Endpunkt- und Authentifizierungsvertrag und den Integrationsmustern des gehosteten Agents. Ein gepflegtes vollständiges Beispiel ist noch nicht verfügbar.
Verwenden Sie das GitHub Copilot SDK, um einen auf Toolbox basierenden Agenten zu erstellen, der die Werkzeugaufrufe von Copilot mit dem MCP-Endpunkt der Foundry-Toolbox verbindet.
Hinweis
Das Copilot SDK lehnt Toolnamen ab, die Punkte enthalten. Die Brücke ersetzt . automatisch durch _ in Toolnamen. Beispielsweise myserver.get_info wird myserver_get_info.
.env Datei:
GITHUB_TOKEN=<your-github-token>
TOOLBOX_ENDPOINT=https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<toolbox-name>/versions/<version>/mcp?api-version=v1
agent.py (Schlüsselmuster — MCP-Brücke):
# 1. Open an MCP session to the toolbox endpoint
bridge = McpBridge(endpoint=TOOLBOX_ENDPOINT, token=_get_toolbox_token())
await bridge.initialize()
mcp_tools = await bridge.list_tools()
# 2. Map MCP tool list to Copilot SDK tool definitions
# Dots in tool names are replaced with underscores (Copilot SDK requirement)
copilot_tools = [
{
"name": t["name"].replace(".", "_"),
"description": t.get("description", ""),
"parameters": t.get("inputSchema", {}),
}
for t in mcp_tools
]
# 3. Wire tool calls back to the MCP session
async def tool_handler(name: str, arguments: dict) -> str:
return await bridge.call_tool(name.replace("_", ".", 1), arguments)
# 4. Run the Copilot SDK agent
agent = Agent(
tools=copilot_tools,
tool_handler=tool_handler,
token=os.environ["GITHUB_TOKEN"],
)
Microsoft Agent Framework
Installieren Microsoft.Agents.AI.Foundry.Hosting und Azure.Identity. Ein vollständiges Projekt finden Sie im Beispiel für die gehostete Toolbox des öffentlichen Agent-Frameworks.
Verwenden Sie AddFoundryToolboxes, um eine oder mehrere Toolboxen beim gehosteten Agenten zu registrieren. Die Integration ermittelt den verwalteten MCP-Endpunkt, authentifiziert Anfragen und berücksichtigt den Integritätsstatus der Toolbox in der Readiness-Probe.
Umgebungsvariablen:
AZURE_AI_PROJECT_ENDPOINT=https://<account>.services.ai.azure.com/api/projects/<project>
AZURE_AI_MODEL_DEPLOYMENT_NAME=gpt-4o
TOOLBOX_NAME=<toolbox-name>
Program.cs (Schlüsselmuster):
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Foundry.Hosting;
string projectEndpoint = Environment.GetEnvironmentVariable("AZURE_AI_PROJECT_ENDPOINT")
?? throw new InvalidOperationException("AZURE_AI_PROJECT_ENDPOINT is not set.");
string deploymentName = Environment.GetEnvironmentVariable(
"AZURE_AI_MODEL_DEPLOYMENT_NAME") ?? "gpt-4o";
string toolboxName = Environment.GetEnvironmentVariable("TOOLBOX_NAME")
?? throw new InvalidOperationException("TOOLBOX_NAME is not set.");
var credential = new DefaultAzureCredential();
AIAgent agent = new AIProjectClient(new Uri(projectEndpoint), credential)
.AsAIAgent(
model: deploymentName,
instructions: "You are a helpful assistant with access to toolbox tools.",
name: "hosted-toolbox-agent");
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddFoundryResponses(agent);
builder.Services.AddFoundryToolboxes(credential, toolboxName);
var app = builder.Build();
app.MapFoundryResponses();
app.Run();
Hinweis
Integrationsbeispiele für diesen Schritt sind nur für Python und .NET verfügbar.
Hinweis
Integrationsbeispiele für diesen Schritt sind nur für Python und .NET verfügbar.
Verwenden Sie die Microsoft Foundry Toolkit-Erweiterung für Visual Studio Code, um das Grundgerüst für eine Beispielanwendung für einen gehosteten Agenten zu erstellen, die bereits mit Ihrer Toolbox verbunden ist.
- Wählen Sie das Foundry Toolkit in der Aktivitätsleiste aus.
- Erweitern Sie unter "Meine Ressourcen"Ihren Projektnamen>Tools.
- Suchen Sie auf der Registerkarte Toolboxes die Toolbox, die Sie verwenden möchten, und wählen Sie dann die Gerüstcodevorlage aus.
- Wählen Sie in der Befehlspalette einen Projektordner aus, wenn Sie dazu aufgefordert werden.
- Öffnen Sie das generierte
README.mdElement, und folgen Sie den Setup-, lokalen Ausführungs- und Bereitstellungsschritten für das Gerüst.
Das generierte Projekt beinhaltet den Einstiegspunkt des Hosted Agents, Bereitstellungsdateien und eine README.md-Datei mit den genauen Schritten für Einrichtung, Ausführung und Bereitstellung.
Wenn Sie eine Toolbox in ein bestehendes gehostetes Agent-Projekt integrieren möchten, anstatt ein neues Beispiel zu generieren, verwenden Sie den MCP-Endpunkt der Toolbox mit den Python- oder .NET-Mustern in diesem Abschnitt.
Übergeben Sie den Toolbox-Endpunkt an Ihren Agenten
Nachdem Sie die Toolbox erstellt haben, rufen Sie den MCP-Endpunkt mit azd ai toolbox show ab und übergeben Sie ihn als Umgebungsvariable an Ihren Agent-Code. Der Agent liest die Variable beim Start und verwendet sie zum Herstellen einer Verbindung mit der Toolbox.
Rufen Sie den Toolbox-Endpunkt ab:
azd ai toolbox show <toolbox-name> --output jsonDas
endpointFeld in der Antwort identifiziert die ausgewählte Version. Verwenden Sie sie, um die Version vor der Freigabe zu testen. Erstellen Sie für einen Agenten, derdefault_versionfolgen soll, den nicht versionierten Consumer-Endpunkt, der unter Toolbox-MCP-Endpunkt abrufen angegeben ist.Legen Sie den Endpunkt als Umgebungsvariable fest, die Ihr Agent beim Start liest:
# .env (or however your runtime loads environment variables) TOOLBOX_ENDPOINT=https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<toolbox-name>/mcp?api-version=v1Lesen Sie in Ihrem Agentcode
TOOLBOX_ENDPOINTund verbinden Sie sich mit ihm über einen MCP-Client. Verwenden Sie die Python- oder .NET-Integrationsmuster weiter oben in diesem Abschnitt als Referenz für das Clientsetup und das Entra-Token (Bereichhttps://ai.azure.com/.default).
Anforderungen an die Werkzeugfreigabe behandeln
Die Toolbox gibt ein _meta.tool_configuration-Objekt für jeden Tooleintrag zurück, der von tools/list zurückgegeben wird. Wenn für ein Tool require_approval auf "always" festgelegt ist, muss die Runtime des Agents Benutzer*innen über die ausstehende Aktion informieren und vor dem Aufrufen des Tools auf eine Bestätigung warten. Der MCP-Endpunkt blockiert tools/callnicht. Die Erzwingung liegt vollständig in der Verantwortung der Runtime des Agents.
Nachdem Ihre Toolbox erstellt und getestet wurde, verbinden Sie sie mit einem Agent. Das Integrationsmuster hängt vom Agenttyp ab:
- Gehosteter Agent (Ihr eigener Code, der im Foundry Agent Service ausgeführt wird): Siehe Verwenden einer Toolbox mit einem gehosteten Agent für Agent Framework, LangGraph, Visual Studio Code und Azure Developer CLI-Integrationsmustern und Laufzeitgenehmigungsanforderungen.
Konfigurieren von require_approval für ein Tool
Legen Sie require_approval fest, wenn Sie eine Toolbox-Version erstellen. Die MCP-Toolbeispiele in „Eine Toolbox-Version erstellen“ zeigen sowohl "always"- als auch "never"-Werte. So legen Sie es über das SDK fest:
from azure.ai.projects.models import MCPToolboxTool
# Set require_approval on an MCP tool
toolbox_version = project.toolboxes.create_version(
name="my-toolbox",
tools=[
MCPToolboxTool(
server_label="myserver",
server_url="https://your-mcp-server.example.com",
require_approval="always", # "always" | "never"
project_connection_id="my-connection",
)
],
)
{
"tools": [
{
"type": "mcp",
"server_label": "myserver",
"server_url": "https://your-mcp-server.example.com",
"require_approval": "always",
"project_connection_id": "my-connection"
}
]
}
MCPToolboxTool mcpTool = new(serverLabel: "myserver")
{
ServerUri = new Uri("https://your-mcp-server.example.com"),
ToolCallApprovalPolicy = new McpToolCallApprovalPolicy(
GlobalMcpToolCallApprovalPolicy.AlwaysRequireApproval),
};
const tools = [
{
type: "mcp",
server_label: "myserver",
server_url: "https://your-mcp-server.example.com",
require_approval: "always",
project_connection_id: "my-connection",
},
];
Verwenden Sie die Registerkarte Python, .NET, JavaScript, REST API oder Azure Developer CLI, um require_approval in Ihrer Toolboxdefinition zu konfigurieren. Der Workflow der Erweiterung „Microsoft Foundry Toolkit für Visual Studio Code“ in diesem Artikel konzentriert sich auf das Erstellen und Verwenden der Toolbox in Visual Studio Code.
resources:
- kind: toolbox
name: my-toolbox
tools:
- type: mcp
server_label: myserver
server_url: https://your-mcp-server.example.com
require_approval: always
project_connection_id: my-connection
Verwalten von Toolboxversionen
Hinweis
Sie können Toolboxversionen nur über das Python SDK, .NET SDK, JavaScript SDK und REST-API löschen. Die Azure Developer CLI unterstützt Vorgänge zum Auflisten, Abrufen und Veröffentlichen (Heraufstufung zur Standardversion).
Toolboxversionen sind unveränderliche Momentaufnahmen der Toolkonfiguration einer Toolbox. Jeder Aufruf des Create-Endpunkts erzeugt einen neuen ToolboxVersionObject. Das übergeordnete Element ToolboxObject hat ein default_version Feld, das steuert, welche Version der MCP-Endpunkt bereitstellt. Das Erstellen einer neuen Version bedeutet keine automatische Höherstufung – Sie entscheiden, wann Sie default_version aktualisieren. Mit diesem Prozess können Sie Änderungen stufen, eine neue Version unabhängig testen und für die Produktion in Ihrem eigenen Zeitplan bewerben.
Hinweis
Für die Azure Developer CLI erstellt jeder ändernde Vorgang, der auf die aktuelle Standardversion abzielt – azd ai toolbox connection add/remove und azd ai toolbox skill add/remove –, eine neue Toolbox-Version, die alle zuvor zugeordneten Verbindungen und Fähigkeiten übernimmt, wobei die angeforderte Änderung angewendet wird. Keiner dieser Befehle ändert default_version automatisch; führen Sie azd ai toolbox publish <toolbox-name> <version> aus, wenn Sie bereit sind, die neue Version zu aktivieren. Um eine ausstehende (nicht standardmäßige) Version zu prüfen, verwenden Sie azd ai toolbox show <name> --version <n>.
| Objekt | Schlüsselfelder | Beschreibung |
|---|---|---|
ToolboxObject |
id, namedefault_version |
Der Toolboxcontainer.
default_version verweist auf die aktive Version. |
ToolboxVersionObject |
id, , nameversion, description, created_at, , tools[]policies |
Eine unveränderliche Momentaufnahme der Werkzeugliste der Toolbox zu einem bestimmten Zeitpunkt.
policies.rai_config.rai_policy_name Gibt die optionale Schutzschiene an, die auf diese Version angewendet wird. |
Erstellen einer neuen Version
Jeder Erstellungsaufruf erzeugt eine neue Version. Falls die Toolbox noch nicht vorhanden ist, wird sie automatisch erstellt. Wenn Sie die erste Version einer neuen Toolbox erstellen, ist v1 die Standardversion so lange, bis Sie manuell auf eine andere Version aktualisieren.
# Create a new toolbox version
toolbox_version = project.toolboxes.create_version(
name="my-toolbox",
description="Updated tools v2",
tools=[...],
)
print(f"Created version: {toolbox_version.version}")
ToolboxVersion toolboxVersion = await toolboxClient.CreateVersionAsync(
name: "<toolbox-name>",
tools: [tool],
description: "Updated tools v2"
);
Console.WriteLine($"Created version: {toolboxVersion.Version}");
POST {project_endpoint}/toolboxes/<toolbox-name>/versions?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json
{
"description": "Updated tools v2",
"tools": [...]
}
const toolboxVersion = await project.toolboxes.createVersion(
"<toolbox-name>",
[/* tools array */],
{ description: "Updated tools v2" },
);
console.log(`Created version: ${toolboxVersion.version}`);
Verwenden Sie die Registerkarte Python, .NET, JavaScript oder REST-API, um eine neue Toolboxversion zu erstellen. Der Workflow der Erweiterung Microsoft Foundry Toolkit für Visual Studio Code, der in diesem Artikel beschrieben wird, konzentriert sich auf das Erstellen einer Toolbox und das Generieren des Grundgerüsts für einen gehosteten Agenten, der sie verwendet.
Dieser Vorgang wird mit der Azure Developer CLI nicht unterstützt. Verwenden Sie zum Erstellen einer Toolboxversion die Registerkarte Python, .NET, REST-API oder JavaScript.
Die Antwort ist ein ToolboxVersionObject, das den neuen version Bezeichner enthält.
Versionen auflisten
# List all toolbox versions
versions = list(project.toolboxes.list_toolbox_versions(name="<toolbox-name>"))
for v in versions:
print(f"{v.version} — created {v.created_at}")
List<ToolboxVersion> versions = await toolboxClient
.GetToolboxVersionsAsync("<toolbox-name>")
.ToListAsync();
Console.WriteLine($"Found {versions.Count} toolbox version(s).");
foreach (ToolboxVersion v in versions)
{
Console.WriteLine($" - {v.Name} ({v.Version})");
}
GET {project_endpoint}/toolboxes/<toolbox-name>/versions?api-version=v1
Authorization: Bearer {token}
const versions = project.toolboxes.listVersions("<toolbox-name>");
for await (const v of versions) {
console.log(`${v.version} — created ${v.created_at}`);
}
Verwenden Sie die Registerkarte Python, .NET, JavaScript oder REST-API, um Toolboxversionen aufzulisten.
# The current default version is marked with *
azd ai toolbox version list <toolbox-name>
Eine bestimmte Version abrufen
# Get a specific toolbox version
version_obj = project.toolboxes.get_toolbox_version(
toolbox_name="<toolbox-name>",
version="<version_id>",
)
ToolboxVersion versionObj = await toolboxClient.GetToolboxVersionAsync(
"<toolbox-name>",
"<version_id>"
);
Console.WriteLine($"Retrieved toolbox: {versionObj.Name} ({versionObj.Id})");
GET {project_endpoint}/toolboxes/<toolbox-name>/versions/{version}?api-version=v1
Authorization: Bearer {token}
const versionObj = await project.toolboxes.getVersion(
"<toolbox-name>",
"<version_id>",
);
console.log(`Retrieved version: ${versionObj.version}`);
Verwenden Sie die Registerkarte Python, .NET, JavaScript oder REST-API, um eine bestimmte Toolboxversion abzurufen.
azd ai toolbox version get <toolbox-name> <version_id>
Höherstufen einer Version auf Standard
Der MCP-Endpunkt dient immer dem default_version. Um zu wechseln, welche Version aktiv ist, aktualisieren Sie die Toolbox:
# Promote a version to default
toolbox = project.toolboxes.update(
toolbox_name="<toolbox-name>",
default_version="<version_id>",
)
print(f"Active version: {toolbox.default_version}")
ToolboxRecord record = await toolboxClient.UpdateToolboxAsync(
"<toolbox-name>",
"<version_id>"
);
Console.WriteLine($"Active version: {record.DefaultVersion}");
PATCH {project_endpoint}/toolboxes/<toolbox-name>?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json
{
"default_version": "<version_id>"
}
default_version darf nicht leer sein. Ersetzen Sie sie durch eine neue Version.
const toolbox = await project.toolboxes.update(
"<toolbox-name>",
"<version_id>",
);
console.log(`Active version: ${toolbox.default_version}`);
Verwenden Sie die Registerkarte Python, .NET, JavaScript oder REST-API, um eine Toolboxversion als Standard festzulegen.
Toolboxversionen sind unveränderlich. Verwenden Sie publish, um eine vorhandene Version zur neuen Standardversion zu machen:
# Roll back or forward to a specific version
azd ai toolbox publish <toolbox-name> <version_id> --no-prompt
publish ist der einzige Weg, mit dem default_version über die CLI geändert wird; mutierende Verben (connection add/remove, skill add/remove) erstellen immer eine neue Version, ohne sie heraufzustufen.
Löschen einer Version
# Delete a toolbox version
project.toolboxes.delete_toolbox_version(
toolbox_name="<toolbox-name>",
version="<version_id>",
)
await toolboxClient.DeleteToolboxVersionAsync(
"<toolbox-name>",
"<version_id>"
);
DELETE {project_endpoint}/toolboxes/<toolbox-name>/versions/{version}?api-version=v1
Authorization: Bearer {token}
await project.toolboxes.deleteVersion(
"<toolbox-name>",
"<version_id>",
);
Verwenden Sie die Registerkarte Python, .NET, JavaScript oder REST-API, um eine Toolboxversion zu löschen.
Dieser Vorgang wird mit der Azure Developer CLI nicht unterstützt. Verwenden Sie zum Löschen einer Toolboxversion die Registerkarte Python, .NET, REST-API oder JavaScript.
Verwalten von Toolboxen mit Foundry MCP Server
Foundry MCP Server (Vorschau) macht die Toolboxverwaltung als MCP-Tools verfügbar, sodass Sie Toolboxen aus einem MCP-Client wie GitHub Copilot in Visual Studio Code abrufen, version, aktualisieren und löschen können. Informationen zum Einrichten des Servers finden Sie unter "Erste Schritte mit Foundry MCP Server (Vorschau)".
| Werkzeug | Zugriff | Beschreibung |
|---|---|---|
toolbox_get |
read | Eine Toolbox und ihre aktuelle Standardversion abrufen. |
toolbox_version_get |
read | Toolbox-Versionen auflisten oder eine bestimmte Version abrufen. |
toolbox_version_create |
write | Erstellen Sie eine unveränderliche Toolboxversion. Wenn die Toolbox nicht vorhanden ist, erstellt dieses Tool sie ebenfalls. |
toolbox_update |
write | Erstellen oder Aktualisieren einer Toolbox, einschließlich der Standardversion. |
toolbox_delete |
write | Löschen einer Toolbox. |
toolbox_version_delete |
write | Löschen Sie eine bestimmte Toolboxversion. |
Die gleichen Versionsverwaltungsregeln gelten wie bei den SDKs. Durch das Erstellen einer Version für eine vorhandene Toolbox wird die Standardversion nicht geändert. Um eine Version heraufzustufen, rufen Sie toolbox_update auf, wobei defaultVersion auf die neue Version festgelegt ist. Bevor Sie die aktuelle Standardversion löschen, legen Sie eine andere Version als Standard fest.
Beispielaufforderungen:
- Zeig mir den
customer-support-toolsWerkzeugkasten. - Holen Sie sich Version 2 von
customer-support-tools. - "Erstellen Sie eine neue Version von
customer-support-tools." - "Legen Sie Version 2
customer-support-toolsals Standard fest." - "Legen Sie Version 1
customer-support-toolsals Standard fest, und löschen Sie Dann Version 2." - "Löschen sie die
old-support-toolsToolbox."
Die vollständige Toolreferenz finden Sie unter Verfügbare Tools und Beispielaufforderungen für Foundry MCP Server.
Konfigurieren von Tools
Wählen Sie den Tooltyp und das Authentifizierungsmuster aus, das Ihrem Szenario entspricht. Wählen Sie die Registerkarte für Ihre bevorzugte SDK- oder Bereitstellungsmethode aus.
Die unten stehende Registerkarte azd jedes Tools zeigt deklaratives Toolbox-YAML. Um eine Toolbox imperativ ohne Agentprojekt zu erstellen, verwenden Sie den azd ai toolbox create --from-file-Workflow und wenden Sie die in den folgenden Abschnitten gezeigten Daten pro Tool an. Um eine Toolbox mit einem gehosteten Agenten bereitzustellen, modellieren Sie sie in azure.ai.toolbox als azure.yaml-Dienst und binden Sie den Agenten mit uses: oder toolboxes: daran an.
Mehrere Tooltypen
Eine einzelne Toolbox kann verschiedene Tooltypen bündeln. Im folgenden Beispiel werden Websuche, Azure KI-Suche und ein MCP-Server in einer Toolbox kombiniert:
{
"description": "Web search, knowledge base search, and custom MCP server",
"tools": [
{
"type": "web_search",
"description": "Search the web for current information"
},
{
"type": "azure_ai_search",
"name": "my_aisearch",
"description": "Search internal product documentation",
"azure_ai_search": {
"indexes": [
{
"index_name": "<INDEX_NAME>",
"project_connection_id": "<CONNECTION_NAME>"
}
]
}
},
{
"type": "mcp",
"server_label": "myserver",
"server_url": "https://your-mcp-server.example.com",
"require_approval": "never",
"project_connection_id": "my-key-auth-connection"
}
]
}
Hinweis
Jeder Werkzeugtyp (web_search, azure_ai_search, code_interpreter, file_search) kann höchstens ohne Feld name angezeigt werden. Um mehrere Instanzen desselben Typs einzuschließen, legen Sie für jede Instanz eine eindeutige name Fest. Weitere Informationen finden Sie im nächsten Beispiel.
Einschränkungen für mehrere Tools
Sie können höchstens eine Instanz jedes integrierten Tooltyps ohne Feld name in einer Toolbox einschließen. Wenn Sie zwei Instanzen desselben Typs ohne ein name einschließen, gibt die API Folgendes zurück:
400 invalid_payload: Multiple tools without identifiers found...
Zwei Instanzen desselben Tooltyps
Verwenden Sie das name Feld, um mehrere Instanzen desselben Tooltyps in einer Toolbox einzuschließen. Jede benannte Instanz wird als separates Tool behandelt und muss einen eindeutigen Namen haben.
{
"description": "Two Azure AI Search indexes in a single toolbox",
"tools": [
{
"type": "azure_ai_search",
"name": "product-search",
"description": "Search product catalog and specifications",
"azure_ai_search": {
"indexes": [
{
"index_name": "<PRODUCT_INDEX_NAME>",
"project_connection_id": "<PRODUCT_CONNECTION_NAME>"
}
]
}
},
{
"type": "azure_ai_search",
"name": "support-search",
"description": "Search support tickets and troubleshooting guides",
"azure_ai_search": {
"indexes": [
{
"index_name": "<SUPPORT_INDEX_NAME>",
"project_connection_id": "<SUPPORT_CONNECTION_NAME>"
}
]
}
}
]
}
Jeder Tooltyp verfügt über eine eigene Toolboxkonfiguration – Verbindungsauthentifizierungstypen, pro Sprache SDK-Codeausschnitte und jedes toolboxspezifische Verhalten. Diese Details befinden sich im Referenzartikel zu den einzelnen Tools. Einen Link zu jedem Tool finden Sie in der Tabelle zur Featureunterstützung.
Für toolboxspezifisches Verhalten – wie z. B. den dynamischen Vektorspeicher der Dateisuche (Parameterüberschreibung) oder Datei-Uploads auf Ressourcenebene für Code Interpreter und Dateisuche – siehe den verlinkten Artikel für jedes Tool.
Schutzmechanismen konfigurieren
Wenden Sie eine benannte Guardrail-Richtlinie auf eine Toolboxversion an, um die verantwortungsvolle KI-Inhaltsfilterung auf Tooleingaben und -ausgaben zu erzwingen. Die Leitlinie wird auf der Toolboxebene ausgeführt, unabhängig von einem Inhaltsfilter auf Modellebene.
Verweisen Sie auf eine Sicherheitsvorkehrung anhand ihres Richtliniennamens, den Sie im Foundry-Portal unter Guardrails konfigurieren. Legen Sie policies.rai_config.rai_policy_name beim Erstellen einer Toolboxversion auf den Namen der Richtlinie fest.
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import WebSearchToolboxTool
endpoint = "https://<your-foundry-account>.services.ai.azure.com/api/projects/<your-project>"
project = AIProjectClient(endpoint=endpoint, credential=DefaultAzureCredential())
toolbox_version = project.toolboxes.create_version(
name="my-toolbox",
description="Toolbox with guardrail",
tools=[WebSearchToolboxTool()],
policies={
"rai_config": {
"rai_policy_name": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.CognitiveServices/accounts/<account-name>/raiPolicies/<policy-name>"
}
},
)
print(f"Created version: {toolbox_version.version}")
POST {endpoint}/toolboxes/{toolbox_name}/versions?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json
{
"description": "Toolbox with guardrail",
"tools": [{ "type": "web_search" }],
"policies": {
"rai_config": {
"rai_policy_name": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.CognitiveServices/accounts/<account-name>/raiPolicies/<policy-name>"
}
}
}
#pragma warning disable AAIP001
using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;
var projectEndpoint = Environment.GetEnvironmentVariable("FOUNDRY_PROJECT_ENDPOINT");
DefaultAzureCredential credential = new();
AIProjectClient projectClient = new(endpoint: new Uri(projectEndpoint), tokenProvider: credential);
AgentToolboxes toolboxClient = projectClient.AgentAdministrationClient.GetAgentToolboxes();
var toolboxVersion = toolboxClient.CreateVersion(
name: "my-toolbox",
description: "Toolbox with guardrail",
tools: [new WebSearchToolboxTool()],
policies: new ToolboxPolicies
{
RaiConfig = new RaiConfig { RaiPolicyName = "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.CognitiveServices/accounts/<account-name>/raiPolicies/<policy-name>" }
});
Console.WriteLine($"Created version: {toolboxVersion.Version}");
const toolboxVersion = await project.toolboxes.createVersion(
"my-toolbox",
[{ type: "web_search" }],
{
description: "Toolbox with guardrail",
policies: {
rai_config: {
rai_policy_name: "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.CognitiveServices/accounts/<account-name>/raiPolicies/<policy-name>",
},
},
},
);
console.log(`Created version: ${toolboxVersion.version}`);
name: my-toolbox
description: Toolbox with guardrail
policies:
rai_config:
rai_policy_name: /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.CognitiveServices/accounts/<account-name>/raiPolicies/<policy-name>
tools:
- type: web_search
Die Guardrail-Konfiguration ist in der VS Code-Erweiterung noch nicht verfügbar. Verwenden Sie die REST-API, das SDK oder die Azure Developer CLI, um Leitplanken zu konfigurieren.
Kompetenzen mit einer Toolbox verknüpfen
Fügen Sie Fähigkeiten an eine Toolboxversion an, um sie über den MCP-Endpunkt der Toolbox für Agents verfügbar zu machen. Jede Qualifikationsreferenz gibt den Qualifikationsnamen und eine optionale Version an. Lassen Sie version weg, um den default_version des Skills zu verwenden; heften Sie eine version-Zeichenfolge an, um eine unveränderliche Momentaufnahme zu verwenden.
Eine Toolboxversion kann Tools, Fähigkeiten oder beides enthalten. In den folgenden Beispielen wird eine Toolboxversion erstellt, die einen einzigen Qualifikationsverweis enthält. Wenn Sie einer Toolbox, die bereits Über Tools verfügt, Fähigkeiten hinzufügen möchten, fügen Sie dasselbe tools hinzu, das Sie in der Erstellung einer Toolboxversion zusammen mit dem skills Array verwendet haben.
Wichtig
Fähigkeiten, die an eine Toolbox angefügt sind, müssen im gleichen Foundry-Projekt vorhanden sein. Projektübergreifende Verweise werden nicht unterstützt.
Wenn ein Agent oder MCP-Client eine Verbindung mit dem Toolboxendpunkt herstellt, werden Fähigkeiten als MCP-Ressourcen verfügbar gemacht. Das MCP-Client- oder Agentframework muss das MCP Resources-Protokoll unterstützen, um Fähigkeiten zum automatischen Ermitteln und Laden zu unterstützen. Um zu überprüfen, ob Fähigkeiten auffindbar sind, rufen Sie resources/list den MCP-Endpunkt der Toolbox auf, und bestätigen Sie, dass Ihre Qualifikationsnamen in der Antwort angezeigt werden.
POST {endpoint}/toolboxes/{toolbox_name}/versions?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json
Foundry-Features: Skills=V1Preview
{
"description": "Toolbox with a skill reference",
"tools": [],
"skills": [
{
"type": "skill_reference",
"name": "greeting"
}
]
}
So heften Sie eine bestimmte Version an:
{
"skills": [
{
"type": "skill_reference",
"name": "greeting",
"version": "v1"
}
]
}
from azure.ai.projects.models import ToolboxSkillReference
toolbox_version = project.toolboxes.create_version(
name="my-toolbox",
description="Toolbox with a skill reference",
tools=[],
skills=[
ToolboxSkillReference(name="greeting"), # use default version
# ToolboxSkillReference(name="greeting", version="1"), # pin to version 1
],
)
print(f"Created toolbox version: {toolbox_version.id}")
#pragma warning disable AAIP001
// Reuse the AgentToolboxes client (toolboxClient) from Step 1.
ToolboxSkillReference skillRef = new("greeting");
// To pin a version: new ToolboxSkillReference("greeting") { Version = "1" }
ToolboxVersion toolboxVersion = toolboxClient.CreateVersion(
name: "my-toolbox",
tools: [],
skills: [skillRef],
description: "Toolbox with a skill reference"
);
Console.WriteLine($"Created toolbox version: {toolboxVersion.Id}");
const toolboxVersion = await project.toolboxes.createVersion(
"my-toolbox",
[],
{
description: "Toolbox with a skill reference",
skills: [
{ type: "skill_reference", name: "greeting" },
// { type: "skill_reference", name: "greeting", version: "v1" }, // pin to v1
],
},
);
console.log(`Created toolbox version: ${toolboxVersion.id}`);
Die Azure Developer CLI unterstützt Skillverweise an zwei Stellen: deklarativ als skills:-Block auf oberster Ebene in der azd ai toolbox create --from-file-YAML-Datei und imperativ mit den azd ai toolbox skill add/list/remove-Verben. Jeder Verweis erfordert ein name (erforderlich) und ein optionales version (Zeichenfolge). Lassen Sie version aus, um der default_version des Skills zu folgen. Geben Sie eine Versionszeichenfolge an, um die Toolbox auf einen unveränderlichen Snapshot festzulegen.
Deklarieren von Fähigkeiten beim Erstellen der Toolbox
# my-toolbox.yaml
description: Toolbox with skill references
connections:
- name: my-gh-conn
skills:
- name: greeting # follows the skill's default version
- name: review-checklist
version: "2" # pin to skill version 2
azd ai toolbox create my-toolbox --from-file ./my-toolbox.yaml --no-prompt
Hinzufügen, Auflisten und Entfernen von Fähigkeiten in einer vorhandenen Toolbox
# Add a skill (follows default version)
azd ai toolbox skill add my-toolbox greeting
# Add a skill pinned to a specific version
azd ai toolbox skill add my-toolbox review-checklist@2
# Add multiple skills from a file (same shape as the create YAML's skills block)
azd ai toolbox skill add my-toolbox --from-file ./skills.yaml
# List skill references on the current default version
azd ai toolbox skill list my-toolbox --output table
# Remove a skill (--force skips the confirmation prompt; multiple names allowed)
azd ai toolbox skill remove my-toolbox greeting --force
skill list zeigt nur die Standardversion an. Angeheftete Skills zeigen ihre Version, nicht angeheftete Skills hingegen zeigen (default). Um Skills in einer ausstehenden Version zu überprüfen, führen Sie azd ai toolbox show <toolbox> --version <n> --output json aus, und lesen Sie das Array skills.
Wichtig
skill add und skill remove erstellen jeweils eine neue Toolboxversion, die alle zuvor angefügten Verbindungen und Skills mit der angeforderten Änderung übernimmt.
Sie machen die neue Version nicht zur Standardversion, sodass Änderungen für MCP-Clients erst sichtbar sind, wenn Sie azd ai toolbox publish <toolbox> <version> ausführen. Um die angeheftete Version einer bereits angefügten Fähigkeit zu ändern, z. B. ein Upgrade greeting von v1 auf v2, führen Sie drei Befehle in der reihenfolge aus: skill remove, publish die neue Version, dann skill add <name>@<new-version> (skill add blockiert Duplikate, wenn sie mit der aktuellen Standardversion überprüft werden).
Qualifikationsnamen müssen übereinstimmen ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$ (Kleinbuchstaben, Ziffern und Bindestriche; max. 64 Zeichen; kein führendes oder nachfolgendes Bindestrich). Eine nachfolgende @ in <name>@<version> (eine leere Version) wird abgelehnt.
Qualifikationsverweise können derzeit nicht über die VS Code-Erweiterung konfiguriert werden. Verwenden Sie die REST-API oder das SDK, um Fähigkeiten zu konfigurieren.
Überprüfen der Fähigkeitserkennung
Überprüfen Sie nach dem Anfügen von Fähigkeiten an eine Toolboxversion, ob Sie sie über den MCP-Endpunkt der Toolbox mithilfe des MCP-Python SDK ermitteln können:
import asyncio
from azure.identity import DefaultAzureCredential
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def list_skills():
credential = DefaultAzureCredential()
token = credential.get_token("https://ai.azure.com/.default").token
toolbox_url = "{endpoint}/toolboxes/my-toolbox/mcp?api-version=v1"
headers = {
"Authorization": f"Bearer {token}",
}
async with streamablehttp_client(toolbox_url, headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
resources = await session.list_resources()
for resource in resources.resources:
print(f"Skill: {resource.uri} - {resource.name}")
asyncio.run(list_skills())
Fähigkeiten werden als MCP-Ressourcen mit URIs im Format skill://{name}angezeigt.
Fähigkeiten aus einem Agent nutzen (Microsoft Agent Framework, .NET)
Verwenden Sie in .NET AgentSkillsProviderBuilder().UseMcpSkills(mcpClient) aus dem Microsoft Agent Framework SDK, um MCP-basierte Fähigkeiten von einem Toolboxendpunkt zu ermitteln und sie als AIContextProviders auf dem Agent einzubringen. Der Agent lädt dann zur Laufzeit die Anweisungen der einzelnen Skills, wenn das Modell entscheidet, dass sie relevant sind. Im folgenden Program.cs wird der Agent mit der Hostebene „Antworten“ (AddFoundryResponses und MapFoundryResponses) gehostet.
using System.Net.Http.Headers;
using Azure.AI.Projects;
using Azure.Core;
using Azure.Identity;
using DotNetEnv;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Foundry.Hosting;
using Microsoft.Extensions.AI;
using ModelContextProtocol.Client;
// Load .env file if present (for local development).
Env.TraversePath().Load();
string projectEndpoint = Environment.GetEnvironmentVariable("FOUNDRY_PROJECT_ENDPOINT")
?? throw new InvalidOperationException("FOUNDRY_PROJECT_ENDPOINT environment variable is not set.");
string deployment = Environment.GetEnvironmentVariable("AZURE_AI_MODEL_DEPLOYMENT_NAME")
?? throw new InvalidOperationException("AZURE_AI_MODEL_DEPLOYMENT_NAME environment variable is not set.");
string toolboxName = Environment.GetEnvironmentVariable("TOOLBOX_NAME")
?? throw new InvalidOperationException("TOOLBOX_NAME environment variable is not set.");
// Build the Foundry Toolbox MCP URL from the project endpoint and toolbox name.
string toolboxMcpServerUrl = $"{projectEndpoint.TrimEnd('/')}/toolboxes/{toolboxName}/mcp?api-version=v1";
TokenCredential credential = new DefaultAzureCredential();
// HttpClient that attaches a fresh Foundry bearer token to every request.
// CheckCertificateRevocationList = true satisfies CA5399.
using var httpClient = new HttpClient(
new BearerTokenHandler(credential, "https://ai.azure.com/.default")
{
CheckCertificateRevocationList = true,
});
Console.WriteLine($"Connecting to Foundry Toolbox '{toolboxName}' MCP server...");
// Connect to the Foundry Toolbox MCP endpoint.
await using var mcpClient = await McpClient.CreateAsync(
new HttpClientTransport(
new HttpClientTransportOptions
{
Endpoint = new Uri(toolboxMcpServerUrl),
Name = toolboxName,
TransportMode = HttpTransportMode.StreamableHttp,
},
httpClient));
// AgentSkillsProvider implements progressive disclosure over the MCP-discovered skills:
// names and descriptions are advertised in the system prompt, and the full skill body
// (and any supplementary resources) is loaded on demand when the model decides it is
// relevant.
var skillsProvider = new AgentSkillsProviderBuilder()
.UseMcpSkills(mcpClient)
.Build();
AIAgent agent = new AIProjectClient(new Uri(projectEndpoint), credential)
.AsAIAgent(new ChatClientAgentOptions
{
Name = "foundry-toolbox-mcp-skills",
Description = "Agent that discovers MCP-based skills from a Foundry Toolbox and exposes them via AgentSkillsProvider.",
ChatOptions = new ChatOptions
{
ModelId = deployment,
Instructions = "You are a helpful assistant.",
},
AIContextProviders = [skillsProvider],
});
var builder = AgentHost.CreateBuilder(args);
builder.Services.AddFoundryResponses(agent);
builder.RegisterProtocol("responses", endpoints => endpoints.MapFoundryResponses());
var app = builder.Build();
app.Run();
// HttpClientHandler that attaches a fresh Foundry bearer token to every outgoing request.
internal sealed class BearerTokenHandler(TokenCredential credential, string scope) : HttpClientHandler
{
private readonly TokenRequestContext _tokenContext = new([scope]);
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
AccessToken token = await credential.GetTokenAsync(this._tokenContext, cancellationToken).ConfigureAwait(false);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token.Token);
return await base.SendAsync(request, cancellationToken).ConfigureAwait(false);
}
}
Das vollständige Beispiel, einschließlich Projektdateien und Bereitstellungsschritte, finden Sie im Beispiel "Skills in Toolbox".
Erinnerung
Das Tool reminder_preview ermöglicht es einem gehosteten Agent, sich selbst so zu planen, dass er zu einem späteren Zeitpunkt erneut ausgeführt wird. Wenn der Agent dieses Tool aufruft, gibt er eine Verzögerung in Minuten an. Nach dieser Verzögerung ruft Foundry denselben Agent in derselben Unterhaltung erneut auf.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Behebung |
|---|---|---|
tools/list gibt Nulltools für MCP- oder A2A-Tools zurück. |
Ungültige oder fehlende Verbindungsdaten für den Remote-MCP-Server oder des A2A-Agenten. Die Toolbox kann keine Toolmanifeste vom Remoteendpunkt ohne gültige Authentifizierung abrufen. | Überprüfen Sie, ob project_connection_id in Ihrem Foundry-Projekt vorhanden ist und ob die Anmeldeinformationen korrekt sind. Versuchen Sie, eine direkte Verbindung mit dem MCP-Server herzustellen, um das Authentifizierungssetup zu testen. Überprüfen Sie bei Verwendung der verwalteten Identität (PMI, Agent-Identität oder MI) die richtigen RBAC-Rollenzuweisungen für den Aufrufer auf der Zielressource. |
tools/list gibt Nulltools für OpenAPI-Tools zurück. |
Ungültige OpenAPI-Spezifikation. Die Toolbox erstellt das Toolmanifest aus der Spezifikation, was fehlschlägt, wenn die Spezifikation fehlerhaft ist. | Überprüfen Sie den OpenAPI-Spezifikationsinhalt. Überprüfen Sie, ob sie openAPI 3.0 oder 3.1 entspricht und gültige paths, operationId Werte und Parameterschemas enthält. Überprüfen Sie bei Verwendung der verwalteten Identitätsauthentifizierung auch RBAC-Rollenzuweisungen für den Zieldienst. |
tools/list gibt weniger Tools als erwartet zurück. |
Der allowed_tools Filter enthält falsche oder falsch geschriebene Toolnamen. Bei Toolnamen wird die Groß-/Kleinschreibung beachtet, und die Namen müssen der MCP-Spezifikation für Toolnamen entsprechen (keine Leerzeichen oder Sonderzeichen). |
Entfernen Sie allowed_tools vorübergehend und rufen Sie tools/list an, um die vollständige Toolliste abzurufen. Verwenden Sie die genauen Namen aus der Antwort, um Werte für allowed_tools. |
tools/list gibt null Werkzeuge (andere Tooltypen) zurück. |
Toolbox nicht vollständig bereitgestellt oder Werkzeugtyp wird in dieser Region nicht unterstützt. Für integrierte Tools (Websuche, KI-Suche, Codedolmetscher, Dateisuche) werden Toolmanifeste serverseitig erstellt und erfordern keine Authentifizierung – wenn sie leer zurückgeben, wird die Toolboxversion möglicherweise noch nicht bereitgestellt. | Warten Sie 10 Sekunden, und wiederholen Sie den Vorgang. |
400 Multiple tools without identifiers |
Zwei unbenannte Tooltypen in einer Toolbox | Behalten Sie höchstens ein unbenanntes Element bei; fügen Sie server_label zu allen MCP-Tools hinzu. |
CONSENT_REQUIRED (Code -32006) |
OAuth-Verbindung erfordert Die Zustimmung des Benutzers | Öffnen Sie die Zustimmungs-URL in einem Browser, schließen Sie den OAuth-Ablauf ab und wiederholen Sie dann den Vorgang. |
401 bei MCP-Anrufen |
Abgelaufenes Token oder falscher Gültigkeitsbereich | Verwenden Sie den Bereich https://ai.azure.com/.default , und aktualisieren Sie das Token. |
| Toolnamen, die nicht übereinstimmen | MCP-Toolnamen werden mit dem Präfix versehen. server_label |
Format {server_label}.{tool_name} verwenden (z. B myserver.get_info. ). |
500 unter send_ping() |
Der TOOLBOX-MCP-Server implementiert die MCP-Methode ping nicht. |
Verwenden Sie die Microsoft Agent Framework-KlasseFoundryToolbox, die die Toolboxverbindung behandelt. Rufen Sie nicht direkt an send_ping() . |
500 unter prompts/list |
Der Foundry MCP-Server implementiert prompts/listnicht . |
Übergeben Sie load_prompts=False (oder ein Äquivalent) an den Konstruktor Ihres MCP-Clients. |
500 mit Nicht-Streaming-tools/call |
Der Nicht-Streamingmodus (stream=False) wird für MCP-Endpunkte der Toolbox nicht unterstützt. |
Verwenden Sie immer stream=True beim Verwenden von Toolbox MCP Tools. |
500 unter tools/list |
Vorübergehender Serverfehler | Wiederholen Sie den Vorgang nach ein paar Sekunden. |
| Umgebungsvariablen, die zur Laufzeit überschrieben werden | Die Plattform behält sich alle mit FOUNDRY_ vorangestellten Umgebungsvariablen vor und überschreibt möglicherweise stillschweigend benutzerdefinierte Werte. |
Benennen Sie benutzerdefinierte Umgebungsvariablen um, um das FOUNDRY_ Präfix zu vermeiden (z. B. anstelle TOOLBOX_MCP_ENDPOINT von FOUNDRY_TOOLBOX_ENDPOINT). |
Das Erinnerungstool ist nur für gehostete Agents verfügbar. Sie können die Erinnerungsfunktion nicht mit Prompt-Agenten verwenden.
Vollständige Einrichtungsanweisungen, Verwendungsbeispiele und Einschränkungen finden Sie im Erinnerungstool für Selbstplanungs-Agents.
Regions- und Modellkompatibilität
Die Verfügbarkeit der Toolbox hängt von zwei Faktoren ab, die über die Projektregion hinausgehen:
- Region: Einige Tooltypen sind in jeder Region, die den Agentdienst unterstützt, nicht verfügbar. Beispielsweise unterstützt eine Region, die den Toolboxendpunkt unterstützt, möglicherweise nicht alle integrierten Tooltypen.
Stellen Sie vor der Bereitstellung einer Toolbox sicher, dass Ihre Zielregion die tooltypen unterstützt, die Sie verwenden möchten. Die vollständigen Kompatibilitätstabellen finden Sie unter Toolunterstützung nach Region und Modell.
Verwandte Inhalte
- Verbinden von Agents mit Modellkontextprotokollservern
- Verfügbare Tools und Beispielaufforderungen für Foundry MCP Server
- Hinzufügen der MCP-Serverauthentifizierung
- Websuchtool
- Azure KI-Suche Tool
- Überblick über Guardrails
- Verwalten von Fähigkeiten
- Bereitstellen eines gehosteten Agents
- Hinzufügen einer Verbindung zu Ihrem Projekt
- Netzwerkisolation für Microsoft Foundry konfigurieren