Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Microsoft Foundry Toolbox to nazwany, wersjonowany pakiet hostowanych konfiguracji narzędzi, takich jak interpreter kodu, wyszukiwanie plików, generowanie obrazów, mcp i wyszukiwanie w Internecie. Przybornike umożliwiają zarządzanie konfiguracją narzędzia raz w narzędziu Foundry i ponowne używanie ich między agentami.
Struktura agenta obejmuje użycie przybornika. Tworzenie i aktualizowanie wersji przybornika za pośrednictwem portalu Foundry lub zestawu azure-ai-projects SDK.
Ważna
FoundryToolbox jest dostarczany przez pakiet beta agent-framework-foundry-hosting i może ulec zmianie przed stabilną wersją.
W przypadku zarządzanej przez FoundryAgentusługę dołącz przybornik do definicji agenta w narzędziu Foundry. Wskazówki dotyczące użycia przybornika po stronie klienta .NET nie są obecnie udokumentowane.
Instalowanie pakietów
pip install agent-framework-foundry-hosting agent-framework-foundry --pre
FoundryToolbox program jest importowany z agent_framework.foundry programu i dostarczany przez agent-framework-foundry-hostingprogram .
Konfigurowanie przybornika
Ustaw jawny punkt końcowy MCP przybornika:
TOOLBOX_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<name>/mcp?api-version=v1"
Możesz też FoundryToolbox skonstruować punkt końcowy:
FOUNDRY_PROJECT_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>"
TOOLBOX_NAME="<toolbox-name>"
Przykłady hostowanych agentów są również używane dla programu AZURE_AI_MODEL_DEPLOYMENT_NAMEFoundryChatClient.
Używanie FoundryToolbox z hostowanym agentem
FoundryToolboxrozwiązuje swój punkt końcowy, uwierzytelnia każde żądanie MCP przy użyciu podanego poświadczenia Azure, przekazuje identyfikator wywołania usługi Foundry na żądanie i uczestniczy w cyklu życia połączenia agenta.
import asyncio
import os
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient, FoundryToolbox, ResponsesHostServer
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
async def main():
credential = DefaultAzureCredential()
# FoundryToolbox resolves the toolbox endpoint from the environment
# (TOOLBOX_ENDPOINT, or FOUNDRY_PROJECT_ENDPOINT + TOOLBOX_NAME), authenticates
# every request with the credential, and transparently forwards the platform
# per-request call-id to the toolbox. The hosting server enters the agent, which
# connects the toolbox on first use and closes it at shutdown.
toolbox = FoundryToolbox(credential)
# Create the chat client
client = FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=credential,
)
agent = Agent(
client=client,
instructions="You are a friendly assistant. Keep your answers brief.",
tools=toolbox,
# History will be managed by the hosting infrastructure, thus there
# is no need to store history by the service. Learn more at:
# https://developers.openai.com/api/reference/resources/responses/methods/create
default_options={"store": False},
)
server = ResponsesHostServer(agent)
await server.run_async()
Uwidaczniaj umiejętności przybornika
Przybornik może uwidaczniać umiejętności agenta w programie MCP. Ustaw load_tools=False , gdy tylko umiejętności powinny być widoczne dla modelu, a następnie dodaj przybornik jako narzędzie, aby sesja MCP łączyła się i używała as_skills_provider() jako dostawcy kontekstu.
import asyncio
import os
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient, FoundryToolbox, ResponsesHostServer
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
async def main() -> None:
credential = DefaultAzureCredential()
# FoundryToolbox resolves the toolbox endpoint from the environment
# (TOOLBOX_ENDPOINT, or FOUNDRY_PROJECT_ENDPOINT + TOOLBOX_NAME), authenticates
# every request with the credential, and forwards the platform per-request
# call-id. ``load_tools=False`` keeps the toolbox's tools hidden so only its
# Agent Skills (SEP-2640) are surfaced; passing it via ``tools=`` connects the
# MCP session that ``as_skills_provider()`` reads from.
toolbox = FoundryToolbox(credential, load_tools=False)
# as_skills_provider() discovers skills from skill://index.json on the toolbox
# MCP session and exposes them as an agent context provider; SKILL.md bodies are
# fetched on demand via resources/read. disable_load_skill_approval=True registers
# the load_skill tool with approval_mode="never_require" so this unattended agent
# can load skills without an approval round-trip -- the Responses host runs the
# agent without an AgentSession, which the default approval flow requires.
skills_provider = toolbox.as_skills_provider(disable_load_skill_approval=True)
client = FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=credential,
)
agent = Agent(
client=client,
name=os.environ.get("AGENT_NAME", "hosted-toolbox-mcp-skills"),
instructions="You are a helpful assistant.",
tools=toolbox,
context_providers=[skills_provider],
# History will be managed by the hosting infrastructure, thus there
# is no need to store history by the service. Learn more at:
# https://developers.openai.com/api/reference/resources/responses/methods/create
default_options={"store": False},
)
server = ResponsesHostServer(agent)
await server.run_async()
Zatwierdzenie pozostaje domyślnie włączone dla operacji umiejętności. Wyłącz pojedyncze zatwierdzenia tylko w przypadku zaufanych, nienadzorowanych scenariuszy.
Używanie przybornika z FoundryAgent
Dołącz przybornik do definicji monitu lub hostowanego agenta w narzędziu Foundry.
FoundryAgent używa przechowywanej konfiguracji narzędzia; Przekazywanie po stronie klienta przybornika nie powoduje dodania go do zarządzanego agenta.
Nawiązywanie połączenia za pośrednictwem surowego protokołu MCP
Użyj MCPStreamableHTTPTool bezpośrednio, gdy aplikacja nie używa otoki hostingu FoundryToolbox . Podaj punkt końcowy przybornika i token elementu nośnego Entra ID za pomocą elementu header_provider.
import asyncio
import os
from collections.abc import Callable
from typing import Any, cast
from agent_framework import Agent, MCPStreamableHTTPTool
from agent_framework.foundry import FoundryChatClient
from azure.core.credentials import TokenCredential
from azure.identity import AzureCliCredential, DefaultAzureCredential, get_bearer_token_provider
from dotenv import load_dotenv
def make_toolbox_header_provider(credential: TokenCredential) -> Callable[[dict[str, Any]], dict[str, str]]:
"""Build a header_provider that injects a fresh Azure AI bearer token on every MCP request."""
get_token = get_bearer_token_provider(credential, "https://ai.azure.com/.default")
def provide(_kwargs: dict[str, Any]) -> dict[str, str]:
return {
"Authorization": f"Bearer {get_token()}",
}
return provide
async def main() -> None:
credential = DefaultAzureCredential()
toolbox_tool = MCPStreamableHTTPTool(
name="foundry_toolbox",
description="Tools exposed by the configured Foundry toolbox",
url=os.environ["FOUNDRY_TOOLBOX_ENDPOINT"],
header_provider=make_toolbox_header_provider(credential),
load_prompts=False,
)
async with Agent(
client=FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["FOUNDRY_MODEL"],
credential=credential,
),
instructions="You are a helpful assistant. Use the available toolbox tools to answer the user.",
tools=toolbox_tool,
) as agent:
query = "What tools do you have access to?"
print(f"User: {query}")
result = await agent.run(query)
print(f"Assistant: {result}")
W przykładzie niższego poziomu użyto metody FOUNDRY_TOOLBOX_ENDPOINT. Przykładowe umiejętności przybornika używają FOUNDRY_TOOLBOX_MCP_SERVER_URLmetody ; te nazwy należą do tych przykładów i są oddzielone od FoundryToolbox ustawień i TOOLBOX_NAME klasyTOOLBOX_ENDPOINT.
Limitations
- Narzędzia MCP w przyborniku używają uwierzytelniania po stronie serwera za pośrednictwem rozwiązania Foundry
project_connection_id; klient programu Agent Framework nie przechowuje nadrzędnego tokenu elementu nośnego MCP. - Korzystanie z przybornika jako serwera MCP wymaga Entra ID uwierzytelniania po stronie klienta dla punktu końcowego przybornika.
- Odpowiedzi przepływu zgody, takie jak
CONSENT_REQUIREDsą obsługiwane podczas działania agenta, a nie podczas tworzenia połączenia przybornika.
Samples
| Sample | Description |
|---|---|
| foundry_toolbox/main.py |
FoundryToolbox z hostowanym agentem odpowiedzi |
| foundry_toolbox_mcp_skills/main.py | Umiejętności agenta oparte na przyborniku |
| foundry_chat_client_with_toolbox.py | Korzystanie z Toolbox MCP przy użyciu MCPStreamableHTTPTool |
| foundry_chat_client_with_toolbox_skills.py | Konfiguracja umiejętności oparta na zestawie narzędzi |
| invoke_foundry_toolbox_mcp | Użycie mcp po stronie przepływu pracy |
Narzędzie Go nie uwidacznia obecnie pomocnika przybornika foundry. Konfigurowanie przybornika za pomocą narzędzia Foundry i używanie obsługiwanych deklaracji narzędzi lokalnych lub hostowanych dla agentów języka Go.