From 51e0dc11952091464a09fd439430a2b025a82955 Mon Sep 17 00:00:00 2001 From: alliscode Date: Tue, 12 May 2026 12:23:43 -0700 Subject: [PATCH] Fixing FoundryToolboxMcp sample to use created toolbox. --- .../Agent_Step25_FoundryToolboxMcp/Program.cs | 18 ++++++++++-------- .../Agent_Step25_FoundryToolboxMcp/README.md | 5 +++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/dotnet/samples/02-agents/AgentsWithFoundry/Agent_Step25_FoundryToolboxMcp/Program.cs b/dotnet/samples/02-agents/AgentsWithFoundry/Agent_Step25_FoundryToolboxMcp/Program.cs index c8aefd7f5c..01a1f36d1b 100644 --- a/dotnet/samples/02-agents/AgentsWithFoundry/Agent_Step25_FoundryToolboxMcp/Program.cs +++ b/dotnet/samples/02-agents/AgentsWithFoundry/Agent_Step25_FoundryToolboxMcp/Program.cs @@ -20,22 +20,18 @@ #pragma warning disable OPENAI001 // Experimental API #pragma warning disable AAIP001 // AgentToolboxes is experimental -// Must match the `` segment of FOUNDRY_TOOLBOX_ENDPOINT. +// Name of the toolbox to create and connect to. const string ToolboxName = "research_toolbox"; const string Query = "What tools do you have access to?"; string endpoint = 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-5.4-mini"; -string toolboxEndpoint = Environment.GetEnvironmentVariable("FOUNDRY_TOOLBOX_ENDPOINT") - ?? throw new InvalidOperationException( - "FOUNDRY_TOOLBOX_ENDPOINT is not set. Example: " + - "https://.services.ai.azure.com/api/projects//toolsets//mcp?api-version=2025-05-01-preview"); TokenCredential credential = new DefaultAzureCredential(); // Comment out if the toolbox already exists in your Foundry project. -await CreateSampleToolboxAsync(ToolboxName, endpoint, credential); +var toolboxEndpoint = await CreateSampleToolboxAsync(ToolboxName, endpoint, credential); // Inject a fresh Azure AI bearer token on every MCP request. using var httpClient = new HttpClient(new BearerTokenHandler(credential, "https://ai.azure.com/.default") @@ -51,6 +47,11 @@ { Endpoint = new Uri(toolboxEndpoint), Name = "foundry_toolbox", + TransportMode = HttpTransportMode.StreamableHttp, + AdditionalHeaders = new Dictionary + { + ["Foundry-Features"] = "Toolboxes=V1Preview", + }, }, httpClient)); @@ -74,7 +75,7 @@ // --------------------------------------------------------------------------- // Helper: create (or replace) a sample toolbox so the sample runs end-to-end // --------------------------------------------------------------------------- -static async Task CreateSampleToolboxAsync(string name, string endpoint, TokenCredential credential) +static async Task CreateSampleToolboxAsync(string name, string endpoint, TokenCredential credential) { // Toolboxes are normally configured in the Foundry portal or a deployment // script, not the application itself. This helper exists so the sample can @@ -103,12 +104,13 @@ static async Task CreateSampleToolboxAsync(string name, string endpoint, TokenCr serverUri: new Uri("https://gitmcp.io/Azure/azure-rest-api-specs"), toolCallApprovalPolicy: new McpToolCallApprovalPolicy(GlobalMcpToolCallApprovalPolicy.NeverRequireApproval))); - var created = (await toolboxClient.CreateToolboxVersionAsync( + ToolboxVersion created = (await toolboxClient.CreateToolboxVersionAsync( name: name, tools: [mcpTool], description: "Sample toolbox with an MCP tool — created by Agent_Step25 sample.")).Value; Console.WriteLine($"Created toolbox '{created.Name}' v{created.Version} ({created.Tools.Count} tool(s))"); + return $"{endpoint}/toolboxes/{created.Name}/mcp?api-version=v{created.Version}"; } // --------------------------------------------------------------------------- diff --git a/dotnet/samples/02-agents/AgentsWithFoundry/Agent_Step25_FoundryToolboxMcp/README.md b/dotnet/samples/02-agents/AgentsWithFoundry/Agent_Step25_FoundryToolboxMcp/README.md index 511f993ced..8a9d22e28a 100644 --- a/dotnet/samples/02-agents/AgentsWithFoundry/Agent_Step25_FoundryToolboxMcp/README.md +++ b/dotnet/samples/02-agents/AgentsWithFoundry/Agent_Step25_FoundryToolboxMcp/README.md @@ -19,10 +19,11 @@ Set the following environment variables: ```powershell $env:AZURE_AI_PROJECT_ENDPOINT="https://your-foundry-service.services.ai.azure.com/api/projects/your-foundry-project" $env:AZURE_AI_MODEL_DEPLOYMENT_NAME="gpt-5.4-mini" -$env:FOUNDRY_TOOLBOX_ENDPOINT="https://your-foundry-service.services.ai.azure.com/api/projects/your-foundry-project/toolsets/research_toolbox/mcp?api-version=2025-05-01-preview" ``` -The `` segment of `FOUNDRY_TOOLBOX_ENDPOINT` must match the `ToolboxName` constant in `Program.cs`. +The sample creates a toolbox named `research_toolbox` in your Foundry project on +startup, then connects to its MCP endpoint at +`{AZURE_AI_PROJECT_ENDPOINT}/toolboxes/research_toolbox/mcp?api-version=v{version}`. ## Run the sample