monkeymcp について
monkeymcp は .NET 9.0 で構築されたサンプルの MCP サーバーで、猴子のデータ検索、行程のシミュレーション、位置情報サービスを提供します。C# で MCP サーバーを構築する方法を学びたい開発者を対象とし、stdio と SSE の両方のトランスポートに対応しています。
主な機能
- 01全猴子データと名前による個別の猴子情報の取得
- 02猴子の移動経路と活動の生成
- 03Haversine 公式による行程距離の計算
- 04stdio と SSE の二つのトランスポート実装
- 05属性によるMCPツールの登録
活用シーン
- 01。NET で MCP サーバーを構築する方法の学習
- 02VS Code や Claude Desktop での MCP ツール呼び出しの検証
- 03カスタムツールサーバーの開始テンプレートとしての利用
MCP 対応
本プロジェクトは MCP サーバーであり、GetMonkeys、GetMonkey、GetMonkeyJourney、GetAllMonkeyJourneys などのツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Monkey - Model Context Protocol (MCP) サーバー
概要
これは、.NET 9.0 で構築された Model Context Protocol(MCP)サーバーの実装です。MCP サーバーは、モデル駆動型システム内のさまざまなコンポーネント間のやり取りを可能にする通信プロトコルを提供します。この実装では、カスタムツールとサービスを備えた基本的な MCP サーバーのセットアップ方法を紹介します。
お試しください
VS Code と VS にすばやくインストール
GitHub Copilot、Claude Desktop、その他の MCP クライアントを使用して VS Code で設定します:
オプション 1:リモート Azure Functions サーバー(推奨)
{
"servers": {
"monkeymcp": {
"url": "https://func-monkeymcp-3t4eixuap5dfm.azurewebsites.net/",
"type": "http"
}
},
"inputs": []
}
オプション 2:Docker コンテナ
{
"inputs": [],
"servers": {
"monkeymcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"jamesmontemagno/monkeymcp"
],
"env": {}
}
}
}
機能
コアコンポーネント
- MCP サーバー:ModelContextProtocol ライブラリ(バージョン 0.1.0-preview.2)を使用して構築
- 標準入出力トランスポート:クライアントとの通信に stdio を使用
- カスタムツールの統合:MCP ツールの作成と登録方法の例を含む
サービス
-
MonkeyService:API エンドポイントからサルのデータを取得するサンプルサービス
- すべてのサルの一覧を取得したり、名前で特定のサルを検索したりするメソッドを提供
- パフォーマンス向上のために結果をキャッシュ
-
MonkeyLocationService:サルのための独自の旅程やアクティビティを生成するサービス
- サルの種の行動に基づき、ランダムな経路ポイントを作成
- 種に応じたアクティビティ(毛づくろい、遠吠え、温泉入浴など)を生成
- 健康統計と移動パターンを提供
- 各旅程には、バナナを食べる、ほかのサルを掃除する、探索するといった楽しいアクティビティが含まれます
利用可能なツール
サーバーは、クライアントから呼び出せる複数のツールを公開します:
Monkey Tools
- GetMonkeys:利用可能なすべてのサルのシリアル化された JSON リストを返します
- GetMonkey:名前を指定して特定のサルの情報を取得します
- GetMonkeyJourney:特定のサルのアクティビティと健康統計を含む、固有の経路を作成します
- GetAllMonkeyJourneys:利用可能なすべてのサルの経路を生成します
構成オプション
ホスティング構成
このサーバーは Microsoft.Extensions.Hosting(バージョン 9.0.3)を使用しており、以下の機能を提供します。
- 複数のソース(JSON、環境変数、コマンドライン)からの構成
- サービスの依存関係の注入
- ログ機能
ログオプション
複数のログプロバイダーを利用できます。
- Console:標準出力にログを記録します
- Debug:デバッグ目的でログを記録します
- EventLog:システムイベントログにログを記録します(Windows で実行する場合)
- EventSource:ETW(Event Tracing for Windows)との統合を提供します
はじめに
前提条件
- .NET 9.0 SDK 以降
- Model Context Protocol(MCP)の基本的な理解
サーバーの実行
- このリポジトリをクローンします
- プロジェクトディレクトリに移動します
- プロジェクトをビルドします:
dotnet build - VS Code またはその他のクライアントで構成します。
"monkeyserver": {
"type": "stdio",
"command": "dotnet",
"args": [
"run",
"--project",
"/Users/jamesmontemagno/GitHub/TestMCP/MonkeyMCP/MonkeyMCP.csproj"
]
}
プロジェクトへのパスを更新してください
サーバーの拡張
カスタムツールを追加するには:
- クラスを作成し、
[McpServerToolType]属性を付与します [McpServerTool]属性を持つメソッドを追加します- 必要に応じて
[Description]属性を追加し、ドキュメントを記述します
例:
[McpServerToolType]
public static class CustomTool
{
[McpServerTool, Description("Description of what the tool does")]
public static string ToolMethod(string param) => $"Result: {param}";
}
サーバー送信イベントの実装(MonkeyMCPSSE)
概要
MonkeyMCPSSE プロジェクトは、stdio トランスポートの代わりに HTTP 上のサーバー送信イベント(SSE)を使用する、Monkey MCP サーバーの代替実装を提供します。この実装はウェブサーバーとして動作するため、ウェブベースのクライアントや HTTP ベースの通信が必要なシナリオに適しています。
特長
- HTTP ベースのトランスポート:デフォルトで
http://localhost:3001で動作します - サーバー送信イベント:サーバーからクライアントへのリアルタイムな一方向通信を可能にします
- ASP.NET Core との統合:ASP.NET Core のウェブサーバー機能を使用して構築されています
- HTTP 上の MCP:HTTP トランスポートを介して Model Context Protocol を実装します
SSE サーバーの実行
- MonkeyMCPSSE ディレクトリに移動します
- プロジェクトをビルドして実行します:
- VS Code または MCP Inspector
npx @modelcontextprotocol/inspectorを使用して接続し、実行します
実装の詳細
SSE 実装は ASP.NET Core に組み込まれたウェブサーバー機能を使用しながら、stdio バージョンと同じサルデータサービスとツールを維持します。これにより、コア機能を保ったままトランスポート方式を簡単に切り替えられます。
プロジェクト構成
- /MonkeyMCP:メインのプロジェクトディレクトリ
- MonkeyService.cs:サルデータを取得するサービスの実装
- MonkeyTools.cs:サルデータにアクセスするための MCP ツール
- Program.cs:MCP サーバーを構成して起動するエントリーポイント
依存関係
- Microsoft.Extensions.Hosting(9.0.3):ホスティング基盤を提供します
- ModelContextProtocol(0.1.0-preview.2):MCP サーバーの実装
- System.Text.Json(9.0.3):JSON のシリアル化/逆シリアル化
ライセンス
このプロジェクトは MIT License の下で利用できます。
MonkeyLocationService の機能
MonkeyLocationService は、豊富なシミュレーション機能を提供します。
サルの種類の構成
- ヒヒ:サバンナに生息し、社会的な毛づくろい行動や根を探す採食行動を行います
- ホエザル:縄張りを示す遠吠えや葉を食べることで知られる、森林の住人です
- ニホンザル:温泉や雪遊びを楽しむ山地のサルです
- テングザル:泳ぎ、特徴的な鼻を見せびらかすマングローブのスペシャリストです
- キンシコウ:暖を取るために身を寄せ合う、高地のアクロバットです
旅の構成要素
- 経路ポイント:サルが移動した場所を示す GPS 座標
- アクティビティ:エネルギーの消費や獲得を伴う、種特有の行動
- 健康統計:エネルギー、幸福度、空腹度、社会性、ストレス、健康状態の指標
- 時間の追跡:開始時刻と終了時刻、およびアクティビティの所要時間
- 距離の計算:ハーバーサイン公式を使用した旅の総距離
含まれるユニークなアクティビティ
- バナナ探しと食事
- 相互の毛づくろい
- 縄張りのマーキング
- 温泉浴(マカク)
- 泳ぎ(テングザル)
- アクロバティックな演技
- 社会的な交流
- 採餌と探索
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。