既存サービスを公開する.NET MCPサーバーを構築する
使うタイミング: .NETを使用しており、書き直しなしでビジネスロジックをエージェントに公開したい場合。
前提条件
- .NET 8以上のSDK —
dotnet --version
フロー
-
プロジェクトを作成するdotnet new console -n MyMcpServer. Add
ModelContextProtocolNuGet. Use the minimal hosting template for MCP.✓ コピーしました→ csproj + Program.csにMCPホステッドサービスが含まれる -
ツールを追加するCreate a static class with
[McpServerToolType]. Add a methodGetOrder(string id)decorated with[McpServerTool(Description="...")]that calls my existing OrderService via DI.✓ コピーしました→ ツールがコンパイルされ、説明が属性から取得される -
インスペクターでテストするRun the server as stdio. Launch the MCP Inspector via
npx @modelcontextprotocol/inspector dotnet run. Call GetOrder.✓ コピーしました→ ツール呼び出しが注文のJSONを返す
結果: 既存の.NETサービスとDIコンテナを再利用する、コンパイル済みで型安全なMCPサーバー。
注意点
- クラスのインスタンスメソッドであるツールメソッドはDIが必要 — 所有クラスをServiceCollectionに登録してください。SDKがDI経由で解決します
- 適切なキャンセルトークンのない非同期メソッドはシャットダウン時にハングする — すべてのツールの最後のパラメータとして
CancellationToken ctを受け取ってください — SDKが自動的に注入します