Udostępnij przez


Uwidacznianie agenta jako narzędzia MCP

W tym samouczku pokazano, jak uwidocznić agenta jako narzędzie za pośrednictwem protokołu MCP (Model Context Protocol), dzięki czemu może być używany przez inne systemy, które obsługują narzędzia MCP.

Wymagania wstępne

Aby zapoznać się z wymaganiami wstępnymi, zobacz krok Tworzenie i uruchamianie prostego agenta w tym samouczku.

Instalowanie pakietów NuGet

Aby używać programu Microsoft Agent Framework z usługą Azure OpenAI, należy zainstalować następujące pakiety NuGet:

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

Aby dodać również obsługę hostowania narzędzia za pośrednictwem protokołu MCP (Model Context Protocol), dodaj następujące pakiety NuGet

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

Uwidacznianie agenta jako narzędzia MCP

Można uwidocznić AIAgent jako narzędzie MCP, otaczając go funkcją i używając McpServerTool. Następnie należy zarejestrować go na serwerze MCP. Dzięki temu agent może być wywoływany jako narzędzie przez dowolnego klienta zgodnego z umową MCP.

Najpierw utwórz agenta, który będzie uwidaczniany jako narzędzie MCP.

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");

Przełącz agenta w narzędzie funkcji, a następnie narzędzie MCP. Nazwa i opis agenta będą używane jako nazwa i opis narzędzia mcp.

using ModelContextProtocol.Server;

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

Skonfiguruj serwer MCP, aby nasłuchiwać żądań przychodzących za pośrednictwem standardowych danych wejściowych/wyjściowych i uwidaczniać narzędzie MCP:

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();

Spowoduje to uruchomienie serwera MCP, który uwidacznia agenta jako narzędzie za pośrednictwem protokołu MCP.

W tym samouczku pokazano, jak uwidocznić agenta jako narzędzie za pośrednictwem protokołu MCP (Model Context Protocol), dzięki czemu może być używany przez inne systemy, które obsługują narzędzia MCP.

Wymagania wstępne

Aby uzyskać wymagania wstępne i zainstalować pakiety języka Python, zobacz krok Tworzenie i uruchamianie prostego agenta w tym samouczku.

Uwidacznianie agenta jako serwera MCP

Agent można skonfigurować jako serwer MCP przy użyciu metody as_mcp_server(). Dzięki temu agent może być wywoływany jako narzędzie przez dowolnego klienta zgodnego z umową MCP.

Najpierw utwórz agenta, który będzie uwidaczniany jako serwer MCP. Możesz również dodać narzędzia do agenta:

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],
)

Zmień agenta na serwer MCP. Nazwa i opis agenta będą używane jako metadane serwera MCP:

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

Skonfiguruj serwer MCP, aby nasłuchiwać żądań przychodzących za pośrednictwem standardowych danych wejściowych/wyjściowych:

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)

Spowoduje to uruchomienie serwera MCP, który uwidacznia agenta za pośrednictwem protokołu MCP, dzięki czemu może być używany przez klientów zgodnych z mcP, takich jak VS Code GitHub Copilot Agents.

Dalsze kroki