前一個範例展示了如何使用本地的 .NET 專案搭配 stdio 類型,以及如何在容器中本地執行伺服器。這在許多情況下都是不錯的解決方案。不過,有時候讓伺服器遠端運行,例如在雲端環境中,也會很有用。這時候就會用到 http 類型。
看看 04-PracticalImplementation 資料夾中的解決方案,可能看起來比之前的複雜許多,但實際上並非如此。如果仔細查看 src/Calculator 專案,你會發現它大部分程式碼和之前的範例相同。唯一的差別是我們使用了不同的函式庫 ModelContextProtocol.AspNetCore 來處理 HTTP 請求,並且將 IsPrime 方法改成 private,這只是為了展示你可以在程式碼中使用私有方法。其餘程式碼和之前一樣。
其他專案來自 .NET Aspire。在解決方案中加入 .NET Aspire 可以提升開發者在開發和測試時的體驗,並有助於可觀察性。雖然不是執行伺服器的必要條件,但在解決方案中加入它是個好習慣。
-
在 VS Code(安裝 C# DevKit 擴充功能)中,切換到
04-PracticalImplementation/samples/csharp目錄。 -
執行以下指令啟動伺服器:
dotnet watch run --project ./src/AppHost
-
當瀏覽器開啟 .NET Aspire 儀表板時,注意
http的 URL,應該會是類似http://localhost:5058/的格式。
如果你有安裝 Node.js 22.7.5 或更新版本,可以使用 MCP Inspector 來測試你的伺服器。
啟動伺服器後,在終端機執行以下指令:
npx @modelcontextprotocol/inspector http://localhost:5058- 選擇
Streamable HTTP作為傳輸類型。 - 在 Url 欄位輸入先前記下的伺服器 URL,並在後面加上
/mcp,應該是http(非https),例如http://localhost:5058/mcp。 - 點選 Connect 按鈕。
Inspector 的優點是能清楚顯示目前的運作狀況。
- 試著列出可用的工具
- 試用其中幾個,應該和之前一樣能正常運作。
要在 GitHub Copilot Chat 中使用 Streamable HTTP 傳輸,請將先前建立的 calc-mcp 伺服器設定改成如下:
進行一些測試:
- 詢問「3 個大於 6780 的質數」,注意 Copilot 會使用新的工具
NextFivePrimeNumbers,並只回傳前三個質數。 - 詢問「7 個大於 111 的質數」,看看結果如何。
- 詢問「John 有 24 顆棒棒糖,要分給他的 3 個小孩,每個小孩會分到多少顆?」,看看結果如何。
讓我們把伺服器部署到 Azure,讓更多人可以使用。
在終端機中切換到 04-PracticalImplementation/samples/csharp 資料夾,執行以下指令:
azd up部署完成後,你應該會看到類似以下的訊息:
複製該 URL,並在 MCP Inspector 及 GitHub Copilot Chat 中使用。
// .vscode/mcp.json
{
"servers": {
"calc-mcp": {
"type": "http",
"url": "https://calc-mcp.gentleriver-3977fbcf.australiaeast.azurecontainerapps.io/mcp"
}
}
}我們嘗試了不同的傳輸類型和測試工具,也將 MCP 伺服器部署到 Azure。但如果伺服器需要存取私有資源呢?例如資料庫或私有 API?下一章我們將探討如何提升伺服器的安全性。
免責聲明:
本文件係使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們致力於確保準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋負責。


