快速入門:建立一個工具箱並與託管代理一起使用

重要

本文中標示為預覽的項目目前仍在預覽中。 此預覽版未簽訂服務等級協議,Microsoft 不建議用於生產工作負載。 某些功能可能不被支援或功能受限。 欲了解更多資訊,請參閱 Microsoft Azure 預覽版補充使用條款。

在這個快速入門中,你會建立一個工具 箱 ,將兩個工具整合在一個受管理端點之下:

  • 網路搜尋,將回應建立在即時公開的網路結果之上。
  • Microsoft Learn MCP 伺服器,該伺服器以官方 Microsoft 文件為基礎回應。 這是一個不需要驗證的公開端點。

接著你從用 Python 撰寫的託管代理程式中取得工具箱。 工具箱會暴露一個 MCP 端點,因此代理程式會連接到單一 URL,並在執行時發現所有工具。 你可以之後再換工具,不用換代理程式碼。

如果你使用像 GitHub Copilot 這樣的程式代理程式,Microsoft Foundry 技能可以幫助建立工具箱端點,連接到託管代理,並調整範例工具。

先決條件

本快速入門是以託管代理程式工具鏈為基礎。 先完成託管代理快速入門的前置條件,涵蓋 Azure 訂閱、專案角色、Python、Azure 開發者 CLI(azd)以及擴充microsoft.foundry功能。

關於 Python SDK 路徑,請使用本文後面的 Python 部分,而非 Azure 開發者的 CLI 或 VS Code 工作流程。 該路徑會建立帶有 project_client.toolboxes.create_version(...)的工具箱,然後上傳託管代理程式作為新版本,並依名稱指向該工具箱。

安裝此路徑中使用的 Python 套件:

pip install "azure-ai-projects>=2.3.0" azure-identity python-dotenv

你需要一個現有的 Foundry 專案,並部署支援聊天的模型。 這個快速入門中的 Python SDK 路徑會建立工具箱和託管代理版本,但它不會為你建立新的 Foundry 專案或建立模型部署。

關於 .NET SDK 路徑,請使用本文後面的 C# 部分,而非 Azure 開發者 CLI 或 VS Code 工作流程。 該路徑會建立帶有 AgentToolboxes.CreateVersion(...)的工具箱,然後上傳 C# 主機代理程式作為新版本,並以名稱指向該工具箱。

你還需要 .NET 10 SDK 或更新版本,以及一個已部署具備聊天功能的 Foundry 專案。

你也需要 Visual Studio Code,並安裝 Microsoft Foundry Toolkit 擴充功能,且已登入 Azure。

步驟 1:初始化託管代理

從 Foundry 工具箱範例中初始化一個託管代理,該代理透過 MCP 連接工具箱並將工具暴露給模型。 你在下一步建立工具箱(my-toolbox),並將代理指向其端點。 在空目錄中執行這些指令。

mkdir my-toolbox-agent && cd my-toolbox-agent
azd ai agent init -m "https://github.com/microsoft-foundry/foundry-samples/blob/main/samples/python/hosted-agents/agent-framework/responses/04-foundry-toolbox/azure.yaml" --src src/toolbox-agent

依照提示選擇你的專案和現有的模型部署。 當提示選擇 容器資源配置時,選擇 1 核心、2Gi 記憶體。 代理程式的容器映像需要高於預設的層級。 --src 旗標會將代理程式建立為 src/toolbox-agent。

Note

代理顯現(agent.manifest.yaml)與獨立代理定義(agent.yaml)已被棄用。 自 Foundry azd 擴充套件(azure.ai.agents 1.0.0-beta.1)起,所有託管代理設定都集中在同一個 azure.yaml. 請參閱為託管代理程式撰寫 azure.yaml。

步驟二:建立工具箱

建立工具箱,然後複製它回傳的 MCP 端點。 在後續步驟中將該端點設為環境變數。

範例 azure.yaml 定義工具箱為服務 azure.ai.toolbox ,並將其與託管代理服務 uses:接線。 如果你變更工具箱設定,請編輯 azure.yaml 中的工具箱服務,而不是 src/toolbox-agent/agent.yaml。

首先,將工具箱指令指向你初始化時選擇的 Foundry 專案。 重複使用初始化已儲存在您 azd 環境中的端點:

azd env set FOUNDRY_PROJECT_ENDPOINT "$(azd env get-value FOUNDRY_PROJECT_ENDPOINT)"

