Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Schnellstartanleitung erstellen Sie einen minimalen MCP-Server (Model Context Protocol) mit dem C#SDK für MCP, stellen eine Verbindung mit dem Server mithilfe von GitHub Copilot her und veröffentlichen ihn in NuGet. MCP-Server sind Dienste, die Über das Model Context Protocol (MCP) Funktionen für Clients verfügbar machen.
Hinweis
Das Microsoft.McpServer.ProjectTemplates Vorlagenpaket befindet sich derzeit in der Vorschauversion.
Voraussetzungen
- .NET 10.0 SDK (Vorschau 6 oder höher)
- Visual Studio Code
- GitHub Copilot-Erweiterung für Visual Studio Code
- NuGet.org Konto
Erstelle das Projekt
Installieren Sie in einem Terminalfenster die MCP-Servervorlage:
dotnet new install Microsoft.McpServer.ProjectTemplatesHinweis
.NET 10.0 SDK (Preview 6 oder höher) ist für die Installation
Microsoft.McpServer.ProjectTemplateserforderlich.Erstellen Sie eine neue MCP-Server-App mit dem
dotnet new mcpserverBefehl:dotnet new mcpserver -n SampleMcpServerStandardmäßig erstellt dieser Befehl ein eigenständiges Toolpaket für alle gängigen Plattformen, auf denen .NET unterstützt wird. Um weitere Optionen anzuzeigen, verwenden Sie
dotnet new mcpserver --help.Navigieren Sie zum
SampleMcpServerVerzeichnis:cd SampleMcpServerErstellen Sie das Projekt:
dotnet buildAktualisieren Sie die
<PackageId>in der.csprojDatei, damit sie auf NuGet.org eindeutig ist, zum Beispiel<NuGet.org username>.SampleMcpServer.
Konfigurieren des MCP-Servers in Visual Studio Code
Konfigurieren Sie GitHub Copilot für Visual Studio Code für die Verwendung Ihres benutzerdefinierten MCP-Servers:
Falls noch nicht geschehen, öffnen Sie den Projektordner in Visual Studio Code.
Erstellen Sie einen
.vscodeOrdner im Stammverzeichnis Ihres Projekts.Fügen Sie eine
mcp.json.vscodeDatei im Ordner mit dem folgenden Inhalt hinzu:{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ] } } }Hinweis
VS Code führt MCP-Server vom Arbeitsbereichsstamm aus. Der
<relative-path-to-project-file>Platzhalter sollte auf Ihre .NET-Projektdatei verweisen. Der Wert für diese SampleMcpServer-App wäre beispielsweiseSampleMcpServer.csproj.Speichern Sie die Datei.
Testen des MCP-Servers
Die MCP-Server-Vorlage enthält ein Tool namens get_random_number, das Sie zum Testen und als Ausgangspunkt für die Entwicklung verwenden können.
Öffnen Sie GitHub Copilot in Visual Studio Code, und wechseln Sie zum Agentmodus.
Wählen Sie das Symbol "Tools auswählen " aus, um zu überprüfen, ob Ihr SampleMcpServer mit dem aufgeführten Beispieltool verfügbar ist.
Geben Sie eine Eingabeaufforderung ein, um das get_random_number Tool auszuführen:
Give me a random number between 1 and 100.GitHub Copilot fordert die Berechtigung an, das get_random_number Tool für Ihre Aufforderung auszuführen. Wählen Sie "Weiter" aus, oder verwenden Sie den Pfeil, um ein spezifisches Verhalten auszuwählen:
- Die aktuelle Sitzung führt immer den Vorgang in der aktuellen GitHub Copilot Agent Mode-Sitzung aus.
- Der aktuelle Arbeitsbereich führt immer den Befehl für den aktuellen Visual Studio Code-Arbeitsbereich aus.
- Immer erlauben legt fest, dass der Vorgang immer für jede GitHub Copilot-Agentenmodus-Sitzung oder jeden beliebigen Visual Studio Code-Arbeitsbereich ausgeführt wird.
Stellen Sie sicher, dass der Server mit einer Zufallszahl antwortet:
Your random number is 42.
Hinzufügen von Eingaben und Konfigurationsoptionen
In diesem Beispiel verbessern Sie den MCP-Server, um einen Konfigurationswert zu verwenden, der in einer Umgebungsvariablen festgelegt ist. Dies kann für das Funktionieren Ihres MCP-Servers erforderlich sein, wie ein API-Schlüssel, ein Endpunkt zum Herstellen einer Verbindung oder ein lokaler Verzeichnispfad.
Fügen Sie nach der Methode
GetRandomNumbereine weitere Toolmethode hinzu inTools/RandomNumberTools.cs. Aktualisieren Sie den Toolcode, um eine Umgebungsvariable zu verwenden.[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]}."; }Aktualisieren Sie das
.vscode/mcp.jsonzur Konfiguration derWEATHER_CHOICES-Umgebungsvariable für Testzwecke.{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ], "env": { "WEATHER_CHOICES": "sunny,humid,freezing" } } } }Probieren Sie eine weitere Eingabeaufforderung mit Copilot in VS Code aus, z. B.:
What is the weather in Redmond, Washington?VS Code sollte eine zufällige Wetterbeschreibung zurückgeben.
Aktualisieren Sie das
.mcp/server.json, um Ihre Umgebungsvariable input zu deklarieren. Dasserver.jsonDateischema wird vom MCP-Registrierungsprojekt definiert und von NuGet.org zum Generieren der VS Code MCP-Konfiguration verwendet.Verwenden Sie die
environmentVariablesEigenschaft, um Umgebungsvariablen zu deklarieren, die von Ihrer App verwendet werden, die vom Client mithilfe des MCP-Servers (z. B. VS Code) festgelegt werden.Verwenden Sie die
packageArgumentsEigenschaft, um CLI-Argumente zu definieren, die an Ihre App übergeben werden. Weitere Beispiele finden Sie im MCP Registry-Projekt.
{ "$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" } }Die einzigen Informationen, die von NuGet.org in der
server.jsonverwendet werden, sind das erstepackagesArrayelement, dessenregistryTypeWert mitnugetübereinstimmt. Abgesehen von derpackages-Eigenschaft werden die anderen Eigenschaften auf oberster Ebene derzeit nicht verwendet und sind für die anstehende zentrale MCP-Registrierung vorgesehen. Sie können die Platzhalterwerte beibehalten, bis die MCP-Registrierung live ist und bereit ist, MCP-Servereinträge zu akzeptieren.
Sie können den MCP-Server erneut testen , bevor Sie fortfahren.
Packen und Veröffentlichen in NuGet
Packen Sie das Projekt:
dotnet pack -c ReleaseDieser Befehl erzeugt ein Toolpaket und mehrere plattformspezifische Pakete basierend auf der
<RuntimeIdentifiers>Liste inSampleMcpServer.csproj.Veröffentlichen Sie die Pakete in NuGet:
dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.jsonStellen Sie sicher, dass Sie alle
.nupkgDateien veröffentlichen, um sicherzustellen, dass jede unterstützte Plattform den MCP-Server ausführen kann.Wenn Sie den Veröffentlichungsfluss vor der Veröffentlichung in NuGet.org testen möchten, können Sie ein Konto in der NuGet Gallery-Integrationsumgebung registrieren: https://int.nugettest.org Der
pushBefehl würde geändert werden in:dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://apiint.nugettest.org/v3/index.json
Weitere Informationen finden Sie unter Veröffentlichen eines Pakets.
Entdecken Sie MCP-Server auf NuGet.org
Suchen Sie nach Ihrem MCP-Serverpaket auf NuGet.org (oder int.nugettest.org , wenn Sie in der Integrationsumgebung veröffentlicht haben), und wählen Sie es aus der Liste aus.
Zeigen Sie die Paketdetails an, und kopieren Sie den JSON von der Registerkarte "MCP-Server".
Fügen Sie in Ihrer
mcp.jsonDatei im.vscodeOrdner den kopierten JSON-Code hinzu, der wie folgt aussieht:{ "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}" } } } }Wenn Sie in der NuGet Gallery Integration Umgebung veröffentlicht haben, müssen Sie
"--add-source", "https://apiint.nugettest.org/v3/index.json"am Ende des"args"Arrays hinzufügen.Speichern Sie die Datei.
Wählen Sie in GitHub Copilot das Symbol " Tools auswählen " aus, um zu überprüfen, ob Ihr SampleMcpServer mit den aufgelisteten Tools verfügbar ist.
Geben Sie eine Eingabeaufforderung ein, um das neue get_city_weather Tool auszuführen:
What is the weather in Redmond?Wenn Sie Ihrem MCP-Server Eingaben hinzugefügt haben (z. B.
WEATHER_CHOICES), werden Sie aufgefordert, Werte anzugeben.Überprüfen Sie, ob der Server mit dem zufälligen Wetter reagiert:
The weather in Redmond is balmy.
Häufig auftretende Probleme
Der Befehl "dnx" zum Ausführen von SampleMcpServer wurde nicht gefunden.
Wenn vs Code diesen Fehler beim Starten des MCP-Servers anzeigt, müssen Sie eine kompatible Version des .NET SDK installieren.
Der dnx Befehl wird ab Version 10 als Teil des .NET SDK ausgeliefert.
Installieren Sie das .NET 10 SDK , um dieses Problem zu beheben.
GitHub Copilot verwendet Ihr Tool nicht (eine Antwort wird bereitgestellt, ohne Ihr Tool aufvozieren zu müssen)
Im Allgemeinen wird ein KI-Agent wie GitHub Copilot informiert, dass er über einige Tools verfügt, die von der Clientanwendung verfügbar sind, z. B. VS Code. Einige Tools, z. B. das Stichprobentool für Zufallszahlen, werden möglicherweise nicht vom KI-Agent genutzt, da es ähnliche Funktionen bereits integriert hat.
Wenn Ihr Tool nicht verwendet wird, überprüfen Sie Folgendes:
- Stellen Sie sicher, dass Ihr Tool in der Liste der Tools angezeigt wird, die VS Code aktiviert hat. Sehen Sie sich den Screenshot im Test des MCP-Servers an, um dies zu überprüfen.
- Verweisen Sie explizit auf den Namen des Tools in Ihrer Eingabeaufforderung. In VS Code können Sie auf Ihr Tool anhand des Namens verweisen. Beispiel:
Using #get_random_weather, what is the weather in Redmond?. - Überprüfen Sie, ob der MCP-Server gestartet werden kann. Sie können dies überprüfen, indem Sie in den VS Code-Benutzer- oder Arbeitsbereichseinstellungen auf die Schaltfläche "Start" klicken, die oberhalb der MCP-Serverkonfiguration angezeigt wird.