Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans ce guide de démarrage rapide, vous allez créer un serveur MCP (Model Context Protocol) minimal à l’aide du Kit de développement logiciel (SDK) C# pour MCP, vous y connecter à l’aide de GitHub Copilot et le publier sur NuGet. Les serveurs MCP sont des services qui exposent des fonctionnalités aux clients via le protocole MCP (Model Context Protocol).
Remarque
Le Microsoft.McpServer.ProjectTemplates package de modèle est actuellement en préversion.
Conditions préalables
- Sdk .NET 10.0 (préversion 6 ou ultérieure)
- Visual Studio Code
- Extension GitHub Copilot pour Visual Studio Code
- Compte NuGet.org
Créer le projet
Dans une fenêtre de terminal, installez le modèle de serveur MCP :
dotnet new install Microsoft.McpServer.ProjectTemplatesRemarque
Le SDK .NET 10.0 (préversion 6 ou ultérieure) est nécessaire pour installer
Microsoft.McpServer.ProjectTemplates.Créez une application serveur MCP avec la
dotnet new mcpservercommande :dotnet new mcpserver -n SampleMcpServerPar défaut, cette commande crée un package d’outils autonome ciblant toutes les plateformes les plus courantes sur lesquelles .NET est pris en charge. Pour afficher d’autres options, utilisez
dotnet new mcpserver --help.Accédez au
SampleMcpServerrépertoire :cd SampleMcpServerConstruisez le projet :
dotnet buildMettez à jour le
<PackageId>dans le fichier.csprojpour qu'il soit unique sur NuGet.org, par exemple<NuGet.org username>.SampleMcpServer.
Configurer le serveur MCP dans Visual Studio Code
Configurez GitHub Copilot pour Visual Studio Code pour utiliser votre serveur MCP personnalisé :
Si ce n’est déjà fait, ouvrez votre dossier de projet dans Visual Studio Code.
Créez un
.vscodedossier à la racine de votre projet.Ajoutez un
mcp.jsonfichier dans le.vscodedossier avec le contenu suivant :{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ] } } }Remarque
VS Code exécute des serveurs MCP à partir de la racine de l’espace de travail. L’espace
<relative-path-to-project-file>réservé doit pointer vers votre fichier projet .NET. Par exemple, la valeur de cette application SampleMcpServer seraitSampleMcpServer.csproj.Enregistrez le fichier.
Tester le serveur MCP
Le modèle de serveur MCP inclut un outil appelé get_random_number que vous pouvez utiliser pour les tests et comme point de départ pour le développement.
Ouvrez GitHub Copilot dans Visual Studio Code et basculez en mode agent.
Sélectionnez l’icône Sélectionner des outils pour vérifier que votre SampleMcpServer est disponible avec l’exemple d’outil répertorié.
Entrez une invite pour exécuter l’outil get_random_number :
Give me a random number between 1 and 100.GitHub Copilot demande la permission d’exécuter l’outil get_random_number pour votre commande. Sélectionnez Continuer ou utiliser la flèche pour sélectionner un comportement plus spécifique :
- La session active exécute toujours l’opération dans la session en mode Agent Copilot GitHub actuelle.
- L’espace de travail actuel exécute toujours la commande de l’espace de travail Visual Studio Code actuel.
- Toujours autoriser configure l'opération pour qu'elle soit toujours exécutée pour toute session en mode Agent Copilot GitHub ou tout espace de travail Visual Studio Code.
Vérifiez que le serveur répond avec un nombre aléatoire :
Your random number is 42.
Ajouter des entrées et des options de configuration
Dans cet exemple, vous améliorez le serveur MCP pour utiliser un jeu de valeurs de configuration dans une variable d’environnement. Il peut s’agir d’une configuration nécessaire pour le fonctionnement de votre serveur MCP, comme une clé API, un point de terminaison auquel se connecter ou un chemin d’accès au répertoire local.
Ajoutez une autre méthode d’outil après la
GetRandomNumberméthode dansTools/RandomNumberTools.cs. Mettez à jour le code de l’outil pour utiliser une variable d’environnement.[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]}."; }Mettez à jour la
.vscode/mcp.jsonpour définir la variable d’environnementWEATHER_CHOICESpour le test.{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ], "env": { "WEATHER_CHOICES": "sunny,humid,freezing" } } } }Testez une autre commande avec Copilot dans VS Code, tel que :
What is the weather in Redmond, Washington?VS Code doit retourner une description météorologique aléatoire.
Mettez à jour l’élément
.mcp/server.jsonafin de déclarer votre entrée de variable d’environnement. Leserver.jsonschéma de fichier est défini par le projet de Registre MCP et est utilisé par NuGet.org pour générer la configuration VS Code MCP.Utilisez la
environmentVariablespropriété pour déclarer des variables d’environnement utilisées par votre application qui seront définies par le client à l’aide du serveur MCP (par exemple, VS Code).Utilisez la
packageArgumentspropriété pour définir des arguments CLI qui seront transmis à votre application. Pour plus d’exemples, consultez le projet de Registre MCP.
{ "$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" } }Les seules informations utilisées par NuGet.org dans le
server.jsonest le premier élément de tableaupackagesavec la valeurregistryTypecorrespondant ànuget. Les propriétés de premier niveau, à l'exception de la propriétépackages, sont actuellement inutilisées et elles sont prévues pour le futur Registre central MCP. Vous pouvez laisser les valeurs de remplacement jusqu’à ce que le registre MCP soit actif et prêt à accepter les entrées du serveur MCP.
Vous pouvez tester à nouveau votre serveur MCP avant de passer à l’avant.
Emballer et publier sur NuGet
Packez le projet :
dotnet pack -c ReleaseCette commande produit un package d’outils et plusieurs packages spécifiques à la plateforme en fonction de la
<RuntimeIdentifiers>liste dansSampleMcpServer.csproj.Publiez les packages sur NuGet :
dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.jsonVeillez à publier tous les
.nupkgfichiers pour vous assurer que chaque plateforme prise en charge peut exécuter le serveur MCP.Si vous souhaitez tester le flux de publication avant de publier sur NuGet.org, vous pouvez inscrire un compte dans l’environnement d’intégration de la galerie NuGet : https://int.nugettest.org. La
pushcommande est modifiée pour :dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://apiint.nugettest.org/v3/index.json
Pour plus d’informations, consultez Publier un package.
Découvrir des serveurs MCP sur NuGet.org
Recherchez votre package de serveur MCP sur NuGet.org (ou int.nugettest.org si vous avez publié dans l’environnement d’intégration) et sélectionnez-le dans la liste.
Affichez les détails du package et copiez le JSON à partir de l’onglet « Serveur MCP ».
Dans votre
mcp.jsonfichier dans le.vscodedossier, ajoutez le json copié, qui ressemble à ceci :{ "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}" } } } }Si vous avez publié dans l’environnement d’intégration de la galerie NuGet, vous devez ajouter
"--add-source", "https://apiint.nugettest.org/v3/index.json"à la fin du"args"tableau.Enregistrez le fichier.
Dans GitHub Copilot, sélectionnez l’icône Sélectionner des outils pour vérifier que votre SampleMcpServer est disponible avec les outils répertoriés.
Entrez une invite pour exécuter le nouvel outil get_city_weather :
What is the weather in Redmond?Si vous avez ajouté des entrées à votre serveur MCP (par exemple,
WEATHER_CHOICES), vous serez invité à fournir des valeurs.Vérifiez que le serveur répond avec la météo aléatoire :
The weather in Redmond is balmy.
Problèmes courants
La commande « dnx » nécessaire pour exécuter SampleMcpServer est introuvable
Si VS Code affiche cette erreur lors du démarrage du serveur MCP, vous devez installer une version compatible du Kit de développement logiciel (SDK) .NET.
La dnx commande est fournie dans le cadre du Kit de développement logiciel (SDK) .NET, à compter de la version 10.
Installez le Kit de développement logiciel (SDK) .NET 10 pour résoudre ce problème.
GitHub Copilot n’utilise pas votre outil (une réponse est fournie sans appeler votre outil)
En règle générale, un agent IA comme GitHub Copilot est informé qu’il dispose d’outils disponibles par l’application cliente, comme VS Code. Certains outils, tels que l’exemple d’outil de nombre aléatoire, peuvent ne pas être utilisés par l’agent IA, car il dispose de fonctionnalités similaires intégrées.
Si votre outil n’est pas utilisé, vérifiez ce qui suit :
- Vérifiez que votre outil apparaît dans la liste des outils activés par VS Code. Consultez la capture d’écran dans Tester le serveur MCP pour savoir comment vérifier cela.
- Référencez explicitement le nom de l’outil dans votre invite. Dans VS Code, vous pouvez référencer votre outil par nom. Par exemple :
Using #get_random_weather, what is the weather in Redmond?. - Vérifiez que votre serveur MCP est en mesure de démarrer. Vous pouvez le vérifier en cliquant sur le bouton « Démarrer » visible au-dessus de la configuration de votre serveur MCP dans les paramètres utilisateur ou espace de travail VS Code.