範例在 toolbox.yaml 中包含一個 src/toolbox-agent ,該檔案會定義位於同一個端點後方的兩個工具。 從該檔案建立工具箱:

azd ai toolbox create my-toolbox --from-file ./src/toolbox-agent/toolbox.yaml

第一個版本會自動成為預設版本。 該指令會列印工具箱的版本化 MCP 端點。 從輸出中複製Endpoint值。 在接下來的步驟中將它設為 TOOLBOX_ENDPOINT 環境變數。 看起來像這樣:

https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/my-toolbox/versions/1/mcp?api-version=v1
  1. 打開 Visual Studio Code,在活動欄選擇 Foundry Toolkit。

  2. 如果系統提示,請登入你的 Azure 帳號。

  3. 在 「我的資源」中,展開你的專案,然後再展開 「工具」。

  4. 在 工具 檢視中,選擇 + 新增工具箱 圖示。

  5. 輸入工具箱名稱()my-toolbox及說明。

  6. 選擇 網頁搜尋。

  7. 選擇 + 新增工具,選擇新增遠端 MCP 伺服器,並輸入伺服器網址 https://learn.microsoft.com/api/mcp。 伺服器是公開的,因此不需要認證。

  8. 選取發行。 發佈會建立工具箱的第一個版本。

  9. 複製工具箱的 MCP 端點。 執行以下指令,並從輸出中複製該 endpoint 值。 在接下來的步驟中,將它設為 TOOLBOX_ENDPOINT 環境變數:

    azd ai toolbox show my-toolbox --output json
    

步驟 3:配置 Azure 資源

Agent 會從 TOOLBOX_ENDPOINT 環境變數讀取工具箱的 MCP 端點,而 azure.yaml 會從您的 azd 環境解析該變數。 接下來的步驟,你再設定這個數值。 配置代理的 Azure 資源:

azd provision

步驟四:在本地運行代理

  1. 透過在 .env 中的 src/toolbox-agent 檔案內設定這些值,讓本機代理程式指向你的工具箱。 將你在 步驟 2 複製的端點貼上:

    FOUNDRY_MODEL_NAME=<your-model-deployment-name>
    TOOLBOX_ENDPOINT=<versioned-endpoint-from-step-2>
    

    azd ai agent run 注入 FOUNDRY_PROJECT_ENDPOINT 並讀取 .env 檔案以執行本地執行。 此範例會為你處理工具箱連線、標頭和驗證。

  2. 啟動代理程式:

    azd ai agent run
    

    此指令建立虛擬環境,安裝相依關係,並將代理程式服務於 http://localhost:8088。 預覽套件可能會在設定期間產生 pip 警告。 這些警告是非阻塞性的。

  3. 在另一個終端機中,發送提示來運用以下工具:

    azd ai agent invoke --local "Find the latest release notes for the Azure CLI on the web."
    azd ai agent invoke --local "How do I create a hosted agent in Microsoft Foundry? Use the Microsoft Learn documentation."
    

步驟 5:部署至 Foundry 代理服務

將你在 步驟 2 複製的端點儲存在你的 azd 環境中,該環境會在部署時由 azure.yaml 解析。 接著建置並部署代理容器:

azd env set TOOLBOX_ENDPOINT "<versioned-endpoint-from-step-2>"
azd deploy

命令執行完成後,輸出內容會顯示代理測試場和代理端點的連結。 呼叫已部署的代理:

azd ai agent invoke "What's new in Microsoft Foundry? Use the Microsoft Learn documentation."

Python SDK 路徑

如果你想建立工具箱並部署託管代理版本,使用 Python SDK 而非 Azure 開發者 CLI 或 VS Code 流程,請遵循以下步驟。

1. 建立或選擇 Foundry 專案

  1. 開啟 Foundry 入口網站 並建立一個 Foundry 專案,或選擇現有的專案。
  2. 在專案中,部署一個具備聊天功能的模型,例如 gpt-5.4-mini。
  3. 從 Overview 複製專案端點,並從 Build>Deployments 複製部署名稱。

2. 下載工具箱中的 hosted-agent 範例

複製 Foundry 的範例存放庫:

git clone https://github.com/microsoft-foundry/foundry-samples.git

建立一個部署腳本的工作資料夾。 在該資料夾中,建立內容如下的 .env 檔案:

