Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Microsoft Agent Framework támogatja a Model Context Protocol (MCP) kiszolgálókkal való integrációt, így az ügynökök hozzáférhetnek külső eszközökhöz és szolgáltatásokhoz. Ez az útmutató bemutatja, hogyan csatlakozhat egy MCP-kiszolgálóhoz, és hogyan használhatja az eszközeit az ügynökön belül.
Az Agent Framework .NET-verziója a hivatalos MCP C# SDK-val együtt használható, hogy az ügynök meghívhassa az MCP-eszközöket.
Az alábbi minta bemutatja, hogyan:
- Beállítás és MCP-kiszolgáló
- Az elérhető eszközök listájának lekérése az MCP-kiszolgálóról
- Alakítsa át az MCP-eszközöket "s"-vé
AIFunction, hogy hozzáadhatók legyenek egy ügynökhöz - Az eszközök meghívása egy ügynökből függvényhívással
MCP-ügyfél beállítása
Először hozzon létre egy MCP-ügyfelet, amely a kívánt MCP-kiszolgálóhoz csatlakozik:
// 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"],
}));
Ebben a példában:
- Név: Az MCP-kiszolgáló kapcsolatának rövid neve
- Parancs: Az MCP-kiszolgáló futtatásához futtatható végrehajtható fájl (itt npx használatával futtathat Node.js csomagot)
- Argumentumok: Az MCP-kiszolgálónak átadott parancssori argumentumok
Elérhető eszközök lekérése
Csatlakozás után kérje le az MCP-kiszolgálóról elérhető eszközök listáját:
// Retrieve the list of tools available on the GitHub server
var mcpTools = await mcpClient.ListToolsAsync().ConfigureAwait(false);
A ListToolsAsync() metódus az MCP-kiszolgáló által elérhetővé tesz eszközök gyűjteményét adja vissza. Ezek az eszközök automatikusan AITool-objektumokká alakulnak, amelyeket az ügynök használhat.
Ügynök létrehozása AZ MCP-eszközökkel
Hozza létre az ügynököt, és adja meg az MCP-eszközöket az inicializálás során:
AIAgent agent = new AzureOpenAIClient(
new Uri(endpoint),
new AzureCliCredential())
.GetChatClient(deploymentName)
.CreateAIAgent(
instructions: "You answer questions related to GitHub repositories only.",
tools: [.. mcpTools.Cast<AITool>()]);
Összefoglalás:
- Utasítások: Adjon meg egyértelmű utasításokat, amelyek összhangban vannak az MCP-eszközök képességeivel
-
Eszközök: Az MCP-eszközöket az objektumokra
AIToolveti, és elosztja azokat az eszköztömbbe - Az ügynök automatikusan hozzáfér az MCP-kiszolgáló által biztosított összes eszközhöz
Az ügynök használata
A konfigurálás után az ügynök automatikusan használhatja az MCP-eszközöket a felhasználói kérések teljesítéséhez:
// Invoke the agent and output the text result
Console.WriteLine(await agent.RunAsync("Summarize the last four commits to the microsoft/semantic-kernel repository?"));
Az ügynök a következőt fogja:
- A felhasználó kérésének elemzése
- Annak meghatározása, hogy mely MCP-eszközökre van szükség
- A megfelelő eszközök meghívása az MCP-kiszolgálón keresztül
- Az eredmények egységes válaszként való szintetizálása
Környezeti konfiguráció
Győződjön meg arról, hogy beállítja a szükséges környezeti változókat:
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";
Erőforrás-kezelés
Az MCP-ügyfélerőforrásokat mindig megfelelően szabadítsa fel:
await using var mcpClient = await McpClientFactory.CreateAsync(...);
A használat await using biztosítja, hogy az MCP-ügyfélkapcsolat megfelelően legyen lezárva, amikor kimegy a hatókörből.
Gyakori MCP-kiszolgálók
Népszerű MCP-kiszolgálók:
-
@modelcontextprotocol/server-github: GitHub-adattárak és adatok elérése -
@modelcontextprotocol/server-filesystem: Fájlrendszerműveletek -
@modelcontextprotocol/server-sqlite: SQLite-adatbázis-hozzáférés
Minden kiszolgáló különböző eszközöket és képességeket biztosít, amelyek kibővítik az ügynök funkcióit. Ez az integráció lehetővé teszi az ügynökök számára, hogy zökkenőmentesen hozzáférjenek a külső adatokhoz és szolgáltatásokhoz, miközben fenntartják a modellkörnyezeti protokoll biztonsági és szabványosítási előnyeit.
A minta futtatásához szükséges teljes forráskód és utasítások a következő címen https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/GettingStarted/ModelContextProtocol/Agent_MCP_Serverérhetők el: .
A Python Agent Framework átfogó támogatást nyújt a Model Context Protocol (MCP) kiszolgálók több kapcsolattípuson keresztüli integrálásához. Ez lehetővé teszi az ügynökök számára, hogy zökkenőmentesen hozzáférjenek a külső eszközökhöz és szolgáltatásokhoz.
MCP eszköztípusok
Az Agent Framework háromféle MCP-kapcsolatot támogat:
MCPStdioTool – Helyi MCP-kiszolgálók
A helyi folyamatként futó MCP-kiszolgálókhoz való csatlakozáshoz használható MCPStdioTool standard bemenet/kimenet használatával:
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 – HTTP/SSE MCP-kiszolgálók
Az MCPStreamableHTTPTool MCP-kiszolgálókhoz http-en keresztüli csatlakozásra használható Server-Sent események használatával:
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 – WebSocket MCP-kiszolgálók
Az MCP-kiszolgálókhoz WebSocket-kapcsolatokon keresztüli csatlakozáshoz használható MCPWebsocketTool :
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())
Népszerű MCP-kiszolgálók
A Python Agent Framework használatával használható gyakori MCP-kiszolgálók:
-
Számológép:
uvx mcp-server-calculator- Matematikai számítások -
Fájlrendszer:
uvx mcp-server-filesystem– Fájlrendszer-műveletek -
GitHub:
npx @modelcontextprotocol/server-github– GitHub-adattár hozzáférése -
SQLite:
uvx mcp-server-sqlite– Adatbázis-műveletek
Minden kiszolgáló különböző eszközöket és képességeket biztosít, amelyek kibővítik az ügynök funkcióit, miközben fenntartják a modellkörnyezeti protokoll biztonsági és szabványosítási előnyeit.