Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Model Bağlam Protokolü, uygulamaların büyük dil modellerine (LLM) nasıl araç ve bağlamsal veri sağladığını tanımlayan açık bir standarttır. Dış araçların model iş akışlarıyla tutarlı ve ölçeklenebilir bir şekilde tümleştirilmesini sağlar.
Microsoft Agent Framework Model Bağlam Protokolü (MCP) sunucularıyla tümleştirmeyi destekleyerek aracılarınızın dış araçlara ve hizmetlere erişmesine olanak sağlar. Bu kılavuzda, bir MCP sunucusuna bağlanma ve aracınızdaki araçlarını kullanma gösterilmektedir.
Üçüncü taraf MCP sunucularını kullanma konusunda dikkat edilmesi gerekenler
Model Bağlam Protokolü sunucularını kullanımınız, sizinle hizmet sağlayıcısı arasındaki koşullara tabidir. Microsoft dışı bir hizmete bağlandığınızda, verilerinizin bir bölümü (istem içeriği gibi) Microsoft dışı hizmete geçirilir veya uygulamanız Microsoft dışı hizmetten veri alabilir. Microsoft dışındaki hizmetleri ve verileri kullanmanızdan ve bu kullanımla ilişkili tüm ücretlerden siz sorumlusunuz.
Bu makalede açıklanan MCP aracıyla kullanmaya karar vereceğiniz uzak MCP sunucuları Microsoft değil üçüncü taraflarca oluşturulmuştur. Microsoft bu sunucuları test etmedi veya doğrulamadı. Microsoft'un uzak MCP sunucularını kullanımınızla ilgili olarak size veya başkalarına karşı hiçbir sorumluluğu yoktur.
Agent Framework tabanlı uygulamalarınıza eklediğiniz MCP sunucularını dikkatle gözden geçirmenizi ve izlemenizi öneririz. Ayrıca proxy'ler yerine güvenilen hizmet sağlayıcıları tarafından barındırılan sunuculara güvenmenizi öneririz.
MCP aracı, uzak bir MCP sunucusunun ihtiyaç duyabileceği kimlik doğrulama anahtarları veya şemalar gibi özel üst bilgileri geçirmenizi sağlar. Uzak MCP sunucularıyla paylaşılan tüm verileri gözden geçirmenizi ve denetim amacıyla verileri günlüğe kaydetmenizi öneririz. Verilerin saklanması ve konumları için Microsoft dışı uygulamalar hakkında bilgili olun.
Önemli
Her çalıştırmada araç kaynaklarına ekleyerek çalıştırma başına üst bilgileri belirtebilir veya yerel Python MCP araçları üzerinde bir header_provider yapılandırabilirsiniz. Uzak MCP sunucularıyla paylaşılan API anahtarlarını, OAuth erişim belirteçlerini veya diğer kimlik bilgilerini gözden geçirin.
MCP güvenliği hakkında daha fazla bilgi için bkz:
- Model Bağlam Protokolü web sitesinde En İyi Güvenlik Yöntemleri.
- MCP uygulamalarında güvenlik risklerini anlama ve azaltma Microsoft Güvenlik Topluluk Blogu'nda.
Agent Framework'ün .NET sürümü, aracınızın MCP araçlarını çağırmasına izin vermek için resmi MCP C# SDK'sı ile birlikte kullanılabilir.
Aşağıdaki örnekte şunların nasıl yapılacağını gösterilmektedir:
- kurulum ve MCP sunucusu
- MCP Sunucusundan kullanılabilir araçların listesini alma
- MCP araçlarını aracıya
AIFunctioneklenebilmeleri için 'lere dönüştürün - İşlev çağrısını kullanarak aracıdan araçları çağırma
MCP İstemcisi Ayarlama
İlk olarak, istediğiniz MCP sunucusuna bağlanan bir MCP istemcisi oluşturun:
using ModelContextProtocol.Client;
// Create an MCPClient for the GitHub server
await using var mcpClient = await McpClient.CreateAsync(new StdioClientTransport(new()
{
Name = "MCPServer",
Command = "npx",
Arguments = ["-y", "--verbose", "@modelcontextprotocol/server-github"],
}));
Bu örnekte:
- Ad: MCP sunucu bağlantınız için kolay bir ad
- Komut: MCP sunucusunu çalıştırmak için yürütülebilir dosya (burada bir Node.js paketi çalıştırmak için npx kullanılarak)
- Bağımsız değişkenler: MCP sunucusuna geçirilen komut satırı bağımsız değişkenleri
Kullanılabilir Araçları Alma
Bağlandıktan sonra, MCP sunucusundan kullanılabilen araçların listesini alın:
// Retrieve the list of tools available on the GitHub server
var mcpTools = await mcpClient.ListToolsAsync().ConfigureAwait(false);
yöntemi, ListToolsAsync() MCP sunucusunun kullanıma sunulan bir araç koleksiyonu döndürür. Bu araçlar otomatik olarak aracınız tarafından kullanılabilecek AITool nesnelerine dönüştürülür.
MCP Araçları ile Aracı Oluşturma
Aracınızı oluşturun ve başlatma sırasında MCP araçlarını sağlayın:
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
AIAgent agent = new AIProjectClient(
new Uri(endpoint),
new DefaultAzureCredential())
.AsAIAgent(
model: deploymentName,
instructions: "You answer questions related to GitHub repositories only.",
tools: [.. mcpTools.Cast<AITool>()]);
Warning
DefaultAzureCredential geliştirme için uygundur ancak üretimde dikkatli bir şekilde dikkate alınması gerekir. Üretimde gecikme sorunları, istenmeyen kimlik bilgisi yoklama ve geri dönüş mekanizmalarından kaynaklanan olası güvenlik risklerini önlemek için belirli bir kimlik bilgisi (ör ManagedIdentityCredential. ) kullanmayı göz önünde bulundurun.
Önemli noktalar:
- Yönergeler: MCP araçlarınızın özellikleriyle uyumlu net yönergeler sağlayın
-
Araçlar: MCP araçlarını nesnelere atama
AIToolve araçlar dizisine yayma - Aracı, MCP sunucusu tarafından sağlanan tüm araçlara otomatik olarak erişebilir
Ajanı Kullanma
Aracınız yapılandırıldıktan sonra kullanıcı isteklerini yerine getirmek için otomatik olarak MCP araçlarını kullanabilir:
// Invoke the agent and output the text result
Console.WriteLine(await agent.RunAsync("Summarize the last four commits to the microsoft/semantic-kernel repository?"));
Temsilci şunları yapacak:
- Kullanıcının isteğini analiz etme
- Hangi MCP araçlarının gerekli olduğunu belirleme
- MCP sunucusu aracılığıyla uygun araçları çağırma
- Sonuçları tutarlı bir yanıt halinde sentezleyin
Ortam Yapılandırması
Gerekli ortam değişkenlerini ayarladığınızdan emin olun:
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";
Kaynak Yönetimi
MCP istemci kaynaklarını her zaman düzgün bir şekilde atın:
await using var mcpClient = await McpClient.CreateAsync(...);
kullanımı await using , MCP istemci bağlantısının kapsam dışına çıktığında düzgün bir şekilde kapatılmasını sağlar.
Yaygın MCP Sunucuları
Popüler MCP sunucuları şunlardır:
-
@modelcontextprotocol/server-github: GitHub depolarına ve verilerine erişme -
@modelcontextprotocol/server-filesystem: Dosya sistemi işlemleri -
@modelcontextprotocol/server-sqlite: SQLite veritabanı erişimi
Her sunucu, aracınızın işlevselliğini genişleten farklı araçlar ve özellikler sağlar. Bu tümleştirme aracılarınızın dış veri ve hizmetlere sorunsuz bir şekilde erişmesine olanak tanırken Model Bağlam Protokolü'nin güvenlik ve standartlaştırma avantajlarını korur.
Tip
Bu örneği çalıştırmaya ilişkin tam kaynak kodu ve yönergeler adresinde https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/02-agents/ModelContextProtocol/Agent_MCP_Serverbulunabilir.
Bu, aracılarınızın dış araçlara ve hizmetlere sorunsuz bir şekilde erişmesini sağlar.
Uyarı
En düşük Python yüklemelerinde, MCP desteğinin el ile yüklenmesi gerekebilir. , mcp --preveya MCPStdioToolkullanmak MCPStreamableHTTPTooliçin yükleyinAgent.as_mcp_server(). ayrıca gerekiyorsa mcp[ws] --preyükleyinMCPWebsocketTool.
MCP Araç Türleri
Agent Framework üç tür MCP bağlantısını destekler:
MCPStdioTool - Yerel MCP Sunucuları
Standart giriş/çıkış kullanarak yerel işlemler olarak çalışan MCP sunucularına bağlanmak için kullanın MCPStdioTool :
import asyncio
from agent_framework import Agent, 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,
Agent(
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 Sunucuları
Server-Sent Olayları ile HTTP üzerinden MCP sunucularına bağlanmak için kullanın MCPStreamableHTTPTool :
import asyncio
from agent_framework import Agent, MCPStreamableHTTPTool
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import AzureCliCredential
async def http_mcp_example():
"""Example using an HTTP-based MCP server."""
async with AzureCliCredential() as credential:
client = FoundryChatClient(credential=credential)
async with (
MCPStreamableHTTPTool(
name="Microsoft Learn MCP",
url="https://learn.microsoft.com/api/mcp",
) as mcp_server,
Agent(
client=client,
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())
Oluşturan HTTP istemcisi MCPStreamableHTTPTool yanıt tanımlama bilgilerini kalıcı yapmaz. Sunucu kimlik doğrulaması, oturumlar veya yük dengeleyici benzimi için tanımlama bilgileri gerektiriyorsa, üzerinden http_client=yapılandırılmış httpx.AsyncClient bir geçirin. Sağlanan istemci tanımlama bilgisi davranışını korur ve çağıranın sahibi olmaya devam eder. Tanımlama bilgisi taşıyan istemcinin ve MCP aracı oturumunu kimliği doğrulanmış tek bir sorumluyla kapsamına alın.
Kimliği doğrulanmış HTTP uç noktaları için, sabit kimlik bilgileri veya header_provider her çalıştırmadan türetilen değerler için kullanınstatic_headers. Her iki yol da yalnızca yapılandırılmış çıkış noktası isteklerine üst bilgi ekler ve bunları çıkış noktaları arası yeniden yönlendirmelerden kaldırır. Araç oluşturulduğunda ve eşzamanlı çağrıları seri hale getirmediğinde sabit üst bilgiler kopyalanır. Her iki seçenek de aynı üst bilgiyi sağladığında, öğesinin header_provider dinamik değeri önceliklidir.
Oluşturulan araç çağrıları sırasında yalnızca header_provider çalıştırmanın ana bilgisayarını function_invocation_kwargsalır. Model bağımsız değişkeni aynı ada sahip olsa bile model tarafından sağlanan araç bağımsız değişkenlerini almaz. Doğrudan call_tool(...) çağrı, çağıran tarafından sağlanan anahtar sözcük bağımsız değişkenlerini sağlayıcıya geçirir. Model değerleri ayrı olarak birleştirilen giden araç bağımsız değişkenlerinde öncelik almaya devam edebilir, ancak kimlik doğrulama üst bilgilerini denetlemez.
Sabit ve dinamik üst bilgiler birlikte HTTP oturumunun etkin kimliğini oluşturur. Üst bilgi adları büyük/küçük harfe duyarsız olarak karşılaştırılırken, değerler büyük/küçük harfe duyarlı kalır. Çalışma zamanı anahtar sözcüğü bağımsız değişkenleri, sunucu şeması aynı ada izin verdiğinde giden araç bağımsız değişkenleri için de uygundur. Kimlik bilgilerini araç bağımsız değişkenlerinin dışında tutmak için, bir kapatma veya kullanarak static_headerssağlayıcıda yakalayın veya ContextVarözel bir HTTP istemcisi sağlayın.
Çerçeveye ait oturumlar, bağlandıklarında bu etkili kimliği bağlar. Sonraki bir çalıştırma farklı bir kimlik oluşturursa, araç çağrıyı göndermeden önce yeniden bağlanır ve oturumdan türetilmiş aracı ve istem bulma işlemini yeniler. Başlatma, bulma, arka plan ping'i ve diğer bağlantı ömrü istekleri, bu oturuma bağlı üst bilgileri kullanmaya devam eder.
Arayan tarafından sağlanan oturumlar, çağıranın sahibi olarak kalır. Sarmalayıcı bu oturumlar için bilinmeyen bir kimlik oluşturamadığından veya yeniden bağlanamadığından, bilinmeyen bir kimliğe sahip dinamik üst bilgi çözümlemesi reddedilir. Değiştirilen kimlik de reddedilir; ayrı bir çerçeveyle yönetilen araç örneği kullanın.
Araç bir çalıştırmadan önce hevesle bağlanırsa, sağlayıcı bağlantı ömrü istekleri için boş bir eşleme alır. Bu durum için sağlayıcıdaki bir oluşturma zamanı kimlik bilgilerini yakalayın veya yenileyin. Kimlik bilgisi yalnızca çalışma zamanında ulaşırsa, bağlantı kurulabilmesi için bağlantısız aracı ile geçirin run(tools=[...])function_invocation_kwargs .
Sağlayıcıdan gelen bir KeyError , yalnızca bağlantıda hiçbir çalıştırma çekirdeği olmadığında tolere edilir ve istek sağlayıcı üst bilgileri olmadan devam eder. Çalıştır bağlantının çekirdeğini oluşturduktan sonra eksik bir anahtar yapılandırma hatasıdır ve özel durum ortaya çıkar.
Kesin olmayan ada göre araçları seçme
içinde approval_modearaçları ayarlar allowed_tools veya listelerken, ham uzak araç adını veya kesin ön ekli adı kullanın. Yapılandırılmış bir ad normalleştirmeden sonra birden çok ham uzak adla eşleşiyorsa, Agent Framework oluşturur ToolExecutionException. Yerel adları benzersiz hale getirmek için tam bir ham ad veya değişiklik tool_name_prefix kullanın.
MCP örneklemeyi kullanımdan kaldırma
Warning
Sunucu tarafından başlatılan MCP örneklemesi ve sampling_callback MCP belirtimi sürüm 2026-07-28 itibariyle kullanım dışıdır ve 2027-07-28'den sonra kaldırılmaz.
Bu özellik üzerinde yeni tümleştirmeler oluşturmayın. MCP sunucuları model sağlayıcısı API'lerini doğrudan çağırmalıdır.
Konak yükü saklamayı denetleme
AG-UI gibi bir Konak aktarımı bir MCP aracı sonucu tükettiğinde, Agent Framework JSON güvenli sonucu ayrıştırılmış modele yönelik değerden ayrı olarak korur. Bu, Konak'ın model geçmişine yalnızca Konak verileri eklemeden gibi structuredContent alanları almasını sağlar.
Bir sonuç hem hem de contentstructuredContentiçerdiğinde model görünür değerini seçmek için herhangi bir MCP aktarımında kullanıntool_result_content:
| Değer | Model görünür sonucu |
|---|---|
structured_first |
Mevcut olduğunda kullanır structuredContent , aksi takdirde content. Bu değer varsayılandır. |
content_first |
nonempty contentkullanır, aksi takdirde structuredContent. |
content_only |
yoksayar structuredContent. |
structured_only |
yoksayar content. |
both |
Bloklardan sonra seri hale getirilmiş structuredContent ekler content . |
Bu seçim, tutulan Konak yükünü değiştirmez.
parse_tool_results seçim ilkesini geçersiz kılar.
Her MCP aktarım, korunan bir Konak yükünü varsayılan olarak 1 MiB ile sınırlar.
Ana bilgisayar kanalından büyük büyük yük atlanırken ayrıştırılan sonuç yine de modele ulaşır. Aktarımda farklı bir pozitif bayt sınırı ayarlayın veya yalnızca aşağı akış Konağı kendi sınırını uyguladığında kullanın None :
mcp_server = MCPStreamableHTTPTool(
name="Microsoft Learn MCP",
url="https://learn.microsoft.com/api/mcp",
max_host_payload_size_bytes=256 * 1024,
)
MCPWebsocketTool - WebSocket MCP Sunucuları
WebSocket bağlantıları üzerinden MCP sunucularına bağlanmak için kullanın MCPWebsocketTool :
import asyncio
from agent_framework import Agent, 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,
Agent(
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())
Popüler MCP Sunucuları
Python Agent Framework ile kullanabileceğiniz yaygın MCP sunucuları:
-
Hesap Makinesi:
uvx mcp-server-calculator- Matematiksel hesaplamalar -
Dosya Sistemi:
uvx mcp-server-filesystem- Dosya sistemi işlemleri -
GitHub:
npx @modelcontextprotocol/server-github- GitHub deposu erişimi -
SQLite:
uvx mcp-server-sqlite- Veritabanı işlemleri
Her sunucu, model bağlam protokolünün güvenlik ve standartlaştırma avantajlarını korurken aracınızın işlevselliğini genişleten farklı araçlar ve özellikler sağlar.
Tam örnek
# Copyright (c) Microsoft. All rights reserved.
import asyncio
import os
from agent_framework import Agent, MCPStreamableHTTPTool
from agent_framework.openai import OpenAIChatClient
"""
MCP Authentication Example
This example demonstrates a `header_provider` that authenticates both connection-time and tool-call requests.
For more authentication examples including OAuth 2.0 flows, see:
- https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/clients/simple-auth-client
- https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/servers/simple-auth
"""
async def api_key_auth_example() -> None:
"""Example of using API key authentication with MCP server."""
mcp_server_url = os.getenv("MCP_SERVER_URL", "your-mcp-server-url")
api_key = os.getenv("MCP_API_KEY")
if not api_key:
raise ValueError("MCP_API_KEY environment variable must be set.")
async with Agent(
client=OpenAIChatClient(),
name="Agent",
instructions="You are a helpful assistant.",
tools=MCPStreamableHTTPTool(
name="MCP tool",
description="MCP tool description",
url=mcp_server_url,
header_provider=lambda _kwargs: {"Authorization": f"Bearer {api_key}"},
),
) as agent:
query = "What tools are available to you?"
print(f"User: {query}")
result = await agent.run(query)
print(f"Agent: {result.text}")
if __name__ == "__main__":
asyncio.run(api_key_auth_example())
MCP Araç Türleri
Paket, mcptool aracıların Model Bağlam Protokolü (MCP) sunucularından araçları kullanmasına olanak tanır.
MCP sunucusuna bağlanma
import (
"github.com/microsoft/agent-framework-go/tool/mcptool"
"github.com/modelcontextprotocol/go-sdk/mcp"
)
session, err := mcptool.Connect(ctx, &mcp.StreamableClientTransport{
Endpoint: "https://learn.microsoft.com/api/mcp",
})
if err != nil {
panic(err)
}
defer session.Close()
MCP araçlarını listeleme ve kullanma
tools, err := mcptool.ListTools(ctx, session)
if err != nil {
panic(err)
}
a := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant.",
Config: agent.Config{
Tools: tools,
},
})
resp, err := a.RunText(ctx, "How to create an Azure storage account using az cli?").Collect()
Desteklenen taşımalar
-
HTTP/SSE -
mcp.StreamableClientTransport{Endpoint: "https://..."} - Stdio - Yerel bir MCP sunucu işlemini başlatma
Tip
Tam bir çalıştırılabilir örnek için bkz. MCP araçları örneği .
Aracıyı MCP Sunucusu Olarak Ortaya Çıkarma
Bir aracıyı MCP sunucusu olarak kullanıma sunarak MCP uyumlu herhangi bir istemci (VS Code GitHub Copilot Aracıları veya diğer aracılar gibi) tarafından araç olarak kullanılmasını sağlayabilirsiniz. Aracının adı ve açıklaması MCP sunucusu meta verileri olur.
aracını kullanarak .AsAIFunction()bir işlev aracısında sarmalayın, bir McpServerToololuşturun ve bir MCP sunucusuna kaydedin:
using System;
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using ModelContextProtocol.Server;
// Create the agent
AIAgent agent = new AIProjectClient(
new Uri("<your-foundry-project-endpoint>"),
new DefaultAzureCredential())
.AsAIAgent(
model: "gpt-4o-mini",
instructions: "You are good at telling jokes.",
name: "Joker");
// Convert the agent to an MCP tool
McpServerTool tool = McpServerTool.Create(agent.AsAIFunction());
// Set up the MCP server over stdio
HostApplicationBuilder builder = Host.CreateEmptyApplicationBuilder(settings: null);
builder.Services
.AddMcpServer()
.WithStdioServerTransport()
.WithTools([tool]);
await builder.Build().RunAsync();
Warning
DefaultAzureCredential geliştirme için uygundur ancak üretimde dikkatli bir şekilde dikkate alınması gerekir. Üretimde gecikme sorunları, istenmeyen kimlik bilgisi yoklama ve geri dönüş mekanizmalarından kaynaklanan olası güvenlik risklerini önlemek için belirli bir kimlik bilgisi (ör ManagedIdentityCredential. ) kullanmayı göz önünde bulundurun.
Gerekli NuGet paketlerini yükleyin:
dotnet add package Microsoft.Agents.AI.Foundry --prerelease
dotnet add package Microsoft.Extensions.Hosting
dotnet add package ModelContextProtocol
Aracıyı MCP sunucusu olarak kullanıma açmak için çağırın .as_mcp_server() :
Uyarı
Python agent.as_mcp_server() , isteğe bağlı mcp pakete de bağlıdır. İnce/çekirdek tabanlı bir yükleme kullanıyorsanız önce komutunu çalıştırın pip install mcp --pre .
from agent_framework.openai import OpenAIChatClient
from typing import Annotated
def get_specials() -> Annotated[str, "Returns the specials from the menu."]:
return "Special Soup: Clam Chowder, Special Salad: Cobb Salad"
# Create an agent with tools
agent = OpenAIChatClient().as_agent(
name="RestaurantAgent",
description="Answer questions about the menu.",
tools=[get_specials],
)
# Expose the agent as an MCP server
server = agent.as_mcp_server()
STANDART girişi/çıkışı dinlemek için MCP sunucusunu ayarlayın:
import anyio
from mcp.server.stdio import stdio_server
async def run():
async with stdio_server() as (read_stream, write_stream):
await server.run(read_stream, write_stream, server.create_initialization_options())
if __name__ == "__main__":
anyio.run(run)
aracısını ile agenttool.Newsarmalayın, kullanarak mcptool.AddToolbir MCP sunucusuna kaydedin ve sunucuyu stdio üzerinden çalıştırın:
import (
"context"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
"github.com/microsoft/agent-framework-go/tool/agenttool"
"github.com/microsoft/agent-framework-go/tool/mcptool"
"github.com/modelcontextprotocol/go-sdk/mcp"
)
jokeAgent := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
Instructions: "You are good at telling jokes.",
Config: agent.Config{
Name: "Joker",
Description: "An agent that tells jokes.",
},
})
server := mcp.NewServer(&mcp.Implementation{
Name: "agent-mcp-server",
Version: "1.0.0",
}, nil)
mcptool.AddTool(server, agenttool.New(jokeAgent, agenttool.Config{}))
if err := server.Run(context.Background(), &mcp.StdioTransport{}); err != nil {
panic(err)
}
Tip
Tam bir çalıştırılabilir örnek için aracıyı MCP aracı örneği olarak görün.