sampledotnetmcpserver について
sampledotnetmcpserverは、C#とModelContextProtocol SDKによるサーバー開発を学ぶ開発者向けの.NET製MCPサーバーのサンプルです。ツール登録、stdioトランスポート、NuGetでのパッケージ化と公開方法を示します。
主な機能
- 01C#によるMCPツール例
- 02乱数・挨拶ツール
- 03米国ZIPコード別の天気と予報
- 04stdioトランスポート設定
- 05NuGetパッケージ化の例
活用シーン
- 01C#でのMCPツール実装の学習
- 02乱数・挨拶ツール呼び出しのテスト
- 03米国ZIPコードでの天気確認
- 04MCPサーバーのNuGetへのパッケージ化と公開
MCP 対応
stdio経由で乱数、挨拶、天気のツールをMCPクライアントに提供するMCPサーバーを実装しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SampleDotnetMcpServer
このプロジェクトは、.NET における Model Context Protocol(MCP)サーバーのサンプル実装です。C# と ModelContextProtocol SDK を使って MCP サーバーを構築、実行、公開する方法を紹介します。
mcp-name: io.github.timheuer/sampledotnetmcpserver
これは何ですか?
SampleDotnetMcpServer は .NET 向けの MCP サーバーのリファレンス実装で、次の方法を紹介します。
- C# で MCP ツールを実装する(
Tools/RandomNumberTools.cs、Tools/SayHelloName.cs、Tools/WeatherTools.csを参照) - ツールを登録し、MCP サーバーのトランスポートを設定する(
Program.csを参照) - VS Code や Visual Studio などの IDE で使用できるように、サーバーを NuGet パッケージ化して公開する
含まれているツールでは、さまざまな MCP の機能を紹介しています。
get_random_number:指定した範囲の乱数を生成しますsay_hello_nameとsay_goodbye_name:シンプルな挨拶ツールですget_weather_by_zip_code:米国の任意の郵便番号の現在の天気情報を取得しますget_weather_forecast:米国の任意の郵便番号の複数日にわたる天気予報を取得します
機能
- stdio トランスポートを使用して MCP プロトコルを実装します
- 複数のサンプルツールを提供します。
get_random_number:指定した範囲の乱整数を返しますsay_hello_nameとsay_goodbye_name:シンプルな挨拶ツールですget_weather_by_zip_code:wttr.in API を使用して、米国の任意の郵便番号の現在の天気を取得しますget_weather_forecast:米国の任意の郵便番号の複数日にわたる天気予報を取得します
- NuGet MCP サーバーとしてパッケージ化し、公開できる状態です
- 設定ファイルとメタデータの例が含まれています
使用方法
ローカルで実行する
開発やテストのために、ソースから MCP サーバーを直接実行できます。
dotnet run --project .
または、IDE で次の MCP サーバー定義を使用するように設定します。
{
"servers": {
"SampleDotnetMcpServer": {
"type": "stdio",
"command": "dotnet",
"args": [
"run",
"--project",
"<PATH TO PROJECT DIRECTORY>"
]
}
}
}
MCP サーバーをテストする
起動したら、Copilot Chat または任意の MCP クライアントから利用可能なツールを呼び出せます。
天気ツール:
- 「90210 の天気はどうですか?」と尋ねて、現在の天気を取得します
- 「10001 の3日間の天気予報を教えて」と尋ねて、天気予報を取得します
- 「60601 の天気を確認して」と尋ねて、シカゴの郵便番号でテストします
その他のツール:
- 「ランダムな数字を3つ教えて」と尋ねて、乱数生成ツールを使用します
- 「John に挨拶して」と尋ねて、挨拶ツールを使用します
NuGet.org に公開する
CI が NuGet への公開を処理します。キーには NuGet Trusted Publishing を使用し、Nerdbank.GitVersioning によってバージョンを自動設定します。
NuGet.org から使用する
公開後、IDE で NuGet.org の MCP サーバーを使用するように設定します。設定例(パッケージ ID とバージョンを置き換えてください):
{
"servers": {
"SampleDotnetMcpServer": {
"type": "stdio",
"command": "dnx",
"args": [
"TimHeuer.SampleMcpServer",
"--version",
"0.1.0-beta",
"--yes"
]
}
}
}
プロジェクト構成
Program.cs:MCP サーバーのエントリポイントと設定Tools/RandomNumberTools.cs:乱数生成の MCP ツールの例Tools/SayHelloName.cs:挨拶用 MCP ツールの例Tools/WeatherTools.cs:郵便番号を使って天気を確認する MCP ツール.mcp/server.json:MCP サーバーのメタデータと NuGet パッケージ情報SampleDotnetMcpServer.csproj:プロジェクトと NuGet パッケージ化の設定
詳細情報
- ModelContextProtocol SDK
- Model Context Protocol のドキュメント
- プロトコル仕様
- GitHub 組織
- VS Code で MCP サーバーを使用する(プレビュー)
- Visual Studio で MCP サーバーを使用する(プレビュー)
このプロジェクトは、デモおよびリファレンスのみを目的としています。フィードバックや貢献については、GitHub リポジトリをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。