Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Microsoft Agent Framework mendukung integrasi dengan server Protokol Konteks Model (MCP), memungkinkan agen Anda mengakses alat dan layanan eksternal. Panduan ini menunjukkan cara terhubung ke server MCP dan menggunakan alatnya dalam agen Anda.
Versi .NET dari Agent Framework dapat digunakan bersama dengan MCP C# SDK resmi untuk memungkinkan agen Anda memanggil alat MCP.
Contoh berikut menunjukkan cara:
- Menyiapkan dan server MCP
- Mengambil daftar alat yang tersedia dari Server MCP
- Mengonversi alat MCP menjadi
AIFunction's sehingga dapat ditambahkan ke agen - Memanggil alat dari agen menggunakan panggilan fungsi
Menyiapkan Klien MCP
Pertama, buat klien MCP yang terhubung ke server MCP yang Anda inginkan:
// 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"],
}));
Dalam contoh ini:
- Nama: Nama yang mudah diingat untuk koneksi server MCP Anda
- Perintah: Executable untuk menjalankan server MCP (di sini menggunakan npx untuk menjalankan paket Node.js)
- Argumen: Argumen baris perintah diteruskan ke server MCP
Mengambil Alat yang Tersedia
Setelah tersambung, ambil daftar alat yang tersedia dari server MCP:
// Retrieve the list of tools available on the GitHub server
var mcpTools = await mcpClient.ListToolsAsync().ConfigureAwait(false);
Metode ini ListToolsAsync() mengembalikan kumpulan alat yang diekspos server MCP. Alat-alat ini secara otomatis dikonversi ke objek AITool yang dapat digunakan oleh agen Anda.
Membuat Agen dengan Alat MCP
Buat agen Anda dan berikan alat MCP selama inisialisasi:
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>()]);
Poin utama:
- Petunjuk: Berikan instruksi yang jelas yang selaras dengan kemampuan alat MCP Anda
-
Alat: Mentransmisikan alat MCP ke
AIToolobjek dan menyebarkannya ke dalam array alat - Agen akan secara otomatis memiliki akses ke semua alat yang disediakan oleh server MCP
Menggunakan Agen
Setelah dikonfigurasi, agen Anda dapat secara otomatis menggunakan alat MCP untuk memenuhi permintaan pengguna:
// Invoke the agent and output the text result
Console.WriteLine(await agent.RunAsync("Summarize the last four commits to the microsoft/semantic-kernel repository?"));
Agen akan:
- Menganalisis permintaan pengguna
- Menentukan alat MCP mana yang diperlukan
- Memanggil alat yang sesuai melalui server MCP
- Mensintesis hasil menjadi respons koheren
Konfigurasi Lingkungan
Pastikan untuk menyiapkan variabel lingkungan yang diperlukan:
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";
Manajemen Sumber Daya
Selalu buang sumber daya klien MCP dengan benar:
await using var mcpClient = await McpClientFactory.CreateAsync(...);
Menggunakan await using memastikan koneksi klien MCP ditutup dengan benar ketika keluar dari cakupan.
Server MCP Umum
Server MCP populer meliputi:
-
@modelcontextprotocol/server-github: Mengakses repositori dan data GitHub -
@modelcontextprotocol/server-filesystem: Operasi sistem file -
@modelcontextprotocol/server-sqlite: Akses database SQLite
Setiap server menyediakan berbagai alat dan kemampuan yang memperluas fungsionalitas agen Anda. Integrasi ini memungkinkan agen Anda untuk mengakses data dan layanan eksternal dengan lancar sambil mempertahankan manfaat keamanan dan standarisasi Protokol Konteks Model.
Kode sumber lengkap dan instruksi untuk menjalankan sampel ini tersedia di https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/GettingStarted/ModelContextProtocol/Agent_MCP_Server.
Python Agent Framework menyediakan dukungan komprehensif untuk mengintegrasikan dengan server Model Context Protocol (MCP) melalui beberapa jenis koneksi. Ini memungkinkan agen Anda mengakses alat dan layanan eksternal dengan mulus.
Jenis Alat MCP
Agent Framework mendukung tiga jenis koneksi MCP:
MCPStdioTool - Server MCP Lokal
Gunakan MCPStdioTool untuk menyambungkan ke server MCP yang berjalan sebagai proses lokal menggunakan input/output standar:
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 - Server HTTP/SSE MCP
Gunakan MCPStreamableHTTPTool untuk menyambungkan ke server MCP melalui HTTP dengan peristiwa 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 - Server MCP WebSocket
Gunakan MCPWebsocketTool untuk menyambungkan ke server MCP melalui koneksi 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())
Server MCP Populer
Server MCP umum yang dapat Anda gunakan dengan Python Agent Framework:
-
Kalkulator:
uvx mcp-server-calculator- Komputasi matematika -
Sistem file:
uvx mcp-server-filesystem- Operasi sistem file -
GitHub:
npx @modelcontextprotocol/server-github- Akses repositori GitHub -
SQLite:
uvx mcp-server-sqlite- Operasi database
Setiap server menyediakan berbagai alat dan kemampuan yang memperluas fungsionalitas agen Anda sambil mempertahankan manfaat keamanan dan standarisasi Protokol Konteks Model.