Sdílet prostřednictvím


Použití nástrojů MCP s agenty

Microsoft Agent Framework podporuje integraci se servery MCP (Model Context Protocol), což umožňuje vašim agentům přístup k externím nástrojům a službám. Tato příručka ukazuje, jak se připojit k serveru MCP a používat jeho nástroje v rámci vašeho agenta.

Verzi rozhraní Agent Framework pro .NET je možné použít společně s oficiální sadou MCP C# SDK , která umožňuje vašemu agentu volat nástroje MCP.

Následující ukázka ukazuje, jak:

  1. Nastavení a server MCP
  2. Načtení seznamu dostupných nástrojů ze serveru MCP
  3. Převeďte nástroje MCP na AIFunction's, aby je bylo možné přidat do agenta.
  4. Vyvolání nástrojů z agenta pomocí volání funkce

Nastavení klienta MCP

Nejprve vytvořte klienta MCP, který se připojí k požadovanému serveru MCP:

// Create an MCPClient for the GitHub server
await using var mcpClient = await McpClientFactory.CreateAsync(new StdioClientTransport(new()
{
    Name = "MCPServer",
    Command = "npx",
    Arguments = ["-y", "--verbose", "@modelcontextprotocol/server-github"],
}));

V tomto příkladu:

  • Název: Popisný název připojení k serveru MCP
  • Příkaz: Spustitelný soubor pro spuštění serveru MCP (tady pomocí npx ke spuštění balíčku Node.js)
  • Argumenty: Argumenty příkazového řádku předané serveru MCP

Načítání dostupných nástrojů

Po připojení načtěte seznam nástrojů dostupných ze serveru MCP:

// Retrieve the list of tools available on the GitHub server
var mcpTools = await mcpClient.ListToolsAsync().ConfigureAwait(false);

Tato ListToolsAsync() metoda vrátí kolekci nástrojů, které server MCP zveřejňuje. Tyto nástroje se automaticky převedou na objekty AITool, které může používat váš agent.

Vytvoření agenta pomocí nástrojů MCP

Vytvořte agenta a během inicializace zadejte nástroje MCP:

AIAgent agent = new AzureOpenAIClient(
    new Uri(endpoint),
    new AzureCliCredential())
     .GetChatClient(deploymentName)
     .AsAIAgent(
         instructions: "You answer questions related to GitHub repositories only.",
         tools: [.. mcpTools.Cast<AITool>()]);

Klíčové body:

  • Pokyny: Poskytněte jasné pokyny, které odpovídají možnostem nástrojů MCP.
  • Nástroje: Přetypování nástrojů MCP na AITool objekty a jejich rozložení do pole nástrojů
  • Agent bude mít automaticky přístup ke všem nástrojům poskytovaným serverem MCP.

Použití agenta

Po nakonfigurování může váš agent automaticky používat nástroje MCP ke splnění uživatelských požadavků:

// Invoke the agent and output the text result
Console.WriteLine(await agent.RunAsync("Summarize the last four commits to the microsoft/semantic-kernel repository?"));

Agent bude:

  1. Analýza žádosti uživatele
  2. Určení potřebných nástrojů MCP
  3. Volání příslušných nástrojů prostřednictvím serveru MCP
  4. Syntetizování výsledků do koherentní odpovědi

Konfigurace prostředí

Nezapomeňte nastavit požadované proměnné prostředí:

var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ??
    throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-4o-mini";

Správa zdrojů

Vždy správně vyřaďte prostředky klienta MCP:

await using var mcpClient = await McpClientFactory.CreateAsync(...);

Použití await using zajišťuje, že je připojení klienta MCP správně uzavřeno, když přestane být vymezeno.

Běžné servery MCP

Mezi oblíbené servery MCP patří:

  • @modelcontextprotocol/server-github: Přístup k úložištím a datům GitHubu
  • @modelcontextprotocol/server-filesystem: Operace systému souborů
  • @modelcontextprotocol/server-sqlite: Přístup k databázi SQLite

