Skip to content

Latest commit

 

History

History
107 lines (75 loc) · 6.95 KB

File metadata and controls

107 lines (75 loc) · 6.95 KB

Пример

Претходни пример показује како користити локални .NET пројекат са stdio типом. И како покренути сервер локално у контејнеру. Ово је добро решење у многим ситуацијама. Међутим, може бити корисно да сервер ради удаљено, као у облачном окружењу. Ту долази до изражаја http тип.

Када погледате решење у 04-PracticalImplementation фасцикли, може изгледати знатно сложеније него претходно. Али у ствари, није тако. Ако пажљиво погледате пројекат src/Calculator, видећете да је углавном исти код као у претходном примеру. Једина разлика је што користимо другу библиотеку ModelContextProtocol.AspNetCore за руковање HTTP захтевима. И мењамо методу IsPrime да буде приватна, само да покажемо да у коду можете имати приватне методе. Остатак кода је исти као раније.

Остали пројекти су из .NET Aspire. Имање .NET Aspire у решењу побољшава искуство програмера током развоја и тестирања и помаже у посматрању. Није обавезно за покретање сервера, али је добра пракса да га имате у решењу.

Покрени сервер локално

  1. У VS Code-у (са C# DevKit екстензијом), идите до 04-PracticalImplementation/samples/csharp директоријума.

  2. Извршите следећу команду да бисте покренули сервер:

     dotnet watch run --project ./src/AppHost
  3. Када веб прегледач отвори .NET Aspire контролну таблу, запамтите http URL. Требало би да буде нешто као http://localhost:5058/.

    .NET Aspire Dashboard

Тестирање Streamable HTTP помоћу MCP Inspector-а

Ако имате Node.js верзију 22.7.5 или новију, можете користити MCP Inspector за тестирање вашег сервера.

Покрените сервер и у терминалу покрените следећу команду:

npx @modelcontextprotocol/inspector http://localhost:5058

MCP Inspector

  • Изаберите Streamable HTTP as the Transport type.
  • In the Url field, enter the URL of the server noted earlier, and append /mcp. Требало би да буде http (не https) something like http://localhost:5058/mcp.
  • select the Connect button.

A nice thing about the Inspector is that it provide a nice visibility on what is happening.

  • Try listing the available tools
  • Try some of them, it should works just like before.

Test MCP Server with GitHub Copilot Chat in VS Code

To use the Streamable HTTP transport with GitHub Copilot Chat, change the configuration of the calc-mcp сервер који је раније креиран да изгледа овако:

// .vscode/mcp.json
{
  "servers": {
    "calc-mcp": {
      "type": "http",
      "url": "http://localhost:5058/mcp"
    }
  }
}

Извршите неке тестове:

  • Затражите "3 простa броја после 6780". Обратите пажњу како Copilot користи нове алате NextFivePrimeNumbers и враћа само прва 3 простa броја.
  • Затражите "7 простих бројева после 111", да видите шта ће се десити.
  • Затражите "Јован има 24 леденца и жели да их подели на 3 детета. Колико леденца има сваки дете?", да видите резултат.

Деплоy сервера на Azure

Хајде да деплоy-ујемо сервер на Azure да би више људи могло да га користи.

Из терминала идите у фасциклу 04-PracticalImplementation/samples/csharp и покрените следећу команду:

azd up

Када се деплоy заврши, требало би да видите поруку оваквог типа:

Azd deployment success

Узмите URL и користите га у MCP Inspector-у и у GitHub Copilot Chat-у.

// .vscode/mcp.json
{
  "servers": {
    "calc-mcp": {
      "type": "http",
      "url": "https://calc-mcp.gentleriver-3977fbcf.australiaeast.azurecontainerapps.io/mcp"
    }
  }
}

Шта следи?

Испробавамо различите типове транспорта и алате за тестирање. Такође деплоy-ујемо ваш MCP сервер на Azure. Али шта ако наш сервер треба приступ приватним ресурсима? На пример, бази података или приватном API-ју? У следећем поглављу видећемо како можемо побољшати безбедност нашег сервера.

Одрицање одговорности:
Овај документ је преведен коришћењем АИ сервиса за превођење Co-op Translator. Иако се трудимо да превод буде тачан, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитетним извором. За критичне информације препоручује се професионални превод који обавља човек. Не одговарамо за било каква неспоразума или погрешне тумачења настала коришћењем овог превода.