Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En Microsoft Foundry Toolbox är en namngiven version av serversidans paket med värdbaserade verktygskonfigurationer, till exempel kodtolk, filsökning, bildgenerering, MCP och webbsökning. Med verktygslådor kan du hantera verktygskonfigurationen en gång i Foundry och återanvända den mellan agenter.
Agent Framework täcker användning av Toolbox. Skapa och uppdatera verktygslådans versioner via Foundry-portalen eller azure-ai-projects SDK:t.
Important
FoundryToolbox tillhandahålls av beta-paketet agent-framework-foundry-hosting och kan ändras innan en stabil version släpps.
För en tjänsthanterad FoundryAgent kopplar du verktygslådan till agentdefinitionen i Foundry. Vägledning för .NET toolbox-förbrukning på klientsidan är för närvarande inte dokumenterad.
Installera programvarupaketen
pip install agent-framework-foundry-hosting agent-framework-foundry --pre
FoundryToolbox importeras från agent_framework.foundry och tillhandahålls av agent-framework-foundry-hosting.
Konfigurera verktygslådan
Ange en explicit MCP-slutpunkt för verktygslådan:
TOOLBOX_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<name>/mcp?api-version=v1"
Eller låt FoundryToolbox konstruera ändpunkten:
FOUNDRY_PROJECT_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>"
TOOLBOX_NAME="<toolbox-name>"
Exemplen på hosted-agent använder också AZURE_AI_MODEL_DEPLOYMENT_NAME för FoundryChatClient.
Använda FoundryToolbox med en värdbaserad agent
FoundryToolbox fastställer sin slutpunkt, autentiserar varje MCP-begäran med de angivna Azure-autentiseringsuppgifterna, vidarebefordrar Foundrys anrops-ID per begäran och deltar i agentens anslutnings livscykel.
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()
Exponera Toolbox-färdigheter
En verktygslåda kan exponera agentkunskaper över MCP. Ange load_tools=False när endast färdigheter ska vara modellsynliga, lägg sedan till Toolbox som ett verktyg så att dess MCP-session ansluter, och använd as_skills_provider() som en kontextleverantör.
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()
Godkännande är fortfarande aktiverat som standard för kompetensåtgärder. Inaktivera endast enskilda godkännanden för betrodda, obevakade scenarier.
Använd verktygslådan med FoundryAgent
Anslut Toolbox till Prompt- eller Hosted Agent-definitionen i Foundry.
FoundryAgent använder den sparade verktygskonfigurationen; att skicka Toolbox på klientsidan lägger inte till den i den hanterade agenten.
Anslut via rå MCP
Använd MCPStreamableHTTPTool direkt när programmet inte använder värdomslutningen FoundryToolbox . Ange Toolbox-slutpunkten och en Entra ID-bearertoken via 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}")
Exemplet på lägre nivå använder FOUNDRY_TOOLBOX_ENDPOINT. Toolbox-färdighetsexemplet använder FOUNDRY_TOOLBOX_MCP_SERVER_URL; de här namnen hör till dessa exempel och är åtskilda från FoundryToolbox-klassens TOOLBOX_ENDPOINT- och TOOLBOX_NAME-inställningar.
Limitations
- MCP-verktyg i en verktygslåda använder autentisering på serversidan via en Foundry
project_connection_id. Agent Framework-klienten innehåller inte den överordnade MCP-ägartoken. - Att använda en verktygslåda som en MCP-server kräver klientbaserad Entra ID-autentisering för Toolbox-slutpunkten.
- Medgivandeflödessvar som
CONSENT_REQUIREDhanteras medan agenten körs, inte när toolbox-anslutningen skapas.
Samples
| Sample | Beskrivning |
|---|---|
| foundry_toolbox/main.py |
FoundryToolbox med en hostad Responses-agent |
| foundry_toolbox_mcp_skills/main.py | Agentfärdigheter med verktygsstöd |
| foundry_chat_client_with_toolbox.py | Användning av Toolbox MCP med MCPStreamableHTTPTool |
| foundry_chat_client_with_toolbox_skills.py | Konfiguration av färdigheter som stöds av Toolbox |
| invoke_foundry_toolbox_mcp | MCP-förbrukning på arbetsflödessidan |
Go tillhandahåller för närvarande ingen hjälpfunktion för Foundry Toolbox. Konfigurera verktygslådor via Foundry och använd lokala eller värdbaserade verktygsdeklarationer som stöds för Go-agenter.