Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart maakt u een minimale MCP-server (Model Context Protocol) met behulp van de C#SDK voor MCP, maakt u er verbinding mee met gitHub Copilot en publiceert u deze naar NuGet (alleen stdio transport). MCP-servers zijn services die mogelijkheden beschikbaar maken voor clients via het Model Context Protocol (MCP).
Opmerking
Het Microsoft.McpServer.ProjectTemplates sjabloonpakket is momenteel beschikbaar als preview-versie.
Vereiste voorwaarden
- .NET 10.0 SDK
- Visual Studio Code (optioneel)
- C# Dev Kit-extensie
- GitHub Copilot-extensie voor Visual Studio Code
- NuGet.org-account
- .NET 10.0 SDK
- Visual Studio Code (optioneel)
- Visual Studio (optioneel)
- GitHub Copilot / GitHub Copilot-extensie voor Visual Studio Code
- NuGet.org-account
Het project maken
Installeer in een terminalvenster de MCP Server-sjabloon:
dotnet new install Microsoft.McpServer.ProjectTemplatesOpmerking
.NET 10.0 SDK of een latere versie is vereist om te installeren
Microsoft.McpServer.ProjectTemplates.Open Visual Studio en selecteer Een nieuw project maken in het startvenster (of selecteer Bestand>nieuw>project/oplossing in Visual Studio).
Selecteer in het venster Een nieuw project makenC# in de lijst Taal en AI in de lijst Alle projecttypen . Nadat u de taal- en projecttypefilters hebt toegepast, selecteert u de sjabloon MCP Server-app en selecteert u vervolgens Volgende.
Voer in het venster Uw nieuwe project configurerenMyMcpServer in het veld Projectnaam in. Klik vervolgens op Volgende.
In het venster Aanvullende informatie kunt u de volgende opties configureren:
- Framework: Selecteer het doel .NET Framework.
- MCP-servertransporttype: kies tussen het maken van een lokale (stdio) of een externe (http) MCP-server.
- Systeemeigen AOT (Ahead-Of-Time) publiceren inschakelen: ervoor zorgen dat uw MCP-server op zichzelf staat en wordt gecompileerd naar systeemeigen code. Zie de native AOT-implementatiehandleiding voor meer informatie.
- Zelfstandig publiceren inschakelen: ervoor zorgen dat uw MCP-server wordt gepubliceerd als zelfstandig uitvoerbaar bestand. Zie de sectie Zelfstandige implementatie van de publicatiehandleiding voor .NET-toepassingen voor meer informatie.
Kies de gewenste opties of behoud de standaardopties en selecteer vervolgens Maken.
Visual Studio opent uw nieuwe project.
Werk het
<PackageId>bestand bij zodat het.csprojuniek is op NuGet.org, bijvoorbeeld<NuGet.org username>.SampleMcpServer.
Installeer in een terminalvenster de MCP Server-sjabloon:
dotnet new install Microsoft.McpServer.ProjectTemplatesOpmerking
.NET 10.0 SDK of hoger is vereist om te installeren
Microsoft.McpServer.ProjectTemplates.Open Visual Studio Code.
Ga naar de verkennerweergave en selecteer .NET-project maken. U kunt ook het opdrachtenpalet openen met Ctrl+Shift+P (Command+Shift+P in MacOS) en vervolgens '.NET' typen om de opdracht .NET: New Project te zoeken en te selecteren.
Met deze actie wordt een vervolgkeuzelijst met .NET-projecten weergegeven.
Nadat u de opdracht hebt geselecteerd, gebruikt u de zoekbalk in het opdrachtpalet of schuift u omlaag om de sjabloon van de MCP Server-app te zoeken.
Selecteer de locatie waar u het nieuwe project wilt maken.
Geef uw nieuwe project een naam, MyMCPServer. Druk op Enter.
Selecteer de bestandsindeling van uw oplossing (
.slnof.slnx).Selecteer Sjabloonopties. Hier kunt u de volgende opties configureren:
- Framework: Selecteer het doel .NET Framework.
- MCP-servertransporttype: kies tussen het maken van een lokale (stdio) of een externe (http) MCP-server.
- Systeemeigen AOT (Ahead-Of-Time) publiceren inschakelen: ervoor zorgen dat uw MCP-server op zichzelf staat en wordt gecompileerd naar systeemeigen code. Zie de native AOT-implementatiehandleiding voor meer informatie.
- Zelfstandig publiceren inschakelen: ervoor zorgen dat uw MCP-server wordt gepubliceerd als zelfstandig uitvoerbaar bestand. Zie de sectie Zelfstandige implementatie van de publicatiehandleiding voor .NET-toepassingen voor meer informatie.
Kies de gewenste opties of behoud de standaardopties en selecteer Vervolgens Project maken.
VS Code opent uw nieuwe project.
Werk het
<PackageId>bestand bij zodat het.csprojuniek is op NuGet.org, bijvoorbeeld<NuGet.org username>.SampleMcpServer.
Maak een nieuwe MCP-server-app met de
dotnet new mcpserveropdracht:dotnet new mcpserver -n SampleMcpServerMet deze opdracht wordt standaard een zelfstandig hulpprogrammapakket gemaakt dat is gericht op alle meest voorkomende platforms waarop .NET wordt ondersteund. Als u meer opties wilt zien, gebruikt u
dotnet new mcpserver --help.Met behulp van de
dotnet new mcpserver --helpopdracht krijgt u verschillende sjabloonopties die u kunt toevoegen bij het maken van een nieuwe MCP-server:- Framework: Selecteer het doel .NET Framework.
- MCP-servertransporttype: kies tussen het maken van een lokale (stdio) of een externe (http) MCP-server.
- Systeemeigen AOT (Ahead-Of-Time) publiceren inschakelen: ervoor zorgen dat uw MCP-server op zichzelf staat en wordt gecompileerd naar systeemeigen code. Zie de native AOT-implementatiehandleiding voor meer informatie.
- Zelfstandig publiceren inschakelen: ervoor zorgen dat uw MCP-server wordt gepubliceerd als zelfstandig uitvoerbaar bestand. Zie de sectie Zelfstandige implementatie van de publicatiehandleiding voor .NET-toepassingen voor meer informatie.
Ga naar de
SampleMcpServerdirectory.cd SampleMcpServerBouw het project:
dotnet buildWerk het
<PackageId>bestand bij zodat het.csprojuniek is op NuGet.org, bijvoorbeeld<NuGet.org username>.SampleMcpServer.
Rondleiding door het MCP Server-project
Als u uw MCP-serverproject maakt via de sjabloon, krijgt u de volgende belangrijke bestanden:
-
Program.cs: Een bestand dat de toepassing definieert als een MCP-server en het registreren van MCP-services zoals transporttype en MCP-hulpprogramma's.- Als u de (standaard) stdio-transportoptie kiest bij het maken van het project, wordt dit bestand geconfigureerd om de MCP-server te definiëren als een lokale server (dat wil gezegd,
.withStdioServerTransport()). - Als u de http-transportoptie kiest, wordt dit bestand geconfigureerd voor het opnemen van externe transportspecifieke definities (dat wil gezegd,
.withHttpServerTransport(), ).MapMcp()
- Als u de (standaard) stdio-transportoptie kiest bij het maken van het project, wordt dit bestand geconfigureerd om de MCP-server te definiëren als een lokale server (dat wil gezegd,
-
RandomNumberTools.cs: Een klasse die een voorbeeld van een MCP-serverhulpprogramma definieert dat een willekeurig getal retourneert tussen door de gebruiker opgegeven min/max-waarden. -
[Alleen HTTP-transport]
[MCPServerName].http: een bestand dat het standaardhostadres definieert voor een HTTP MCP-server en JSON-RPC communicatie. -
server.json: Een bestand waarin wordt gedefinieerd hoe en waar uw MCP-server wordt gepubliceerd.
De MCP-server configureren
Configureer GitHub Copilot voor Visual Studio om uw aangepaste MCP-server te gebruiken.
Selecteer in Visual Studio het GitHub Copilot-pictogram in de rechterbovenhoek en selecteer Chatvenster openen.
Klik in het GitHub Copilot Chat-venster op het Selecteer Tools moersleutelpictogram, gevolgd door het pluspictogram in de rechterbovenhoek.
Voer in het dialoogvenster Aangepaste MCP-server toevoegen de volgende gegevens in:
-
Bestemming: kies het bereik van waar uw MCP-server is geconfigureerd:
- Oplossing : de MCP-server is alleen beschikbaar in de actieve oplossing.
- Globaal : de MCP-server is beschikbaar voor alle oplossingen.
- Server-id: de unieke naam/id voor uw MCP-server.
- Type: Het transporttype van uw MCP-server (stdio of HTTP).
-
Opdracht (alleen stdio-transport): de opdracht voor het uitvoeren van uw stdio MCP-server (dat wil zeggen,
dotnet run --project [relative path to .csproj file]) - URL (alleen HTTP-transport): het adres van uw HTTP MCP-server
- Omgevingsvariabelen (optioneel)
-
Bestemming: kies het bereik van waar uw MCP-server is geconfigureerd:
Selecteer Opslaan. Er wordt een
.mcp.jsonbestand toegevoegd aan de opgegeven bestemming.
Stdio Transport .mcp.json
Voeg het relatieve pad toe aan uw .csproj-bestand onder het veld "args".
{
"inputs": [],
"servers": {
"MyMcpServer": {
"type": "stdio",
"command": "dotnet",
"args": [
"run",
"--project",
"<relative-path-to-project-file>"
]
}
}
}
HTTP-transport .mcp.json
{
"inputs": [],
"servers": {
"MyMCPServer": {
"url": "http://localhost:6278",
"type": "http",
"headers": {}
}
}
}
Configureer GitHub Copilot voor Visual Studio Code om uw aangepaste MCP-server te gebruiken, via het OPDRACHTENpalet van VS Code of handmatig.
Configuratie van opdrachtpalet
Open het opdrachtenpalet met Ctrl+Shift+P (Command+Shift+P in macOS). Zoek 'mcp' om de
MCP: Add Serveropdracht te vinden.Selecteer het type MCP-server dat u wilt toevoegen (meestal het transporttype dat u tijdens het maken van het project hebt geselecteerd).
Als u een stdio MCP-server toevoegt, voert u een opdracht en optionele argumenten in. Gebruik
dotnet run --projectvoor dit voorbeeld .Als u een HTTP MCP-server toevoegt, voert u de localhost of het webadres in.
Voer een unieke server-id in (bijvoorbeeld: 'MyMCPServer').
Selecteer een configuratiedoel:
Globaal: maak de MCP-server beschikbaar in alle werkruimten. Het gegenereerde
mcp.jsonbestand wordt weergegeven onder de algemene gebruikersconfiguratie.Werkruimte: maak de MCP-server alleen beschikbaar vanuit de huidige werkruimte. Het gegenereerde
mcp.jsonbestand wordt weergegeven onder de.vscodemap in uw werkruimte.
Nadat u de vorige stappen hebt voltooid, wordt er een
.mcp.jsonbestand gemaakt op de locatie die is opgegeven door het configuratiedoel.
Stdio Transport mcp.json
Voeg het relatieve pad toe aan uw .csproj-bestand onder het veld "args".
{
"servers": {
"MyMcpServer": {
"type": "stdio",
"command": "dotnet",
"args": [
"run",
"--project",
"<relative-path-to-project-file>"
]
}
}
}
HTTP-transport mcp.json
{
"servers": {
"MyMCPServer": {
"url": "http://localhost:6278",
"type": "http"
}
},
"inputs": []
}
Handmatige configuratie
Maak een
.vscodemap in de hoofdmap van uw project.Voeg een
mcp.jsonbestand toe aan de.vscodemap met de volgende inhoud:{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ] } } }Opmerking
VS Code voert MCP-servers uit vanuit de hoofdmap van de werkruimte. De
<relative-path-to-project-file>tijdelijke aanduiding moet verwijzen naar het .NET-projectbestand. De waarde voor deze SampleMcpServer-app zou bijvoorbeeld zijnSampleMcpServer.csproj.Sla het bestand op.
De MCP-server testen
De MCP-serversjabloon bevat een tool, get_random_number, die u kunt gebruiken voor testen en als beginpunt voor ontwikkeling.
Open GitHub Copilot-chat in Visual Studio en schakel over naar de agentmodus .
Selecteer het pictogram Selecteer hulpprogramma's om te verifiëren dat uw MyMCPServer beschikbaar is, zoals vermeld bij het voorbeeldhulpprogramma.
Voer een prompt in om het hulpprogramma get_random_number uit te voeren:
Give me a random number between 1 and 100.GitHub Copilot vraagt toestemming om het hulpprogramma get_random_number uit te voeren voor uw prompt. Selecteer Doorgaan of gebruik de pijl om een specifieker gedrag te selecteren:
- De huidige sessie voert de bewerking altijd uit in de huidige Sessie van de GitHub Copilot-agentmodus.
- De huidige oplossing voert altijd de opdracht uit voor de huidige Visual Studio-oplossing.
- Sta altijd toe dat de bewerking altijd wordt uitgevoerd voor elke GitHub Copilot Agent Mode-sessie.
Controleer of de server reageert met een willekeurig getal:
Your random number is 42.
De MCP-serversjabloon bevat een tool, get_random_number, die u kunt gebruiken voor testen en als beginpunt voor ontwikkeling.
Open GitHub Copilot-chat in VS Code en schakel over naar de agentmodus .
Selecteer het pictogram Hulpprogramma's om te controleren of uw MyMCPServer beschikbaar is met het vermelde voorbeeldhulpprogramma.
Voer een prompt in om het hulpprogramma get_random_number uit te voeren:
Give me a random number between 1 and 100.GitHub Copilot vraagt toestemming om het hulpprogramma get_random_number uit te voeren voor uw prompt. Selecteer Doorgaan of gebruik de pijl om een specifieker gedrag te selecteren:
- De huidige sessie voert de bewerking altijd uit in de huidige Sessie van de GitHub Copilot-agentmodus.
- De huidige werkruimte voert altijd de opdracht uit voor de huidige VS Code-werkruimte.
- Sta altijd toe dat de bewerking altijd wordt uitgevoerd voor elke GitHub Copilot Agent Mode-sessie.
Controleer of de server reageert met een willekeurig getal:
Your random number is 42.
Invoer- en configuratieopties toevoegen
In dit voorbeeld verbetert u de MCP-server om een configuratiewaarde te gebruiken die is ingesteld in een omgevingsvariabele. Dit kan een configuratie zijn die nodig is voor het functioneren van uw MCP-server, zoals een API-sleutel, een eindpunt waarmee verbinding moet worden gemaakt of een lokaal mappad.
Voeg een andere toolmethode toe na de
GetRandomNumbermethode inTools/RandomNumberTools.cs. Werk de hulpprogrammacode bij om een omgevingsvariabele te gebruiken.[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]}."; }Werk
.vscode/mcp.jsonbij om deWEATHER_CHOICESomgevingsvariabele in te stellen om te testen.{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ], "env": { "WEATHER_CHOICES": "sunny,humid,freezing" } } } }Probeer een andere prompt met Copilot in VS Code, zoals:
What is the weather in Redmond, Washington?VS Code moet een willekeurige weerbeschrijving retourneren.
Werk het
.mcp/server.jsonbestand bij om de invoer van uw omgevingsvariabele te declareren. Hetserver.jsonbestandsschema wordt gedefinieerd door het MCP-registerproject en wordt gebruikt door NuGet.org om DE MCP-configuratie van VS Code te genereren.Gebruik de
environmentVariableseigenschap om omgevingsvariabelen te declareren die worden gebruikt door uw app die door de client worden ingesteld met behulp van de MCP-server (bijvoorbeeld VS Code).Gebruik de
packageArgumentseigenschap om CLI-argumenten te definiëren die worden doorgegeven aan uw app. Zie het MCP-registerproject voor meer voorbeelden.
{ "$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" } }De enige informatie die door NuGet.org in het
server.jsonwordt gebruikt, is het eerstepackagesarray-element met deregistryType-waarde die overeenkomt metnuget. De andere eigenschappen op het hoogste niveau naast depackageseigenschap zijn momenteel ongebruikt en zijn bedoeld voor het komende centrale MCP-register. U kunt de waarden van de tijdelijke aanduidingen behouden totdat het MCP-register live is en klaar is om MCP-serververmeldingen te accepteren.
U kunt uw MCP-server opnieuw testen voordat u verdergaat.
Inpakken en publiceren naar NuGet
Pak het project in:
dotnet pack -c ReleaseMet deze opdracht worden één hulpprogrammapakket en verschillende platformspecifieke pakketten geproduceerd op basis van de
<RuntimeIdentifiers>lijst inSampleMcpServer.csproj.Publiceer de pakketten naar NuGet:
dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.jsonZorg ervoor dat u alle
.nupkgbestanden publiceert om ervoor te zorgen dat elk ondersteund platform de MCP-server kan uitvoeren.Als u de publicatiestroom wilt testen voordat u naar NuGet.org publiceert, kunt u een account registreren in de integratieomgeving van de NuGet-galerie: https://int.nugettest.org. De
pushopdracht wordt gewijzigd in:dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://apiint.nugettest.org/v3/index.json
Zie Een pakket publiceren voor meer informatie.
MCP-servers detecteren op NuGet.org
Zoek uw MCP-serverpakket op NuGet.org (of int.nugettest.org als u naar de integratieomgeving hebt gepubliceerd) en selecteer het in de lijst.
Bekijk de pakketgegevens en kopieer de JSON vanaf het tabblad MCP-server.
Voeg in het
mcp.jsonbestand in de.vscodemap de gekopieerde JSON toe, die er als volgt uitziet:{ "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}" } } } }Als u hebt gepubliceerd naar de integratieomgeving van de NuGet-galerie, moet u aan het einde van de
"--add-source", "https://apiint.nugettest.org/v3/index.json"-array"args"toevoegen.Sla het bestand op.
Selecteer in GitHub Copilot het pictogram Hulpprogramma's selecteren om te controleren of uw SampleMcpServer beschikbaar is met de vermelde hulpprogramma's.
Voer een prompt in om het nieuwe hulpprogramma get_city_weather uit te voeren:
What is the weather in Redmond?Als u invoer hebt toegevoegd aan uw MCP-server (bijvoorbeeld
WEATHER_CHOICES), wordt u gevraagd waarden op te geven.Controleer of de server reageert met het willekeurige weer:
The weather in Redmond is balmy.
Veelvoorkomende problemen
De opdracht 'dnx' die nodig is om SampleMcpServer uit te voeren, is niet gevonden
Als in VS Code deze fout wordt weergegeven bij het starten van de MCP-server, moet u een compatibele versie van de .NET SDK installeren.
De dnx opdracht wordt geleverd als onderdeel van de .NET SDK, vanaf versie 10.
Installeer de .NET 10 SDK om dit probleem op te lossen.
GitHub Copilot gebruikt uw hulpprogramma niet (er wordt een antwoord gegeven zonder uw hulpprogramma aan te roepen)
Over het algemeen wordt een AI-agent zoals GitHub Copilot geïnformeerd dat er enkele hulpprogramma's beschikbaar zijn voor de clienttoepassing, zoals VS Code. Sommige hulpprogramma's, zoals het voorbeeldhulpprogramma voor willekeurige getallen, worden mogelijk niet gebruikt door de AI-agent omdat deze vergelijkbare functionaliteit heeft.
Als uw hulpprogramma niet wordt gebruikt, controleert u het volgende:
- Controleer of uw hulpprogramma wordt weergegeven in de lijst met hulpprogramma's die VS Code heeft ingeschakeld. Zie de schermopname in Test the MCP server om dit te controleren.
- Vermeld expliciet de naam van het hulpprogramma in uw prompt. In VS Code kunt u naar uw hulpprogramma verwijzen op naam. Bijvoorbeeld:
Using #get_random_weather, what is the weather in Redmond?. - Controleer of de MCP-server in staat is te starten. U kunt dit controleren door te klikken op de knop Start die zichtbaar is boven uw MCP-serverconfiguratie in de gebruikers- of werkruimte-instellingen van VS Code.