Bagikan melalui


Mengekspos agen sebagai alat MCP

Tutorial ini menunjukkan kepada Anda cara mengekspos agen sebagai alat melalui Protokol Konteks Model (MCP), sehingga dapat digunakan oleh sistem lain yang mendukung alat MCP.

Prasyarat

Untuk prasyarat, lihat langkah Buat dan jalankan agen sederhana dalam tutorial ini.

Menginstal paket NuGet

Untuk menggunakan Microsoft Agent Framework dengan Azure OpenAI, Anda perlu menginstal paket NuGet berikut:

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

Untuk juga menambahkan dukungan untuk menghosting alat melalui Model Context Protocol (MCP), tambahkan paket NuGet berikut

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

Mengekspos agen sebagai alat MCP

Anda dapat mengekspos AIAgent sebagai alat MCP dengan membungkusnya dalam fungsi dan menggunakan McpServerTool. Anda kemudian perlu mendaftarkannya dengan server MCP. Ini memungkinkan agen untuk dipanggil sebagai alat oleh klien yang kompatibel dengan MCP.

Pertama, buat agen yang akan Anda ekspos sebagai alat 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")
        .AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Ubah agen menjadi alat fungsional, kemudian alat MCP. Nama dan deskripsi agen akan digunakan sebagai nama dan deskripsi alat MCP.

using ModelContextProtocol.Server;

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

Siapkan server MCP untuk mendengarkan permintaan masuk melalui input/output standar dan mengekspos alat 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();

Ini akan memulai server MCP yang mengekspos agen sebagai alat melalui protokol MCP.

Tutorial ini menunjukkan kepada Anda cara mengekspos agen sebagai alat melalui Protokol Konteks Model (MCP), sehingga dapat digunakan oleh sistem lain yang mendukung alat MCP.

Prasyarat

Untuk prasyarat dan menginstal paket Python, lihat langkah Membuat dan menjalankan agen sederhana dalam tutorial ini.

Mengekspos agen sebagai server MCP

Anda dapat mengekspos agen sebagai server MCP dengan menggunakan as_mcp_server() metode. Ini memungkinkan agen untuk dipanggil sebagai alat oleh klien yang kompatibel dengan MCP.

Pertama, buat agen yang akan Anda ekspos sebagai server MCP. Anda juga dapat menambahkan alat ke agen:

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().as_agent(
    name="RestaurantAgent",
    description="Answer questions about the menu.",
    tools=[get_specials, get_item_price],
)

Ubah agen menjadi server MCP. Nama dan deskripsi agen akan digunakan sebagai metadata server MCP:

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

Siapkan server MCP untuk mendengarkan permintaan masuk melalui input/output standar:

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)

Ini akan memulai server MCP yang mengekspos agen melalui protokol MCP, memungkinkannya digunakan oleh klien yang kompatibel dengan MCP seperti Vs Code GitHub Copilot Agents.

Langkah selanjutnya