FOUNDRY_PROJECT_ENDPOINT=<your-project-endpoint>
AZURE_AI_MODEL_DEPLOYMENT_NAME=<your-model-deployment-name>
FOUNDRY_HOSTED_AGENT_NAME=toolbox-agent
TOOLBOX_NAME=my-toolbox
FOUNDRY_SAMPLE_PATH=<full-path-to-foundry-samples/samples/python/hosted-agents/agent-framework/responses/04-foundry-toolbox/src/agent-framework-agent-with-foundry-toolbox-responses>

步驟 3:用 Python 建立工具箱

在與 create_toolbox.py 相同的工作資料夾中建立一個名為 .env 的檔案:

import os

from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import MCPToolboxTool, WebSearchToolboxTool
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv

load_dotenv()

endpoint = os.environ["FOUNDRY_PROJECT_ENDPOINT"].rstrip("/")
toolbox_name = os.environ["TOOLBOX_NAME"]

with (
    DefaultAzureCredential() as credential,
    AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
):
    created = project_client.toolboxes.create_version(
        name=toolbox_name,
        description="Toolbox with web search and Microsoft Learn MCP.",
        tools=[
            WebSearchToolboxTool(
                name="web_search",
                search_context_size="medium",
            ),
            MCPToolboxTool(
                server_label="mslearn",
                server_url="https://learn.microsoft.com/api/mcp",
                require_approval="never",
            ),
        ],
    )
    print(f"Created toolbox version {created.version} for {created.name}")

    mcp_endpoint = (
        f"{endpoint}/toolboxes/{created.name}/versions/"
        f"{created.version}/mcp?api-version=v1"
    )
    print(f"Toolbox version: {created.version}")
    print(f"Toolbox MCP endpoint: {mcp_endpoint}")

執行腳本:

python create_toolbox.py

樣本託管 Agent 可以從TOOLBOX_ENDPOINT或從FOUNDRY_PROJECT_ENDPOINT加上TOOLBOX_NAME解析工具箱。 此路徑使用 TOOLBOX_NAME,因此你不需要將版本控制端點存於 .env。

4. 使用 Python 部署託管代理

在與 deploy_toolbox_agent.py 相同的工作資料夾中建立一個名為 .env 的檔案:

import os
import tempfile
import time
import zipfile
from pathlib import Path

from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
    AgentEndpointConfig,
    CodeConfiguration,
    CodeDependencyResolution,
    FixedRatioVersionSelectionRule,
    HostedAgentDefinition,
    ProtocolConfiguration,
    ProtocolVersionRecord,
    ResponsesProtocolConfiguration,
    VersionSelector,
)
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv

load_dotenv()

endpoint = os.environ["FOUNDRY_PROJECT_ENDPOINT"]
model_name = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]
agent_name = os.environ.get("FOUNDRY_HOSTED_AGENT_NAME", "toolbox-agent")
toolbox_name = os.environ["TOOLBOX_NAME"]
sample_path = Path(os.environ["FOUNDRY_SAMPLE_PATH"]).resolve()


def create_code_zip(source_dir: Path) -> Path:
    zip_path = Path(tempfile.gettempdir()) / f"{agent_name}.zip"
    excluded = {".git", ".venv", "__pycache__", ".env"}

    with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zip_file:
        for path in source_dir.rglob("*"):
            if not path.is_file():
                continue
            if any(part in excluded for part in path.parts):
                continue
            zip_file.write(path, path.relative_to(source_dir))

    return zip_path


def wait_for_active_version(project_client: AIProjectClient, version: str) -> None:
    for attempt in range(60):
        time.sleep(10)
        details = project_client.agents.get_version(
            agent_name=agent_name,
            agent_version=version,
        )
        status = details["status"]
        print(f"Provisioning status: {status} (attempt {attempt + 1}/60)")

        if status == "active":
            return

        if status == "failed":
            raise RuntimeError(f"Hosted agent provisioning failed: {dict(details)}")

    raise RuntimeError("Timed out waiting for the hosted agent version to become active.")


code_zip_path = create_code_zip(sample_path)