Každý server poskytuje různé nástroje a možnosti, které rozšiřují funkce agenta. Tato integrace umožňuje vašim agentům bezproblémově přistupovat k externím datům a službám a současně udržovat výhody zabezpečení a standardizace protokolu Model Context Protocol.

Úplný zdrojový kód a pokyny ke spuštění této ukázky jsou k dispozici na adrese https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/GettingStarted/ModelContextProtocol/Agent_MCP_Server.

Architektura agenta Pythonu poskytuje komplexní podporu pro integraci se servery MCP (Model Context Protocol) prostřednictvím několika typů připojení. To umožňuje vašim agentům bezproblémový přístup k externím nástrojům a službám.

Typy nástrojů MCP

Rozhraní Agent Framework podporuje tři typy připojení MCP:

MCPStdioTool – místní servery MCP

Slouží MCPStdioTool k připojení k serverům MCP, které běží jako místní procesy pomocí standardního vstupu a výstupu:

import asyncio
from agent_framework import ChatAgent, MCPStdioTool
from agent_framework.openai import OpenAIChatClient

async def local_mcp_example():
    """Example using a local MCP server via stdio."""
    async with (
        MCPStdioTool(
            name="calculator",
            command="uvx",
            args=["mcp-server-calculator"]
        ) as mcp_server,
        ChatAgent(
            chat_client=OpenAIChatClient(),
            name="MathAgent",
            instructions="You are a helpful math assistant that can solve calculations.",
        ) as agent,
    ):
        result = await agent.run(
            "What is 15 * 23 + 45?",
            tools=mcp_server
        )
        print(result)

if __name__ == "__main__":
    asyncio.run(local_mcp_example())

MCPStreamableHTTPTool – Servery HTTP/SSE MCP

Slouží MCPStreamableHTTPTool k připojení k serverům MCP přes protokol HTTP pomocí událostí Server-Sent:

import asyncio
from agent_framework import ChatAgent, MCPStreamableHTTPTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import AzureCliCredential

async def http_mcp_example():
    """Example using an HTTP-based MCP server."""
    async with (
        AzureCliCredential() as credential,
        MCPStreamableHTTPTool(
            name="Microsoft Learn MCP",
            url="https://learn.microsoft.com/api/mcp",
            headers={"Authorization": "Bearer your-token"},
        ) as mcp_server,
        ChatAgent(
            chat_client=AzureAIAgentClient(async_credential=credential),
            name="DocsAgent",
            instructions="You help with Microsoft documentation questions.",
        ) as agent,
    ):
        result = await agent.run(
            "How to create an Azure storage account using az cli?",
            tools=mcp_server
        )
        print(result)

if __name__ == "__main__":
    asyncio.run(http_mcp_example())

MCPWebsocketTool – Servery WEBSocket MCP

Slouží MCPWebsocketTool k připojení k serverům MCP přes připojení WebSocket:

import asyncio
from agent_framework import ChatAgent, MCPWebsocketTool
from agent_framework.openai import OpenAIChatClient

async def websocket_mcp_example():
    """Example using a WebSocket-based MCP server."""
    async with (
        MCPWebsocketTool(
            name="realtime-data",
            url="wss://api.example.com/mcp",
        ) as mcp_server,
        ChatAgent(
            chat_client=OpenAIChatClient(),
            name="DataAgent",
            instructions="You provide real-time data insights.",
        ) as agent,
    ):
        result = await agent.run(
            "What is the current market status?",
            tools=mcp_server
        )
        print(result)

if __name__ == "__main__":
    asyncio.run(websocket_mcp_example())

Běžné servery MCP, které můžete použít s architekturou agenta Pythonu:

  • Kalkulačka: uvx mcp-server-calculator – matematické výpočty
  • Systém souborů: uvx mcp-server-filesystem – Operace systému souborů
  • GitHub: npx @modelcontextprotocol/server-github – Přístup k úložišti GitHub
  • SQLite: uvx mcp-server-sqlite – Databázové operace

Každý server poskytuje různé nástroje a možnosti, které rozšiřují funkce agenta a současně udržují výhody zabezpečení a standardizace protokolu Model Context Protocol.

Další kroky