NuGet Context MCP Server について
NuGet Context MCP Serverは、.NETソリューションやプロジェクトを解析し、NuGetフィードからパッケージのバージョンとメタデータを取得します。依存関係の情報を必要とするAIエージェントや開発ツール向けで、結果をローカルのSQLiteにキャッシュします。
主な機能
- 01.slnと.csprojの依存関係解析
- 02設定済みNuGetフィードの検索
- 03パッケージのバージョン一覧取得
- 04パッケージメタデータの取得
- 05SQLiteによる結果のキャッシュ
活用シーン
- 01プロジェクト依存パッケージの新しいバージョン確認
- 02キーワードによるNuGetパッケージ検索
- 03パッケージのバージョンとメタデータの確認
- 04キャッシュによるフィードへの重複照会の削減
MCP 対応
依存関係の解析とNuGetパッケージの照会をMCPツールとして提供します。MCPクライアントは通常、プロセスを起動し、stdioで通信します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
NuGet Context MCP Server
.NET プロジェクトの依存関係(NuGet パッケージ)に関するコンテキストを大規模言語モデル(LLM)やその他の開発ツールに提供する、Model Context Protocol(MCP) サーバーとして機能する C# アプリケーションです。
概要
このサーバーは .NET ソリューション(.sln)とプロジェクト(.csproj)を分析して、NuGet パッケージの情報を抽出します。NuGet フィードと連携して、パッケージの詳細、バージョン、メタデータを取得し、パフォーマンス向上のため、結果を SQLite を使ってローカルにキャッシュします。これらの機能は Model Context Protocol(MCP)経由のツールとして提供され、AI エージェントやその他のツールがプログラムから NuGet 情報を照会できます。
機能
このサーバーは、MCP 経由で以下のツールを提供します。
AnalyzeProjectDependencies:.slnまたは.csprojファイルを分析して、NuGet の依存関係と利用可能な最新バージョンを検索します。SearchNuGetPackages:設定された NuGet フィードで検索語に一致するパッケージを検索します。ページネーションやプレリリースバージョンを含めるオプションがあります。GetNuGetPackageVersions:特定のパッケージ ID で利用可能なすべてのバージョン(安定版またはプレリリース版)を一覧表示します。GetLatestNuGetPackageVersion:特定のパッケージ ID の最新の安定版またはプレリリース版のバージョン文字列を取得します。GetNuGetPackageDetails:特定のパッケージ ID と任意のバージョンについて、詳細なメタデータ(説明、作成者、URL など)を取得します。
前提条件
- .NET 9 SDK(または互換性のあるそれ以降のバージョン)
インストールとビルド
- リポジトリをクローンします。
git clone https://github.com/plucked/nuget-context-server cd nuget-context-server - サーバーをビルドします。
メインの実行ファイルはdotnet build --configuration Releasesrc/NuGetContextMcpServer.Host/bin/Release/net9.0/ディレクトリ内に出力されます(実際のビルド出力に応じてパスを調整してください)。
テスト
このプロジェクトでは、単体テストと統合テストに NUnit を使用し、単体テストで依存関係をモックするために Moq を使用しています。
すべてのテストを実行するには、リポジトリのルートに移動して、次のコマンドを実行します。
dotnet test
注: 統合テスト(NuGetContextMcpServer.Integration.Tests)の実行には、テストコンテナーを使用する場合があるため、Docker がインストールされ、実行中である必要があります。Docker Desktop はこちらからダウンロードできます。
テストプロジェクトは tests/ ディレクトリにあります。
NuGetContextMcpServer.Application.Tests:アプリケーション層のサービスの単体テストです。NuGetContextMcpServer.Infrastructure.Tests:インフラストラクチャ層のコンポーネント(キャッシュや解析など)の単体テストです。NuGetContextMcpServer.Integration.Tests:実際のファイルシステムや外部リソースとやり取りする場合がある統合テストです(通常はモックを使用するか、ローカルのテスト用アセットを使用します)。
使用方法と設定
このサーバーは、IDE 拡張機能などの MCP クライアントアプリケーションによって実行されるように設計されています。通常、クライアントがサーバープロセスを起動し、標準入出力(stdio)を介して通信します。
設定:
サーバーの設定には、src/NuGetContextMcpServer.Host ディレクトリにある appsettings.json(および appsettings.Development.json のような環境固有のオーバーライド)が使用されます。
NuGetSettings:QueryFeedUrl:NuGet v3 フィードインデックスの URL です(デフォルトはhttps://api.nuget.org/v3/index.json)。Username(任意):認証が必要なフィードのユーザー名です。PasswordOrPat(任意):認証が必要なフィードのパスワードまたはパーソナルアクセストークン(PAT)です。
CacheSettings:DatabasePath:SQLite キャッシュファイルへのパスです(デフォルトは作業ディレクトリ内のnuget_cache.dbです)。DefaultExpirationMinutes:キャッシュのデフォルト保持時間(分)です(デフォルトは 60 です)。
- ログ記録:
appsettings.jsonの Serilog 設定で構成されます。デフォルトでは、ログはファイルに書き込まれます。
MCP クライアント設定例(stdio を使用):
MCP クライアントには、通常、次のような設定が必要です(構文はクライアントによって異なる場合があります)。
{
"mcpServers": {
"nuget-context": {
"command": "dotnet",
"args": [
"watch",
"run",
"--non-interactive",
"--project",
"src/NuGetContextMcpServer.Host/NuGetContextMcpServer.Host.csproj",
"--",
"--transport", "stdio"
],
"cwd": ".",
"disabled": false
}
}
}
command:実行する実行可能ファイル(dotnet)です。args:コマンドに渡す引数です。開発時はdotnet watch runを使用して、ファイルの変更時にサーバーを自動的に再起動します。--transport stdio引数は、MCP 通信に標準 I/O を使用するようサーバーに指示します。本番環境または watch を使用しない場合は、"watch"を"run"に置き換え、"--non-interactive"を削除してください。cwd:コマンドを実行する作業ディレクトリです(通常はリポジトリのルートです)。
アーキテクチャ
このサーバーは、.NET Generic Host を基盤とするレイヤー化アーキテクチャを採用しています。
- ホスト: アプリケーションのライフサイクル、依存性注入(DI)、設定、ログ記録、および MCP 通信のセットアップを管理します。
- アプリケーション: サービスインターフェイスを定義し、アプリケーションのコアロジックと MCP ツールの定義を含みます。
- インフラストラクチャ: 次の具体的な実装を提供します。
- NuGet フィードとのやり取り(
NuGet.Protocol)。 - プロジェクト/ソリューションの解析(
Microsoft.Build)。 - キャッシュ(
Microsoft.Data.Sqlite)。
- NuGet フィードとのやり取り(
コントリビューション
コントリビューションを歓迎します!詳細については、コントリビューションガイドラインを参照してください。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。