ASP.NET Core 10:MCP サーバー(OpenTelemetry・Jaeger・Redis)実装例

Web

概要

このリポジトリは「aspnetcore10-mcp-otel-jaeger-redis_contagem」と名付けられたサンプル実装で、.NET 10(ASP.NET Core)を使った MCP サーバーの簡易版です。アプリケーションは Redis インスタンスを使ってアクセス回数(カウント)を保持し、OpenTelemetry を導入してトレース/メトリクスを収集、Jaeger を用いてトレースを可視化するための Docker Compose スクリプトが同梱されています。開発者がローカル環境で観測可能性や分散トレーシングを試験・学習する用途に向いています。リポジトリは小規模で、実例としての導入が主目的です。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 0
  • ウォッチャー数: 2
  • コミット数: 2
  • ファイル数: 4
  • メインの言語: C#

主な特徴

  • ASP.NET Core(.NET 10)で実装された軽量な MCP サーバーのサンプル
  • Redis を用いたアクセスカウント機能の実装例
  • OpenTelemetry によるトレース/メトリクス収集と Jaeger での可視化を Docker Compose で簡単に起動可能
  • ローカルで観測性(observability)のハンズオンができる構成

技術的なポイント

このプロジェクトは「アプリケーションの動作」と「観測データの収集・可視化」を結びつける典型的なサンプル構成を提供します。ポイントは大きく分けて 1) Redis を使った状態管理(アクセスカウント)と 2) OpenTelemetry を中心とした観測性の導入です。

Redis 側はアクセス回数を保存・増分する単純な用途で使われるため、Atomic なインクリメント操作(INCR)や TTL を組み合わせることで実装できます。ASP.NET 側では Redis クライアント(一般的には StackExchange.Redis 等)が使われ、DI(依存性注入)で接続を共有する形が想定されます。接続プールや再接続の設定、タイムアウトなどは本番を意識する場合に重要です。

観測性については、OpenTelemetry が .NET にネイティブで統合可能であり、HTTP リクエストごとのトレースやカスタムスパン(Redis との往復、カウント処理)を生成して Jaeger に送る構成が考えられます。典型的には:

  • System.Diagnostics.Activity を介したスパン生成(自動インストルメンテーションと手動スパンの組合せ)
  • OpenTelemetry SDK の TracerProvider、MeterProvider を設定し、Jaeger エクスポーターやコンソールエクスポーターを有効にする
  • リクエストレイテンシやエラー頻度などのメトリクスを収集し、Prometheus 等にエクスポートする拡張も想定可能

Docker Compose によりアプリケーション・Redis・Jaeger(および必要ならば Jaeger UI)を同時に立ち上げられるため、ローカルで素早く観測パイプラインを確認できます。これにより分散トレーシングのコンテキスト伝搬(ヘッダー伝搬)が正しく行われているかや、Redis 呼び出しの遅延がトレース上で可視化されるかを確認できます。

拡張ポイントとしては、サンプルのままではログの構造化(Serilog 等)やメトリクスの永続化、サンプルレートの調整、セキュリティ(Redis の認証・TLS)を追加することで実運用に近づけられます。また、Redis の負荷対策(非同期処理、バックプレッシャー)や健全性チェック(Health Checks)の導入も推奨されます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • LICENSE: file
  • README.md: file
  • src: dir

(src ディレクトリには ASP.NET Core アプリケーション本体と、Redis / OpenTelemetry の設定コードが含まれている想定です)

まとめ

小規模ながら .NET アプリの観測可能性と Redis 連携を学ぶのに良いサンプルです。(約50字)

リポジトリ情報:

READMEの抜粋:

aspnetcore10-mcp-otel-jaeger-redis_contagem

Implementação em ASP.NET Core + .NET 10 de MCP Server para contagem de acessos a partir de uma instância do Redis. Inclui o uso de um script do Docker Compose para monitoramento/observabilidade com OpenTelemetry + Jaeger. …