Dela via


Exponera en agent som ett MCP-verktyg

Den här handledningen visar hur du exponerar en agent som ett verktyg över Model Context-protokollet (MCP), så att den kan användas av andra system som stöder MCP-verktyg.

Förutsättningar

Förutsättningar finns i steget Skapa och kör en enkel agent i den här självstudien.

Installera NuGet-paket

Om du vill använda Microsoft Agent Framework med Azure OpenAI måste du installera följande NuGet-paket:

dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease

Lägg även till stöd för att vara värd för ett verktyg via Model Context Protocol (MCP) genom att lägga till följande NuGet-paket

dotnet add package Microsoft.Extensions.Hosting --prerelease
dotnet add package ModelContextProtocol --prerelease

Exponera en agent som ett MCP-verktyg

Du kan exponera ett AIAgent MCP-verktyg genom att omsluta det i en funktion och använda McpServerTool. Du måste sedan registrera den med en MCP-server. Detta gör att agenten kan anropas som ett verktyg av alla MCP-kompatibla klienter.

Skapa först en agent som du ska exponera som ett MCP-verktyg.

using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using OpenAI;

AIAgent agent = new AzureOpenAIClient(
    new Uri("https://<myresource>.openai.azure.com"),
    new AzureCliCredential())
        .GetChatClient("gpt-4o-mini")
        .CreateAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Förvandla agenten till ett funktionsverktyg och sedan ett MCP-verktyg. Agentnamnet och beskrivningen används som mcp-verktygsnamn och beskrivning.

using ModelContextProtocol.Server;

McpServerTool tool = McpServerTool.Create(agent.AsAIFunction());

Konfigurera MCP-servern för att lyssna efter inkommande begäranden via standardindata/utdata och exponera MCP-verktyget:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using ModelContextProtocol.Server;

HostApplicationBuilder builder = Host.CreateEmptyApplicationBuilder(settings: null);
builder.Services
    .AddMcpServer()
    .WithStdioServerTransport()
    .WithTools([tool]);

await builder.Build().RunAsync();

Detta startar en MCP-server som exponerar agenten som ett verktyg över MCP-protokollet.

Den här handledningen visar hur du exponerar en agent som ett verktyg över Model Context-protokollet (MCP), så att den kan användas av andra system som stöder MCP-verktyg.

Förutsättningar

Förutsättningar och installation av Python-paket finns i steget Skapa och kör en enkel agent i den här självstudien.

Exponera en agent som en MCP-server

Du kan exponera en agent som en MCP-server genom att använda as_mcp_server() metoden. Detta gör att agenten kan anropas som ett verktyg av alla MCP-kompatibla klienter.

Skapa först en agent som du ska exponera som en MCP-server. Du kan också lägga till verktyg i agenten:

from typing import Annotated
from agent_framework.openai import OpenAIResponsesClient

def get_specials() -> Annotated[str, "Returns the specials from the menu."]:
    return """
        Special Soup: Clam Chowder
        Special Salad: Cobb Salad
        Special Drink: Chai Tea
        """

def get_item_price(
    menu_item: Annotated[str, "The name of the menu item."],
) -> Annotated[str, "Returns the price of the menu item."]:
    return "$9.99"

# Create an agent with tools
agent = OpenAIResponsesClient().create_agent(
    name="RestaurantAgent",
    description="Answer questions about the menu.",
    tools=[get_specials, get_item_price],
)

Förvandla agenten till en MCP-server. Agentnamnet och beskrivningen används som MCP-servermetadata:

# Expose the agent as an MCP server
server = agent.as_mcp_server()

Konfigurera MCP-servern för att lyssna efter inkommande begäranden via standardindata/utdata:

import anyio
from mcp.server.stdio import stdio_server

async def run():
    async def handle_stdin():
        async with stdio_server() as (read_stream, write_stream):
            await server.run(read_stream, write_stream, server.create_initialization_options())

    await handle_stdin()

if __name__ == "__main__":
    anyio.run(run)

Detta startar en MCP-server som exponerar agenten via MCP-protokollet, så att den kan användas av MCP-kompatibla klienter som VS Code GitHub Copilot Agents.

Nästa steg