with (
    code_zip_path.open("rb") as code_stream,
    DefaultAzureCredential() as credential,
    AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
):
    original_agent_endpoint = None
    created = None

    try:
        created = project_client.agents.create_version_from_code(
            agent_name=agent_name,
            description="Hosted agent with Foundry Toolbox integration.",
            definition=HostedAgentDefinition(
                cpu="1",
                memory="2Gi",
                code_configuration=CodeConfiguration(
                    runtime="python_3_13",
                    entry_point=["python", "main.py"],
                    dependency_resolution=CodeDependencyResolution.REMOTE_BUILD,
                ),
                environment_variables={
                    "FOUNDRY_PROJECT_ENDPOINT": endpoint,
                    "AZURE_AI_MODEL_DEPLOYMENT_NAME": model_name,
                    "TOOLBOX_NAME": toolbox_name,
                },
                protocol_versions=[
                    ProtocolVersionRecord(protocol="responses", version="2.0.0")
                ],
            ),
            code=code_stream,
        )

        print(f"Created hosted agent version {created.version}")
        wait_for_active_version(project_client, created.version)

        original_agent_endpoint = project_client.agents.get(
            agent_name=agent_name
        ).agent_endpoint
        project_client.agents.update_details(
            agent_name=agent_name,
            agent_endpoint=AgentEndpointConfig(
                version_selector=VersionSelector(
                    version_selection_rules=[
                        FixedRatioVersionSelectionRule(
                            agent_version=created.version,
                            traffic_percentage=100,
                        ),
                    ]
                ),
                protocol_configuration=ProtocolConfiguration(
                    responses=ResponsesProtocolConfiguration()
                ),
            ),
        )

        with project_client.get_openai_client(agent_name=agent_name) as openai_client:
            response = openai_client.responses.create(
                input=(
                    "How do I create a hosted agent in Microsoft Foundry? "
                    "Use the Microsoft Learn documentation."
                ),
            )
            if response.status != "completed":
                raise RuntimeError(f"Agent invocation failed: {response.error}")
            print(response.output_text)
    finally:
        if original_agent_endpoint is not None:
            project_client.agents.update_details(
                agent_name=agent_name,
                agent_endpoint=original_agent_endpoint,
            )

        if created is not None:
            project_client.agents.delete_version(
                agent_name=agent_name,
                agent_version=created.version,
                force=True,
            )

執行腳本:

python deploy_toolbox_agent.py

此腳本會將工具箱範例上傳為新的託管代理版本,暫時指向該版本,並以 Microsoft Learn 問題呼叫該版本,完成後還原先前的端點設定。

5. 驗證由工具箱支援的回應

如果你正確設定工具箱,回應顯示託管代理發現了工具箱工具,並透過 Microsoft Learn 文件來回答。

C# SDK 路徑

使用此路徑建立工具箱,並部署 C# 託管代理範例,使用 .NET SDK 取代 Azure 開發者 CLI 或 VS Code 工作流程。

1. 建立或選擇 Foundry 專案

  1. 開啟 Foundry 入口網站 並建立一個 Foundry 專案,或選擇現有的專案。
  2. 在專案中,部署一個具備聊天功能的模型,例如 gpt-4o。
  3. 從 Overview 複製專案端點,並從 Build>Deployments 複製部署名稱。

2. 下載工具箱中的 hosted-agent 範例

複製 Foundry 的範例存放庫:

git clone https://github.com/microsoft-foundry/foundry-samples.git

C# 代管代理程式範例位於 samples/csharp/hosted-agents/agent-framework/foundry-toolbox-server-side/src/foundry-toolbox-server-side-dotnet-agent-framework 之下。 接下來的部署程式碼會在容器上設定以下環境變數:

Variable Description
FOUNDRY_PROJECT_ENDPOINT Foundry 的專案端點。
AZURE_AI_MODEL_DEPLOYMENT_NAME 聊天模式部署名稱。
TOOLBOX_NAME 代理程式連接的工具箱名稱。

3. 用 C 建立工具箱#

建立一個 .NET 控制台應用程式並安裝套件。 Toolbox API 目前處於預覽階段,請安裝預發布 Azure.AI.Projects 套件:

dotnet new console --name create-toolbox
cd create-toolbox
dotnet add package Azure.AI.Projects --prerelease
dotnet add package Azure.Identity

請用以下程式碼替換 Program.cs ,並設 endpoint 為你的專案端點:

using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;
using OpenAI;
using OpenAI.Responses;

#pragma warning disable AAIP001, OPENAI001

var endpoint = "https://<account>.services.ai.azure.com/api/projects/<project>";
var toolboxName = "my-toolbox";

