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.
Bu hızlı başlangıçta, MCP için C# SDK'sını kullanarak en düşük Model Bağlam Protokolü (MCP) sunucusu oluşturacak, GitHub Copilot kullanarak bağlanacak ve NuGet'te yayımlayacaksınız (yalnızca stdio aktarımı). MCP sunucuları, Model Bağlam Protokolü (MCP) aracılığıyla istemcilerin özelliklerini kullanıma sunan hizmetlerdir.
Uyarı
Şablon Microsoft.McpServer.ProjectTemplates paketi şu anda önizleme aşamasındadır.
Önkoşullar
- .NET 10.0 SDK
- Visual Studio Code (isteğe bağlı)
- C# Dev Kit uzantısı
- Visual Studio Code için GitHub Copilot uzantısı
- NuGet.org hesabı
- .NET 10.0 SDK
- Visual Studio Code (isteğe bağlı)
- Visual Studio (isteğe bağlı)
- GitHub Copilot / Visual Studio Code için GitHub Copilot uzantısı
- NuGet.org hesabı
Projeyi oluşturma
Terminal penceresinde MCP Server şablonunu yükleyin:
dotnet new install Microsoft.McpServer.ProjectTemplatesUyarı
.NET 10.0 SDK'sını veya sonraki bir sürümü yüklemek
Microsoft.McpServer.ProjectTemplatesiçin gereklidir.Visual Studio'yu açın ve başlangıç penceresinde Yeni proje oluştur'u seçin (veya Visual Studio içinden Dosya>Yeni>Proje/Çözüm'e tıklayın).
Yeni proje oluştur penceresinde Dil listesindeN C# ve Tüm proje türleri listesinden yapay zeka'yı seçin. Dil ve proje türü filtrelerini uyguladıktan sonra MCP Server Uygulama şablonunu ve ardından İleri'yi seçin.
Yeni projenizi yapılandırın penceresinde Proje adı alanına MyMcpServer girin. Ardından İleri'yi seçin.
Ek bilgiler penceresinde aşağıdaki seçenekleri yapılandırabilirsiniz:
- Çerçeve: Hedef .NET çerçevesini seçin.
- MCP Sunucusu Aktarım Türü: Yerel (stdio) veya uzak (http) MCP sunucusu oluşturma arasında seçim yapın.
- Yerel AOT'yi etkinleştir (Önceden Çalışma Zamanı yayımlama): MCP sunucunuzun bağımsız bir yapıya sahip olmasını ve yerel koda derlenmesini sağlayın. Daha fazla bilgi için yerel AOT dağıtım kılavuzuna bakın.
- Bağımsız yayımlamayı etkinleştir: MCP sunucunuzun bağımsız yürütülebilir dosya olarak yayımlanmasını etkinleştirin. Daha fazla bilgi için .NET uygulama yayımlama kılavuzunun Bağımsız dağıtım bölümüne bakın.
Tercih ettiğiniz seçenekleri belirleyin veya varsayılan seçenekleri koruyun ve ardından Oluştur'u seçin.
Visual Studio yeni projenizi açar.
NuGet.org'da benzersiz olacak şekilde
<PackageId>öğesini,.csprojdosyasındaki örneğin<NuGet.org username>.SampleMcpServerolarak güncelleştirin.
Terminal penceresinde MCP Server şablonunu yükleyin:
dotnet new install Microsoft.McpServer.ProjectTemplatesUyarı
yüklemek için
Microsoft.McpServer.ProjectTemplates.NET 10.0 SDK veya üzeri gereklidir.Visual Studio Code'u açın.
Gezgin görünümüne gidin ve .NET Projesi Oluştur'u seçin. Alternatif olarak, Ctrl+Shift+P (MacOS'ta Command+Shift+P ) tuşlarını kullanarak Komut Paleti'ni açabilir ve ardından .NET: Yeni Proje komutunu bulup seçmek için ".NET" yazabilirsiniz.
Bu eylem, .NET projelerinin açılır listesini getirir.
Komutu seçtikten sonra Komut Paleti'ndeki Arama çubuğunu kullanın veya MCP Server Uygulama şablonunu bulmak için aşağı kaydırın.
Yeni projenin oluşturulmasını istediğiniz konumu seçin.
Yeni projenize MyMCPServer adını verin. Enter tuşuna basın.
Çözüm dosya biçiminizi (
.slnveya.slnx) seçin.Şablon Seçenekleri'ni seçin. Burada, aşağıdaki seçenekleri yapılandırabilirsiniz:
- Çerçeve: Hedef .NET çerçevesini seçin.
- MCP Sunucusu Aktarım Türü: Yerel (stdio) veya uzak (http) MCP sunucusu oluşturma arasında seçim yapın.
- Yerel AOT'yi etkinleştir (Önceden Çalışma Zamanı yayımlama): MCP sunucunuzun bağımsız bir yapıya sahip olmasını ve yerel koda derlenmesini sağlayın. Daha fazla bilgi için yerel AOT dağıtım kılavuzuna bakın.
- Bağımsız yayımlamayı etkinleştir: MCP sunucunuzun bağımsız yürütülebilir dosya olarak yayımlanmasını etkinleştirin. Daha fazla bilgi için .NET uygulama yayımlama kılavuzunun Bağımsız dağıtım bölümüne bakın.
Tercih ettiğiniz seçenekleri belirleyin veya varsayılan seçenekleri koruyun ve proje oluştur'u seçin.
VS Code yeni projenizi açar.
NuGet.org'da benzersiz olacak şekilde
<PackageId>öğesini,.csprojdosyasındaki örneğin<NuGet.org username>.SampleMcpServerolarak güncelleştirin.
komutuyla
dotnet new mcpserveryeni bir MCP sunucu uygulaması oluşturun:dotnet new mcpserver -n SampleMcpServerVarsayılan olarak, bu komut .NET'in desteklendiği en yaygın platformların tümünü hedefleyen bağımsız bir araç paketi oluşturur. Diğer seçenekleri görmek için kullanın
dotnet new mcpserver --help.dotnet new mcpserver --helpkomutunun kullanılması, yeni bir MCP sunucusu oluştururken ekleyebileceğiniz çeşitli şablon seçenekleri sağlar:- Çerçeve: Hedef .NET çerçevesini seçin.
- MCP Sunucusu Aktarım Türü: Yerel (stdio) veya uzak (http) MCP sunucusu oluşturma arasında seçim yapın.
- Yerel AOT'yi etkinleştir (Önceden Çalışma Zamanı yayımlama): MCP sunucunuzun bağımsız bir yapıya sahip olmasını ve yerel koda derlenmesini sağlayın. Daha fazla bilgi için yerel AOT dağıtım kılavuzuna bakın.
- Bağımsız yayımlamayı etkinleştir: MCP sunucunuzun bağımsız yürütülebilir dosya olarak yayımlanmasını etkinleştirin. Daha fazla bilgi için .NET uygulama yayımlama kılavuzunun Bağımsız dağıtım bölümüne bakın.
Dizine
SampleMcpServergidin:cd SampleMcpServerProjeyi oluşturun:
dotnet buildNuGet.org'da benzersiz olacak şekilde
<PackageId>öğesini,.csprojdosyasındaki örneğin<NuGet.org username>.SampleMcpServerolarak güncelleştirin.
MCP Server Projesi turu
MCP sunucu projenizi şablon aracılığıyla oluşturmak size aşağıdaki ana dosyaları verir:
-
Program.cs: Uygulamayı BIR MCP sunucusu olarak tanımlayan ve aktarım türü ve MCP araçları gibi MCP hizmetlerini kaydeden bir dosya.- Proje oluşturulurken içinde (varsayılan) stdio taşıma seçeneği seçildiğinde, bu dosya MCP Sunucusunu yerel sunucu (yani
.withStdioServerTransport()) olarak tanımlayacak şekilde yapılandırılır. -
http aktarım seçeneğinin seçilmesi, bu dosyayı uzak aktarıma özgü tanımları (yani ,
.withHttpServerTransport()MapMcp()) içerecek şekilde yapılandıracaktır.
- Proje oluşturulurken içinde (varsayılan) stdio taşıma seçeneği seçildiğinde, bu dosya MCP Sunucusunu yerel sunucu (yani
-
RandomNumberTools.cs: Kullanıcı tarafından belirtilen min/max değerleri arasında rastgele bir sayı döndüren örnek bir MCP sunucu aracı tanımlayan sınıf. -
[Yalnızca HTTP Aktarım]
[MCPServerName].http: HTTP MCP sunucusu ve JSON-RPC iletişimi için varsayılan ana bilgisayar adresini tanımlayan bir dosya. -
server.json: MCP sunucunuzun nasıl ve nerede yayımlandığını tanımlayan bir dosya.
MCP sunucusunu yapılandırma
Visual Studio için GitHub Copilot'ı özel MCP sunucunuzu kullanacak şekilde yapılandırın.
Visual Studio'da sağ üst köşedeki GitHub Copilot simgesini seçin ve Sohbet Penceresini Aç'ı seçin.
GitHub Copilot Sohbet penceresinde Araçları Seç anahtar simgesine ve ardından sağ üst köşedeki artı simgesine tıklayın.
Özel MCP Sunucusu Ekle iletişim penceresinde aşağıdaki bilgileri girin:
-
Hedef: MCP sunucunuzun yapılandırıldığı kapsamı seçin:
- Çözüm - MCP sunucusu yalnızca etkin çözüm genelinde kullanılabilir.
- Genel - MCP sunucusu tüm çözümlerde kullanılabilir.
- Sunucu Kimliği: MCP sunucunuzun benzersiz adı / tanımlayıcısı.
- Tür: MCP sunucunuzun aktarım türü (stdio veya HTTP).
-
Command (yalnızca Stdio transport): Stdio MCP sunucunuzu çalıştırma komutu (başka bir ifadeyle
dotnet run --project [relative path to .csproj file]) - URL (yalnızca HTTP aktarımı): HTTP MCP sunucunuzun adresi
- Ortam Değişkenleri (isteğe bağlı)
-
Hedef: MCP sunucunuzun yapılandırıldığı kapsamı seçin:
Kaydetseçeneğini seçin.
.mcp.jsonBelirtilen hedefe bir dosya eklenir.
Stdio Taşıma .mcp.json
"args" alanının altına, .csproj dosyanızın göreli yolunu ekleyin.
{
"inputs": [],
"servers": {
"MyMcpServer": {
"type": "stdio",
"command": "dotnet",
"args": [
"run",
"--project",
"<relative-path-to-project-file>"
]
}
}
}
HTTP Aktarım .mcp.json
{
"inputs": [],
"servers": {
"MyMCPServer": {
"url": "http://localhost:6278",
"type": "http",
"headers": {}
}
}
}
Visual Studio Code için GitHub Copilot'ı VS Code Komut Paleti aracılığıyla veya el ile özel MCP sunucunuzu kullanacak şekilde yapılandırın.
Komut Paleti yapılandırması
Ctrl+Shift+P (macOS üzerinde Command+Shift+P) tuşlarını kullanarak Komut Paleti'ni açın. Komutu bulmak için "mcp" araması yapın
MCP: Add Server.Eklenecek MCP sunucusunun türünü seçin (genellikle proje oluşturma sırasında seçtiğiniz aktarım türü).
Stdio MCP sunucusu ekliyorsanız, bir komut ve isteğe bağlı bağımsız değişkenler girin. Bu örnekte kullanın
dotnet run --project.HTTP MCP sunucusu ekliyorsanız localhost veya web adresini girin.
Benzersiz bir sunucu kimliği (örnek: "MyMCPServer") girin.
Yapılandırma hedefi seçin:
Genel: MCP sunucusunu tüm çalışma alanlarında kullanılabilir hale getirin. Oluşturulan
mcp.jsondosya genel kullanıcı yapılandırmanızın altında görünür.Çalışma alanı: MCP sunucusunu yalnızca geçerli çalışma alanı içinden kullanılabilir hale getirin. Oluşturulan
mcp.jsondosya çalışma alanınızdaki klasörün altında.vscodegörünür.
Önceki adımları tamamladıktan sonra, yapılandırma hedefi tarafından belirtilen konumda bir
.mcp.jsondosya oluşturulur.
Stdio Transport mcp.json
"args" alanının altına, .csproj dosyanızın göreli yolunu ekleyin.
{
"servers": {
"MyMcpServer": {
"type": "stdio",
"command": "dotnet",
"args": [
"run",
"--project",
"<relative-path-to-project-file>"
]
}
}
}
HTTP Aktarım mcp.json
{
"servers": {
"MyMCPServer": {
"url": "http://localhost:6278",
"type": "http"
}
},
"inputs": []
}
El ile yapılandırma
Projenizin kökünde bir
.vscodeklasör oluşturun.Klasöre aşağıdaki içeriğe sahip bir
mcp.jsondosya.vscodeekleyin:{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ] } } }Uyarı
VS Code, MCP sunucularını çalışma alanı kökünden yürütür. Yer tutucusu
<relative-path-to-project-file>.NET proje dosyanıza işaret etmelidir. Örneğin, bu SampleMcpServer uygulamasının değeri olacaktırSampleMcpServer.csproj.Dosyayı kaydedin.
MCP sunucusunu test edin
MCP sunucu şablonu, test için ve geliştirme için başlangıç noktası olarak kullanabileceğiniz adlı get_random_number bir araç içerir.
Visual Studio'da GitHub Copilot sohbeti açın ve Aracı moduna geçin.
MyMCPServer'ınızın listelenen örnek araçla kullanılabilir olduğunu doğrulamak için Araçları seç simgesini seçin.
get_random_number aracını çalıştırmak için bir istem girin:
Give me a random number between 1 and 100.GitHub Copilot, isteminiz için get_random_number aracını çalıştırmak için izin ister. Devam'ı seçin veya daha belirli bir davranış seçmek için oku kullanın:
- Geçerli oturum her zaman işlemi geçerli GitHub Copilot Aracı Modu oturumunda çalıştırır.
- Geçerli çözüm her zaman geçerli VS çözümü için komutunu çalıştırır.
- Her zaman izin ver , işlemi her zaman herhangi bir GitHub Copilot Aracı Modu oturumu için çalışacak şekilde ayarlar.
Sunucunun rastgele bir sayıyla yanıt verdiğini doğrulayın:
Your random number is 42.
MCP sunucu şablonu, test için ve geliştirme için başlangıç noktası olarak kullanabileceğiniz adlı get_random_number bir araç içerir.
VS Code'da GitHub Copilot sohbeti açın ve Aracı moduna geçin.
MyMCPServer'ınızın listelenen örnek araçla kullanılabilir olduğunu doğrulamak için Araçları seç simgesini seçin.
get_random_number aracını çalıştırmak için bir istem girin:
Give me a random number between 1 and 100.GitHub Copilot, isteminiz için get_random_number aracını çalıştırmak için izin ister. Devam'ı seçin veya daha belirli bir davranış seçmek için oku kullanın:
- Geçerli oturum her zaman işlemi geçerli GitHub Copilot Aracı Modu oturumunda çalıştırır.
- Geçerli çalışma alanı, her zaman geçerli VS Code çalışma alanı için komutu çalıştırır.
- Her zaman izin ver , işlemi her zaman herhangi bir GitHub Copilot Aracı Modu oturumu için çalışacak şekilde ayarlar.
Sunucunun rastgele bir sayıyla yanıt verdiğini doğrulayın:
Your random number is 42.
Giriş ve yapılandırma seçenekleri ekleme
Bu örnekte, MCP sunucusunu ortam değişkeninde ayarlanmış bir yapılandırma değeri kullanacak şekilde geliştireceksiniz. Bu, BIR API anahtarı, bağlanılacak uç nokta veya yerel dizin yolu gibi MCP sunucunuzun çalışması için gereken yapılandırma olabilir.
GetRandomNumberiçindekiTools/RandomNumberTools.csyönteminden sonra başka bir araç yöntemi ekleyin. Araç kodunu bir ortam değişkeni kullanacak şekilde güncelleştirin.[McpServerTool] [Description("Describes random weather in the provided city.")] public string GetCityWeather( [Description("Name of the city to return weather for")] string city) { // Read the environment variable during tool execution. // Alternatively, this could be read during startup and passed via IOptions dependency injection var weather = Environment.GetEnvironmentVariable("WEATHER_CHOICES"); if (string.IsNullOrWhiteSpace(weather)) { weather = "balmy,rainy,stormy"; } var weatherChoices = weather.Split(","); var selectedWeatherIndex = Random.Shared.Next(0, weatherChoices.Length); return $"The weather in {city} is {weatherChoices[selectedWeatherIndex]}."; }Test için
.vscode/mcp.jsonortam değişkenini ayarlamak üzereWEATHER_CHOICESgüncelleyin.{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ], "env": { "WEATHER_CHOICES": "sunny,humid,freezing" } } } }VS Code'da Copilot ile aşağıdakiler gibi başka bir istem deneyin:
What is the weather in Redmond, Washington?VS Code rastgele bir hava durumu açıklaması döndürmelidir.
Çevre değişkeni girişinizi tanımlamak için
.mcp/server.jsonöğesini güncelleyin. Dosyaserver.jsonşeması MCP Kayıt Defteri projesi tarafından tanımlanır ve NuGet.org tarafından VS Code MCP yapılandırması oluşturmak için kullanılır.environmentVariablesMCP sunucusu kullanılarak istemci tarafından ayarlanacak olan uygulamanız tarafından kullanılan ortam değişkenlerini bildirmek için özelliğini kullanın (örneğin, VS Code).packageArgumentsözelliğini, uygulamanıza geçirilecek CLI bağımsız değişkenlerini tanımlamak için kullanın. Daha fazla örnek için bkz. MCP Kayıt Defteri projesi.
{ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json", "description": "<your description here>", "name": "io.github.<your GitHub username here>/<your repo name>", "version": "<your package version here>", "packages": [ { "registryType": "nuget", "registryBaseUrl": "https://api.nuget.org", "identifier": "<your package ID here>", "version": "<your package version here>", "transport": { "type": "stdio" }, "packageArguments": [], "environmentVariables": [ { "name": "WEATHER_CHOICES", "value": "{weather_choices}", "variables": { "weather_choices": { "description": "Comma separated list of weather descriptions to randomly select.", "isRequired": true, "isSecret": false } } } ] } ], "repository": { "url": "https://github.com/<your GitHub username here>/<your repo name>", "source": "github" } }NuGet.org tarafından kullanılan tek bilgi
server.json, değeripackagesile eşleşen ilkregistryTypedizi öğesidirnuget. Özelliğinpackagesdışındaki diğer üst düzey özellikler şu anda kullanılmamaktadır ve yaklaşan merkezi MCP Kayıt Defteri için tasarlanmıştır. MCP Kayıt Defteri canlı olana ve MCP sunucu girdilerini kabul etmeye hazır olana kadar yer tutucu değerlerini bırakabilirsiniz.
devam etmeden önce MCP sunucunuzu yeniden test edebilirsiniz.
NuGet paketle ve yayımla
Projeyi paketleyin:
dotnet pack -c ReleaseBu komut, içindeki
<RuntimeIdentifiers>listeye göre bir araç paketi ve platformaSampleMcpServer.csprojözgü birkaç paket oluşturur.Paketleri NuGet'e yayımlayın:
dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.jsonDesteklenen tüm platformların MCP sunucusunu çalıştıradığından emin olmak için tüm
.nupkgdosyaları yayımladığınızdan emin olun.NuGet.org yayımlamadan önce yayımlama akışını test etmek istiyorsanız, NuGet Galerisi tümleştirme ortamına bir hesap kaydedebilirsiniz: https://int.nugettest.org.
pushKomut şu şekilde değiştirilir:dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://apiint.nugettest.org/v3/index.json
Daha fazla bilgi için bkz. Paket yayımlama.
NuGet.org'de MCP sunucularını bulma
mcp sunucu paketinizi NuGet.org (veya tümleştirme ortamında yayımladıysanız int.nugettest.org) arayın ve listeden seçin.
Paket ayrıntılarını görüntüleyin ve JSON dosyasını "MCP Sunucusu" sekmesinden kopyalayın.
Klasöründeki
mcp.jsondosyanızda, aşağıdaki gibi görünen kopyalanmış JSON’u.vscodedosyasına ekleyin.{ "inputs": [ { "type": "promptString", "id": "weather_choices", "description": "Comma separated list of weather descriptions to randomly select.", "password": false } ], "servers": { "Contoso.SampleMcpServer": { "type": "stdio", "command": "dnx", "args": ["Contoso.SampleMcpServer@0.0.1-beta", "--yes"], "env": { "WEATHER_CHOICES": "${input:weather_choices}" } } } }NuGet Galerisi tümleştirme ortamına yayımladıysanız, dizinin sonuna
"--add-source", "https://apiint.nugettest.org/v3/index.json"eklemeniz gerekir.Dosyayı kaydedin.
GitHub Copilot'ta Araçları seç simgesini seçerek SampleMcpServer'ınızın listelenen araçlarla kullanılabilir olduğunu doğrulayın.
Yeni get_city_weather aracını çalıştırmak için bir istem girin:
What is the weather in Redmond?MCP sunucunuza giriş eklediyseniz (örneğin,
WEATHER_CHOICES) değerleri sağlamanız istenir.Sunucunun rastgele hava durumuyla yanıt verdiğini doğrulayın:
The weather in Redmond is balmy.
Yaygın sorunlar
SampleMcpServer'ı çalıştırmak için gereken "dnx" komutu bulunamadı
MCP sunucusunu başlatırken VS Code bu hatayı gösteriyorsa, .NET SDK'sının uyumlu bir sürümünü yüklemeniz gerekir.
Komut dnx , sürüm 10'dan başlayarak .NET SDK'sının bir parçası olarak gönderilir. Bu sorunu çözmek için .NET 10 SDK'sını yükleyin.
GitHub Copilot aracınızı kullanmaz (aracınızı çağırmadan bir yanıt sağlanır)
Genel olarak konuşursak GitHub Copilot gibi bir yapay zeka aracısı, vs Code gibi istemci uygulaması tarafından kullanılabilen bazı araçlara sahip olduğu konusunda bilgilendirilir. Örnek rastgele sayı aracı gibi bazı araçlar, yerleşik olarak benzer işlevlere sahip olduğundan yapay zeka aracısı tarafından kullanılamayabilir.
Aracınız kullanılmıyorsa aşağıdakileri denetleyin:
- Aracının VS Code'un etkinleştirdiği araçlar listesinde göründüğünü doğrulayın. Bunun nasıl denetlendiğini öğrenmek için MCP sunucusunu test etme bölümünde ekran görüntüsüne bakın.
- İsteminizde aracın adını açıkça belirtin. VS Code'da aracınıza adla atıfta bulunabilirsiniz. Örneğin,
Using #get_random_weather, what is the weather in Redmond?. - MCP sunucunuzun başlatılabildiğinden emin olun. BUNU DENETLEMEK için VS Code kullanıcı veya çalışma alanı ayarlarında MCP sunucu yapılandırmanızın üzerinde görünen "Başlat" düğmesine tıklayabilirsiniz.