// Copyright (c) Microsoft. All rights reserved. // This sample shows how to expose an AI agent as an MCP tool. using Azure.AI.Agents.Persistent; using Azure.Identity; using Microsoft.Agents.AI; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using ModelContextProtocol.Server; var endpoint = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_ENDPOINT") ?? throw new InvalidOperationException("AZURE_FOUNDRY_PROJECT_ENDPOINT is not set."); var deploymentName = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_DEPLOYMENT_NAME") ?? "gpt-4o-mini"; var persistentAgentsClient = new PersistentAgentsClient(endpoint, new AzureCliCredential()); // Create a server side persistent agent var agentMetadata = await persistentAgentsClient.Administration.CreateAgentAsync( model: deploymentName, instructions: "You are good at telling jokes, and you always start each joke with 'Aye aye, captain!'.", name: "Joker", description: "An agent that tells jokes."); // Retrieve the server side persistent agent as an AIAgent. AIAgent agent = await persistentAgentsClient.GetAIAgentAsync(agentMetadata.Value.Id); // Convert the agent to an AIFunction and then to an MCP tool. // The agent name and description will be used as the mcp tool name and description. McpServerTool tool = McpServerTool.Create(agent.AsAIFunction()); // Register the MCP server with StdIO transport and expose the tool via the server. HostApplicationBuilder builder = Host.CreateEmptyApplicationBuilder(settings: null); builder.Services .AddMcpServer() .WithStdioServerTransport() .WithTools([tool]); await builder.Build().RunAsync();