AIProjectClient projectClient = new(new Uri(endpoint), new DefaultAzureCredential());
AgentToolboxes toolboxes = projectClient.AgentAdministrationClient.GetAgentToolboxes();

ToolboxVersion created = toolboxes.CreateVersion(
    name: toolboxName,
    tools:
    [
        new WebSearchToolboxTool { Name = "web_search", SearchContextSize = WebSearchToolSearchContextSize.Medium },
        new MCPToolboxTool(serverLabel: "mslearn")
        {
            ServerUri = new Uri("https://learn.microsoft.com/api/mcp"),
            ToolCallApprovalPolicy = new McpToolCallApprovalPolicy(GlobalMcpToolCallApprovalPolicy.NeverRequireApproval),
        },
    ],
    description: "Toolbox with web search and Microsoft Learn MCP.");
Console.WriteLine($"Created toolbox version {created.Version} for {created.Name}");

執行應用程式:

dotnet run

範例託管代理程式會從 TOOLBOX_NAME 加上 FOUNDRY_PROJECT_ENDPOINT 解析出工具箱,因此你不需要儲存版本化端點。

4. 使用 C# 部署託管代理程式

建立第二個主控台應用程式來執行部署程式碼:

dotnet new console --name deploy-toolbox-agent
cd deploy-toolbox-agent
dotnet add package Azure.AI.Projects --prerelease
dotnet add package Azure.AI.Extensions.OpenAI
dotnet add package Azure.Identity

以下列程式碼取代 Program.cs。 將 endpoint、chatModel 和 samplePath 設為您要的值。 samplePath 是你在 foundry-toolbox-server-side-dotnet-agent-framework 步驟 2 中複製的原始碼資料夾的完整路徑:

using Azure.AI.Extensions.OpenAI;
using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;
using OpenAI.Responses;

#pragma warning disable AAIP001, OPENAI001

var endpoint = "https://<account>.services.ai.azure.com/api/projects/<project>";
var chatModel = "gpt-4o";
var toolboxName = "my-toolbox";
var agentName = "toolbox-agent";
var samplePath =
    @"<path-to-foundry-samples>\samples\csharp\hosted-agents\agent-framework\foundry-toolbox-server-side\src\foundry-toolbox-server-side-dotnet-agent-framework";

AIProjectClient projectClient = new(new Uri(endpoint), new DefaultAzureCredential());
var agentsClient = projectClient.AgentAdministrationClient;

HostedAgentDefinition definition = new(cpu: "1", memory: "2Gi")
{
    Versions = { new ProtocolVersionRecord(ProjectsAgentProtocol.Responses, "2.0.0") },
    CodeConfiguration = new(
        runtime: "dotnet_10",
        entryPoint: ["dotnet", "foundry-toolbox-server-side.dll"],
        dependencyResolution: CodeDependencyResolution.RemoteBuild),
};
definition.EnvironmentVariables.Add("FOUNDRY_PROJECT_ENDPOINT", endpoint);
definition.EnvironmentVariables.Add("AZURE_AI_MODEL_DEPLOYMENT_NAME", chatModel);
definition.EnvironmentVariables.Add("TOOLBOX_NAME", toolboxName);

ProjectsAgentVersion? created = null;
AgentEndpointConfiguration? originalEndpoint = null;
try
{
    created = agentsClient.CreateAgentVersionFromCode(
        agentName, samplePath, new AgentVersionFromCodeMetadata(definition));
    Console.WriteLine($"Created hosted agent version {created.Version}");

    for (var attempt = 1; attempt <= 60; attempt++)
    {
        Thread.Sleep(TimeSpan.FromSeconds(10));
        created = agentsClient.GetAgentVersion(agentName, created.Version);
        Console.WriteLine($"Provisioning status: {created.Status} (attempt {attempt}/60)");
        if (created.Status == AgentVersionStatus.Active) break;
        if (created.Status == AgentVersionStatus.Failed)
            throw new InvalidOperationException("Hosted agent provisioning failed.");
    }

    ProjectsAgentRecord agent = agentsClient.GetAgent(agentName);
    originalEndpoint = agent.AgentEndpoint;
    agentsClient.PatchAgent(agentName, new PatchAgentOptions
    {
        AgentEndpoint = new AgentEndpointConfiguration
        {
            VersionSelector = new([new FixedRatioVersionSelectionRule(created.Version, 100)]),
            ProtocolConfiguration = new() { Responses = new ResponsesProtocolConfiguration() },
        },
    });

    ProjectResponsesClient responsesClient = projectClient.ProjectOpenAIClient
        .GetProjectResponsesClientForAgentEndpoint(agentName);
    ResponseResult response = responsesClient.CreateResponse(
        "How do I create a hosted agent in Microsoft Foundry? Use the Microsoft Learn documentation.");
    Console.WriteLine(response.GetOutputText());
}
finally
{
    if (originalEndpoint is not null)
        agentsClient.PatchAgent(agentName, new PatchAgentOptions { AgentEndpoint = originalEndpoint });
    if (created is not null)
        agentsClient.DeleteAgentVersion(agentName, created.Version, force: true);
}

