Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu vytvoříte minimální server MCP (Model Context Protocol) pomocí sady C# SDK pro MCP, připojíte se k němu pomocí GitHub Copilotu a publikujete ho na NuGet. Servery MCP jsou služby, které zpřístupňují možnosti klientům prostřednictvím protokolu MCP (Model Context Protocol).
Poznámka:
Prostředí Microsoft.Extensions.AI.Templates je aktuálně ve verzi Preview. Šablona používá knihovnu ModelContextProtocol a schéma registru server.json MCP, které jsou ve verzi Preview.
Požadavky
- .NET 10.0 SDK (Předběžná verze 6 nebo vyšší)
- Visual Studio Code
- Rozšíření GitHub Copilot pro Visual Studio Code
- účet NuGet.org
Vytvoření projektu
V okně terminálu nainstalujte šablonu serveru MCP (verze 9.10.0-preview.3.25513.3 nebo novější):
dotnet new install Microsoft.Extensions.AI.TemplatesPomocí příkazu vytvořte novou serverovou aplikaci
dotnet new mcpserverMCP:dotnet new mcpserver -n SampleMcpServerVe výchozím nastavení tento příkaz vytvoří samostatný balíček nástrojů, který cílí na všechny nejběžnější platformy, na které se podporuje .NET. Pokud chcete zobrazit další možnosti, použijte
dotnet new mcpserver --help.Přejděte do
SampleMcpServeradresáře:cd SampleMcpServerSestavení projektu:
dotnet build<PackageId>Aktualizujte soubor.csprojtak, aby byl jedinečný na NuGet.org, například<NuGet.org username>.SampleMcpServer.
Konfigurace serveru MCP v editoru Visual Studio Code
Nakonfigurujte GitHub Copilot pro Visual Studio Code tak, aby používal váš vlastní server MCP:
Pokud jste to ještě neudělali, otevřete složku projektu v editoru Visual Studio Code.
Vytvořte
.vscodesložku v kořenovém adresáři projektu.mcp.jsonDo složky přidejte soubor.vscodes následujícím obsahem:{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ] } } }Poznámka:
VS Code spouští servery MCP z kořenového adresáře pracovního prostoru. Zástupný
<relative-path-to-project-file>symbol by měl odkazovat na soubor projektu .NET. Například hodnota pro tuto aplikaci SampleMcpServer by bylaSampleMcpServer.csproj.Uložte soubor.
Otestování serveru MCP
Šablona serveru MCP obsahuje nástroj get_random_number, který můžete použít pro testování a jako počáteční bod pro vývoj.
Otevřete GitHub Copilot v editoru Visual Studio Code a přepněte do režimu agenta.
Výběrem ikony Vybrat nástroje ověřte, že je váš SampleMcpServer dostupný s ukázkovým nástrojem uvedeným v seznamu.
Zadejte výzvu ke spuštění nástroje get_random_number :
Give me a random number between 1 and 100.GitHub Copilot požaduje oprávnění ke spuštění nástroje get_random_number pro vaši výzvu. Vyberte Pokračovat nebo pomocí šipky vyberte konkrétnější chování:
- Aktuální relace vždy provádí operaci v aktuální relaci režimu GitHub Copilot Agent.
- Aktuální pracovní prostor vždy spustí příkaz pro současný pracovní prostor ve Visual Studio Code.
- Vždy povolte nastaví operaci, aby vždy běžela pro libovolnou relaci s režimem agenta GitHub Copilot nebo pro jakýkoli pracovní prostor v editoru Visual Studio Code.
Ověřte, že server reaguje náhodným číslem:
Your random number is 42.
Přidání vstupů a možností konfigurace
V tomto příkladu vylepšíte server MCP tak, aby používal konfigurační hodnotu nastavenou v proměnné prostředí. Tato konfigurace může být nutná pro fungování serveru MCP, jako je klíč rozhraní API, koncový bod pro připojení nebo cesta k místnímu adresáři.
Přidejte další metodu nástroje za metodu
GetRandomNumberv souboruTools/RandomNumberTools.cs. Aktualizujte kód nástroje tak, aby používal proměnnou prostředí.[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]}."; }Aktualizujte
.vscode/mcp.jsonpro nastavení proměnné prostředíWEATHER_CHOICESpro účely testování.{ "servers": { "SampleMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "<relative-path-to-project-file>" ], "env": { "WEATHER_CHOICES": "sunny,humid,freezing" } } } }Zkuste v editoru VS Code použít další výzvu s příkazem Copilot, například:
What is the weather in Redmond, Washington?VS Code by měl vrátit náhodný popis počasí.
Aktualizujte
.mcp/server.json, abyste deklarovali vstup vaší proměnné prostředí. Schémaserver.jsonsouborů je definováno projektem registru MCP a používá NuGet.org ke generování konfigurace VS Code MCP.environmentVariablesPomocí vlastnosti deklarujte proměnné prostředí používané vaší aplikací, které klient nastaví pomocí serveru MCP (například VS Code).packageArgumentsPomocí vlastnosti definujte argumenty rozhraní příkazového řádku, které se předají vaší aplikaci. Další příklady najdete v projektu registru 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" } }Jedinečná informace používaná NuGet.org je v
server.json, a to první položka polepackages, která má hodnoturegistryTypeodpovídajícínuget. Ostatní vlastnosti nejvyšší úrovně kroměpackagesvlastnosti jsou aktuálně nepoužívané a jsou určeny pro nadcházející centrální registr MCP. Zástupné hodnoty můžete ponechat, dokud nebude registr MCP aktivní a připravený přijmout položky serveru MCP.
Server MCP můžete otestovat znovu, než se posunete dál.
Balení a publikování do NuGetu
Zabalte projekt:
dotnet pack -c ReleaseTento příkaz vytvoří jeden balíček nástrojů a několik balíčků specifických pro platformu
<RuntimeIdentifiers>na základě seznamu vSampleMcpServer.csproj.Publikování balíčků do NuGetu:
dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.jsonNezapomeňte publikovat všechny
.nupkgsoubory, abyste zajistili, že každá podporovaná platforma může spustit server MCP.Pokud chcete otestovat tok publikování před publikováním do NuGet.org, můžete zaregistrovat účet v prostředí integrace galerie NuGet: https://int.nugettest.org. Příkaz
pushby se změnil na:dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://apiint.nugettest.org/v3/index.json
Další informace najdete v tématu Publikování balíčku.
Zjišťování serverů MCP na NuGet.org
Vyhledejte balíček serveru MCP na NuGet.org (nebo int.nugettest.org , pokud jste publikovali v prostředí integrace) a vyberte ho ze seznamu.
Zobrazte podrobnosti balíčku a zkopírujte JSON z karty Server MCP.
mcp.jsonDo souboru ve.vscodesložce přidejte zkopírovaný JSON, který vypadá takto:{ "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}" } } } }Pokud jste publikovali do integračního prostředí galerie NuGet, musíte na konec pole
"--add-source", "https://apiint.nugettest.org/v3/index.json"přidat"args".Uložte soubor.
V GitHub Copilotu vyberte ikonu Vybrat nástroje a ověřte, že je váš SampleMcpServer dostupný v uvedených nástrojích.
Zadejte výzvu ke spuštění nového nástroje get_city_weather :
What is the weather in Redmond?Pokud jste přidali vstupy na server MCP (například
WEATHER_CHOICES), zobrazí se výzva k zadání hodnot.Ověřte, že server reaguje náhodným počasím:
The weather in Redmond is balmy.
Běžné problémy
Příkaz dnx potřebný ke spuštění SampleMcpServer nebyl nalezen.
Pokud VS Code při spuštění serveru MCP zobrazí tuto chybu, musíte nainstalovat kompatibilní verzi sady .NET SDK.
Příkaz dnx se dodává jako součást sady .NET SDK počínaje verzí 10. Pokud chcete tento problém vyřešit, nainstalujte sadu .NET 10 SDK.
GitHub Copilot váš nástroj nepoužívá (odpověď se zobrazí bez vyvolání vašeho nástroje).
Obecně řečeno, agent AI, jako je GitHub Copilot, je informován, že má k dispozici některé nástroje klientské aplikace, jako je VS Code. Některé nástroje, jako je nástroj pro náhodné číslo vzorku, nemusí agent umělé inteligence využívat, protože má podobnou integrovanou funkci.
Pokud se váš nástroj nepoužívá, zkontrolujte následující:
- Ověřte, že se váš nástroj zobrazí v seznamu nástrojů, které nástroj VS Code povolil. Podívejte se na snímek obrazovky v části Test serveru MCP, jak to zkontrolovat.
- Explicitně odkazujte na název nástroje ve výzvě. Ve VS Code můžete na nástroj odkazovat podle názvu. Například:
Using #get_random_weather, what is the weather in Redmond?. - Ověřte, že se server MCP může spustit. Můžete to zkontrolovat kliknutím na tlačítko Start zobrazené nad konfigurací serveru MCP v nastavení uživatele nebo pracovního prostoru VS Code.