Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten skapar du en minimal MCP-server (Model Context Protocol) med C# SDK för MCP, ansluter till den med GitHub Copilot och publicerar den till NuGet. MCP-servrar är tjänster som exponerar funktioner för klienter via Model Context Protocol (MCP).
Anmärkning
Upplevelsen Microsoft.Extensions.AI.Templates är för närvarande i förhandsversion. Mallen använder biblioteket ModelContextProtocol och MCP-registerschematserver.json, som båda är i förhandsversion.
Förutsättningar
- .NET 10.0 SDK (förhandsversion 6 eller senare)
- Visual Studio Code
- GitHub Copilot-tillägg för Visual Studio Code
- NuGet.org konto
Skapa projektet
I ett terminalfönster installerar du MCP Server-mallen (version 9.10.0-preview.3.25513.3 eller senare):
dotnet new install Microsoft.Extensions.AI.TemplatesSkapa en ny MCP-serverapp med
dotnet new mcpserverkommandot :dotnet new mcpserver -n SampleMcpServerSom standard skapar det här kommandot ett fristående verktygspaket som riktar sig till alla de vanligaste plattformarna som .NET stöds på. Om du vill se fler alternativ använder du
dotnet new mcpserver --help.Gå till
SampleMcpServerkatalogen:cd SampleMcpServerBygg projektet:
dotnet buildUppdatera
<PackageId>i.csproj-filen så att den är unik på NuGet.org, till exempel<NuGet.org username>.SampleMcpServer.
Konfigurera MCP-servern i Visual Studio Code
Konfigurera GitHub Copilot för Visual Studio Code för att använda din anpassade MCP-server:
Om du inte redan har gjort det öppnar du projektmappen i Visual Studio Code.
Skapa en
.vscodemapp i roten av projektet.Lägg till en
mcp.jsonfil i.vscodemappen med följande innehåll:{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ] } } }Anmärkning
VS Code kör MCP-servrar från arbetsytans rot. Platshållaren
<relative-path-to-project-file>ska peka på .NET-projektfilen. Till exempel skulle värdet för den här SampleMcpServer-appen varaSampleMcpServer.csproj.Spara filen.
Testa MCP-servern
MCP-servermallen innehåller ett verktyg som heter get_random_number du kan använda för testning och som utgångspunkt för utveckling.
Öppna GitHub Copilot i Visual Studio Code och växla till agentläge.
Välj ikonen Välj verktyg för att kontrollera att SampleMcpServer är tillgängligt med exempelverktyget i listan.
Ange en uppmaning om att köra verktyget get_random_number :
Give me a random number between 1 and 100.GitHub Copilot begär behörighet att köra verktyget get_random_number för din fråga. Välj Fortsätt eller använd pilen för att välja ett mer specifikt beteende:
- Den aktuella sessionen kör alltid åtgärden i den aktuella GitHub Copilot-agentlägessessionen.
- Den aktuella arbetsytan kör alltid kommandot för den aktuella Visual Studio Code-arbetsytan.
- Tillåt alltid att åtgärden alltid körs för alla GitHub Copilot-agentlägessessioner eller visual Studio Code-arbetsytor.
Kontrollera att servern svarar med ett slumptal:
Your random number is 42.
Lägga till indata och konfigurationsalternativ
I det här exemplet förbättrar du MCP-servern så att den använder ett konfigurationsvärde som anges i en miljövariabel. Det kan vara konfiguration som krävs för att mcp-servern ska fungera, till exempel en API-nyckel, en slutpunkt att ansluta till eller en lokal katalogsökväg.
Lägg till en annan verktygsmetod efter
GetRandomNumber-metoden iTools/RandomNumberTools.cs. Uppdatera verktygskoden så att den använder en miljövariabel.[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]}."; }.vscode/mcp.jsonUppdatera för att angeWEATHER_CHOICESmiljövariabeln för testning.{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ], "env": { "WEATHER_CHOICES": "sunny,humid,freezing" } } } }Prova en annan fråga med Copilot i VS Code, till exempel:
What is the weather in Redmond, Washington?VS Code bör returnera en slumpmässig väderbeskrivning.
Uppdatera
.mcp/server.jsonför att deklarera din miljövariabel indata. Filschematserver.jsondefinieras av MCP Registry-projektet och används av NuGet.org för att generera VS Code MCP-konfiguration.Använd egenskapen
environmentVariablesför att deklarera miljövariabler som används av din app som ska anges av klienten med hjälp av MCP-servern (till exempel VS Code).Använd egenskapen
packageArgumentsför att definiera CLI-argument som skickas till din app. Fler exempel finns i MCP Registry-projektet.
{ "$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" } }Den enda information som används av NuGet.org i
server.jsonär det förstapackagesmatrisobjektet med värdetregistryTypesom matcharnuget. De andra toppnivåegenskaperna, förutompackages-egenskapen, är för närvarande oanvända och är avsedda för det kommande centrala MCP-registret. Du kan lämna platshållarvärdena tills MCP-registret är aktivt och redo att acceptera MCP-serverinlägg.
Du kan testa MCP-servern igen innan du går vidare.
Packa och publicera till NuGet
Packa projektet:
dotnet pack -c ReleaseDet här kommandot genererar ett verktygspaket och flera plattformsspecifika paket baserat på
<RuntimeIdentifiers>listan iSampleMcpServer.csproj.Publicera paketen till NuGet:
dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.jsonSe till att publicera alla
.nupkgfiler för att säkerställa att alla plattformar som stöds kan köra MCP-servern.Om du vill testa publiceringsflödet innan du publicerar till NuGet.org kan du registrera ett konto i NuGet Gallery-integreringsmiljön: https://int.nugettest.org. Kommandot
pushskulle ändras till:dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://apiint.nugettest.org/v3/index.json
Mer information finns i Publicera ett paket.
Identifiera MCP-servrar på NuGet.org
Sök efter MCP-serverpaketet på NuGet.org (eller int.nugettest.org om du publicerade till integrationsmiljön) och välj det i listan.
Visa paketinformationen och kopiera JSON från fliken "MCP Server".
mcp.jsonI filen i.vscodemappen lägger du till den kopierade JSON som ser ut så här:{ "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}" } } } }Om du har publicerat i NuGet Gallery-integreringsmiljön måste du lägga
"--add-source", "https://apiint.nugettest.org/v3/index.json"till i slutet av matrisen"args".Spara filen.
I GitHub Copilot väljer du ikonen Välj verktyg för att kontrollera att SampleMcpServer är tillgänglig med de verktyg som visas.
Ange en uppmaning om att köra det nya get_city_weather verktyget:
What is the weather in Redmond?Om du har lagt till indata till MCP-servern (till exempel
WEATHER_CHOICES) uppmanas du att ange värden.Kontrollera att servern svarar med slumpmässigt väder:
The weather in Redmond is balmy.
Vanliga problem
Kommandot "dnx" som behövdes för att köra SampleMcpServer hittades inte
Om VS Code visar det här felet när du startar MCP-servern måste du installera en kompatibel version av .NET SDK.
Kommandot dnx levereras som en del av .NET SDK, från och med version 10.
Installera .NET 10 SDK för att lösa problemet.
GitHub Copilot använder inte verktyget (ett svar tillhandahålls utan att du anropar verktyget)
Generellt sett informeras en AI-agent som GitHub Copilot om att den har vissa verktyg som är tillgängliga av klientprogrammet, till exempel VS Code. Vissa verktyg, till exempel exempel slumpmässigt nummerverktyg, kanske inte utnyttjas av AI-agenten eftersom det har liknande funktioner inbyggda.
Om verktyget inte används kontrollerar du följande:
- Kontrollera att verktyget visas i listan över verktyg som VS Code har aktiverat. Se skärmbilden i Testa MCP-servern för att se hur du kontrollerar detta.
- Referera uttryckligen till namnet på verktyget i din fråga. I VS Code kan du referera till verktyget med namn. Till exempel
Using #get_random_weather, what is the weather in Redmond?. - Kontrollera att MCP-servern kan starta. Du kan kontrollera detta genom att klicka på knappen "Start" som visas ovanför MCP-serverkonfigurationen i VS Code-användar- eller arbetsyteinställningarna.