執行應用程式:

dotnet run

此程式碼會將工具箱範例上傳為新的主機代理版本,暫時將託管代理指向該版本,並以 Microsoft Learn 問題呼叫該版本,完成後還原先前的端點設定。

5. 驗證由工具箱支援的回應

如果你正確設定工具箱,回應顯示託管代理發現了工具箱工具,並透過 Microsoft Learn 文件來回答。

清理資源

完成後刪除資源,這樣就不會再被收費了。

刪除工具箱:

azd ai toolbox delete my-toolbox --force

刪除工具箱後,它的端點就會停止運作。 從 src/toolbox-agent/.env 中移除它,並從您的 azd 環境中清除它:

azd env set TOOLBOX_ENDPOINT ""

刪除代理程式及其 Azure 資源:

警告

如果目前 azd 環境建立了 Foundry 專案, azd down 則會永久刪除該專案的資源群組及所有相關資料。 如果你在初始化時選擇了現有專案,則保留 azd down 該專案、其資源群組、託管代理程式及其他快速啟動資源。 要刪除現有專案中不再需要的資源,請分別刪除。

azd down

依名稱刪除工具箱:

import os

from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv

load_dotenv()

with (
    DefaultAzureCredential() as credential,
    AIProjectClient(
        endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
        credential=credential,
    ) as project_client,
):
    project_client.toolboxes.delete(name=os.environ["TOOLBOX_NAME"])

如果你為這個快速入門建立了專用的資源群組或專案,請在不再需要工具箱、聊天部署或託管代理之後,從 Azure 入口網站將其刪除。

部署程式碼已經刪除了託管代理版本,並在完成後還原了之前的端點設定。 要刪除工具箱,請將此程式碼加入安裝( Azure.AI.Projects 預發布版)及 Azure.Identity 套件的主控台應用程式:

using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;

#pragma warning disable AAIP001

var endpoint = "https://<account>.services.ai.azure.com/api/projects/<project>";
var toolboxName = "my-toolbox";

AIProjectClient projectClient = new(new Uri(endpoint), new DefaultAzureCredential());
projectClient.AgentAdministrationClient.GetAgentToolboxes().Delete(toolboxName);
Console.WriteLine($"Deleted toolbox '{toolboxName}'.");

如果你為這個快速入門建立了專用的資源群組或專案,請在不再需要工具箱、聊天部署或託管代理之後,從 Azure 入口網站將其刪除。

Troubleshooting

Issue Solution
tools/list 未傳回任何 Microsoft Learn 工具 請確認 mslearn 中的 toolbox.yaml 工具指向 https://learn.microsoft.com/api/mcp。
代理程式已啟動,但顯示 TOOLBOX_ENDPOINT is set but empty 或沒有可用工具 將 TOOLBOX_ENDPOINT 設為 .env 中步驟 2 的版本化端點,以供本機執行時使用,並在部署前執行 azd env set TOOLBOX_ENDPOINT "<endpoint>"。
對工具箱端點的呼叫會因授權錯誤而失敗 請確認每個請求都包含範圍限定為 https://ai.azure.com/.default 的 Entra 令牌。 範例會為您處理此項。
Connection refused 在本機執行時 確保沒有其他程序使用 port 8088。

你學到了什麼

在這篇快速啟動指南中,您將:

  • 建置了一個工具箱,將網頁搜尋與 Microsoft Learn MCP 伺服器整合至單一端點後方。
  • 使用 Azure Developer CLI、Python SDK 或 .NET SDK,取用來自透過 Model Context Protocol 連線之託管代理程式的工具箱。
  • 在本地運行代理程式或遠端驗證,然後部署到 Foundry 代理服務。

後續步驟