mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
42 lines
2.0 KiB
C#
42 lines
2.0 KiB
C#
// 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";
|
|
|
|
// WARNING: DefaultAzureCredential is convenient for development but requires careful consideration in production.
|
|
// In production, consider using a specific credential (e.g., ManagedIdentityCredential) to avoid
|
|
// latency issues, unintended credential probing, and potential security risks from fallback mechanisms.
|
|
var persistentAgentsClient = new PersistentAgentsClient(endpoint, new DefaultAzureCredential());
|
|
|
|
// 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();
|