mcpField
.
.net Types Explorer Mcp Server

.net Types Explorer Mcp Server

ローカル
github.com/V0v1kkk開発ツール3217 週間前に更新

.net Types Explorer Mcp Server について

リフレクションでコンパイル済みの .NET アセンブリを読み取り、型情報をAIコーディングエージェントに提供する MCP サーバーです。サードパーティ製 NuGet パッケージの API を把握したい開発者向けで、アセンブリの解決方法を設定できます。

主な機能

  1. 01アセンブリ、名前空間、型の参照
  2. 02メソッド、プロパティ、フィールド、イベントの詳細
  3. 03NuGet パッケージの検索とバージョン情報
  4. 04設定可能なアセンブリ解決モード
  5. 05ワイルドカードによるフィルタリングとページング

活用シーン

  1. 01コーディングエージェントによるサードパーティ製パッケージ API の確認
  2. 02プロジェクトの完全なビルドなしで型を調べる
  3. 03NuGet パッケージのバージョンと依存関係の確認

MCP 対応

MCP クライアントに対して ReferencedAssembliesExplorer、NamespacesExplorer、NamespaceTypes、NuGetPackageSearch、NuGetPackageVersions の 5 つのツールを公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

.NET Types Explorer MCP サーバー

AI コーディングエージェントに .NET プロジェクトの詳細な型情報を提供する Model Context Protocol (MCP) サーバーです。

概要

.NET Types Explorer MCP サーバーは、AI コーディングエージェントが .NET コードベースを理解し、扱いやすくするために設計された強力なツールです。 .NET プロジェクト内のアセンブリ、名前空間、型を探索するための構造化された方法を提供し、AI エージェントが正確でコンテキストを考慮したコード提案を生成しやすくします。

このサーバーはリフレクションを使用して、コンパイル済みの .NET アセンブリからクラス、インターフェース、メソッド、プロパティ、フィールド、イベントなどの詳細な型情報を抽出します。 この情報は、AI エージェントがコードベースを体系的に探索するために使用できる一連のツールを通じて利用可能になります。

コントリビューション

コントリビューションを歓迎します! お気軽に Pull Request を送信してください。

機能

  • アセンブリの探索: .NET プロジェクトから参照されているすべてのアセンブリの一覧を取得します
  • 名前空間の探索: 指定されたアセンブリ内のすべての名前空間を検出します
  • 型の探索: 指定された名前空間内の型に関する詳細情報を取得します。これには以下が含まれます:
    • ジェネリックパラメーターを含む完全な型名
    • 実装されたインターフェース
    • パラメーターを含むコンストラクター
    • 戻り値の型とパラメーターを含むメソッド
    • 型とアクセサーを含むプロパティ
    • 型と修飾子を含むフィールド
    • ハンドラーの型を含むイベント
  • NuGet パッケージの検索: フィルタリングとページネーションを使用して nuget.org 上の NuGet パッケージを検索します
  • NuGet パッケージのバージョン情報: 特定の NuGet パッケージのバージョン履歴と依存関係情報を取得します
  • 構成可能なアセンブリの解決: ビルド出力、NuGet グローバルパッケージキャッシュ (復元のみ、ビルド不要)、または両方を自動的に試行してアセンブリを解決します
  • フィルタリング: ワイルドカードフィルターを適用して結果を絞り込みます
  • ページネーション: 組み込みのページネーションで大規模な結果セットを処理します

ロードマップ

  • 実際のパッケージバージョンに関する情報を提供する NuGet 統合を追加する
  • 公式の Model Context Protocol C# SDK (modelcontextprotocol/csharp-sdk) に移行する
  • 複数の NuGet パッケージソース (カスタム/プライベートフィード) をサポートする
  • 依存関係グラフを構築する機能を追加する
  • マルチプロジェクトのシナリオを改善する

前提条件

  • .NET 10.0 SDK 以降
  • 探索したい .NET プロジェクト

構成

NuGet パッケージソース

このサーバーは、複数の NuGet パッケージソースを同時にクエリすることをサポートしています。appsettings.json でカスタムソースを構成します:

{
  "Tools": {
    "DefaultPageSize": 20,
    "IntendResponse": false,
    "NuGetSources": [
      {
        "Name": "nuget.org",
        "Url": "https://api.nuget.org/v3/index.json",
        "Enabled": true
      },
      {
        "Name": "MyPrivateFeed",
        "Url": "https://my-company.com/nuget/v3/index.json",
        "Enabled": true
      },
      {
        "Name": "dotnet-core (MyGet)",
        "Url": "https://dotnet.myget.org/F/dotnet-core/api/v3/index.json",
        "Enabled": true,
        "Comment": "Example: MyGet public feed for .NET Core preview packages"
      }
    ]
  }
}

構成オプション:

  • Name: パッケージソースのわかりやすい名前
  • Url: NuGet v3 API エンドポイントへの完全な URL (/v3/index.json で終わる必要があります)
  • Enabled: false に設定すると、ソースを削除せずに一時的に無効化できます

動作:

  • 有効なすべてのソースはパフォーマンス向上のために並列でクエリされます
  • 結果はパッケージ ID とバージョンによって自動的に重複排除されます
  • 1 つのソースが失敗した場合、サーバーは残りのソースで処理を続行します
  • デフォルトソースの動作: nuget.org は appsettings.json にソースが構成されていない場合にのみ追加されます

ソースの優先順位と重複排除:

同じパッケージが複数のソースで見つかった場合、サーバーは優先順位ベースの戦略を使用します:

  1. 優先順位は順序によって決まります: 構成で先にリストされたソースがより高い優先順位を持ちます
  2. 決定論的な結果: リスト内の最初のソースが、重複するパッケージに対して常に優先されます
  3. 並列クエリ: 並列実行にもかかわらず、結果は優先順位の順序で処理されます
  4. メタデータの一貫性: パッケージのメタデータ (説明、ダウンロード数など) は、そのパッケージを含む最も優先順位の高いソースから常に取得されます

例:

{
  "NuGetSources": [
    { "Name": "Internal", "Url": "https://internal.company.com/nuget/v3/index.json", "Enabled": true },
    { "Name": "nuget.org", "Url": "https://api.nuget.org/v3/index.json", "Enabled": true }
  ]
}

この構成では、パッケージが両方のソースに存在する場合、"Internal" からの情報が使用されます。

アセンブリ解決モード

サーバーは、パッケージアセンブリを特定するためのさまざまな戦略をサポートしています。これは appsettings.json で設定します:

{
  "Tools": {
    "AssemblyResolutionMode": "NuGetCache"
  }
}
モード動作
BuildOutputデフォルト。ビルド出力ディレクトリ(例: bin/Debug/net10.0/)からアセンブリを解決します。完全なビルドが必要です。
NuGetCacheNuGet グローバルパッケージキャッシュから直接アセンブリを解決します。必要なのは dotnet restore のみで、ビルドは不要です。プロジェクトタイプは安全にスキップされます。
Autoまずビルド出力を試し、ビルド出力にアセンブリが見つからない場合は NuGet キャッシュにフォールバックします。

NuGetCache モードは、完全なビルドサイクルを待たずにサードパーティパッケージの API を主に調査したい場合に特に便利です。グローバルパッケージフォルダーのパスは project.assets.json から自動的に読み取られます。

インストール

オプション 1: ネイティブインストール
  1. リポジトリをクローンします
  2. プロジェクトをビルドします:
    dotnet build -c Release
    
  3. プロジェクトを発行します:
    dotnet publish -c Release -r <runtime-identifier> --self-contained false
    
    <runtime-identifier> は対象プラットフォーム(例: win-x64、linux-x64、osx-x64)に置き換えてください。
オプション 2: Docker

サーバーは Docker コンテナとして利用可能で、より優れた分離と簡単なデプロイを提供します:

  1. イメージをプルします(Docker Hub から):

    docker pull vrogozhin/dotnet-types-explorer-mcp:latest
    
  2. またはローカルでビルドします:

    git clone https://github.com/V0v1kkk/DotNetMetadataMcpServer.git
    cd DotNetMetadataMcpServer
    docker build -t dotnet-types-explorer-mcp .
    
  3. コンテナを実行します:

    docker run --rm -i \
      -v /path/to/your/dotnet/projects:/workspace \
      vrogozhin/dotnet-types-explorer-mcp:latest
    

Docker デプロイの利点:

  • マシンに .NET SDK をインストールする必要がありません
  • 分離された環境が競合を防ぎます
  • 異なるオペレーティングシステム間で一貫した動作を実現します
  • MSBuild と必要なすべての依存関係が含まれています
  • 最新のイメージをプルするだけで簡単に更新できます

設定

ネイティブ設定

.NET Types Explorer MCP サーバーを AI エージェントで使用するには、MCP 設定ファイルで構成する必要があります。設定例を次に示します:

{
  "mcpServers": {
    "dotnet-types-explorer": {
      "command": "/path/to/DotNetMetadataMcpServer",
      "args": [ "--homeEnvVariable", "/home/user" ],
      "disabled": false,
      "alwaysAllow": [],
      "timeout": 300
    }
  }
}

/path/to/DotNetMetadataMcpServer は発行された実行可能ファイルへの実際のパスに、/home/user はご自身のホームディレクトリに置き換えてください。

Docker 設定

Docker デプロイの場合は、MCP クライアントを次のように構成します:

{
  "mcpServers": {
    "dotnet-types-explorer": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "/path/to/your/dotnet/projects:/workspace",
        "vrogozhin/dotnet-types-explorer-mcp:latest"
      ],
      "disabled": false,
      "alwaysAllow": [],
      "timeout": 300
    }
  }
}

/path/to/your/dotnet/projects は .NET プロジェクトを含むディレクトリに置き換えてください。コンテナはこのディレクトリ内のすべてのプロジェクトにアクセスできるようになります。

重要な制限事項

  • ビルドの必要性は解決モードによって異なります。 BuildOutput モード(デフォルト)では、スキャン前にプロジェクトをビルドする必要があります。NuGetCache モードでは dotnet restore のみが必要です — サーバーは NuGet グローバルパッケージキャッシュから直接パッケージアセンブリを解決します。プロジェクト固有の型は、プロジェクトがビルドされている場合にのみ利用可能です。
  • このツールは他のプロジェクトへの参照をたどりません。 指定されたプロジェクトとその NuGet 依存関係のみを検査します。複数のプロジェクトを分析する必要がある場合は、それぞれを個別にスキャンする必要があります。
プロジェクト出力の特定方法

プロジェクトをスキャンする際、サーバーはコンパイル済みアセンブリのパスを必要とします。MsBuildHelper はプロジェクトを評価し、次の順序で構成を調査して出力アセンブリの特定を試みます:

  • 要求された構成(デフォルトでは Debug)、次に
  • Release、それでも見つからない場合は、
  • 安全なデフォルトとして再び Debug を確認するフォールバック。

最初に存在する出力が優先されます。出力が見つからない場合は、妥当なデフォルトパスが想定され、警告がログに記録されます。これにより、ローカル実行(多くの場合 Debug)と CI 実行(多くの場合 Release)が一貫して動作します。スキャン前に、これらの構成のいずれかでプロジェクトをビルドしてください。

使用方法

このサーバーは、AI エージェントが使用できる 5 つの主要なツールを提供します。

  1. ReferencedAssembliesExplorer: .NET プロジェクトから参照されているアセンブリを取得します
  2. NamespacesExplorer: 指定されたアセンブリから名前空間を取得します
  3. NamespaceTypes: 指定された名前空間から型を取得します
  4. NuGetPackageSearch: フィルタリングとページネーションを使用して nuget.org で NuGet パッケージを検索します
  5. NuGetPackageVersions: 特定の NuGet パッケージのバージョン履歴と依存関係情報を取得します

このツールは、Model Context Protocol をサポートする AI コーディングアシスタントである Roo Code Visual Studio 拡張機能 でテストされています。Roo Code の詳細については、GitHub を参照してください。

.clinerules ファイルを使用して、コーディングアシスタントに MCP サーバーを使用するよう指示することができます。

AI コードアシスタントへの指示

NuGet パッケージ参照を持つ .NET プロジェクトで作業し、それらのパッケージを使用するコードを記述する必要がある場合は、Dotnet Type Explorer MCP サーバーを使用して、それらのパッケージの API を体系的に調査する必要があります。これは、パッケージの API に精通していない場合や、ドキュメントが限られている場合に特に重要です。

.NET プロジェクトで作業する場合:

  1. まず、プロジェクトがビルドされていることを確認してください。このツールは、型情報を抽出するためにコンパイル済みアセンブリに依存しています。

  2. ReferencedAssembliesExplorer ツールを使用して、プロジェクトファイルによって参照されているすべてのアセンブリを取得することから始めます。これにより、利用可能なすべてのアセンブリのリストが得られます。

  3. System.* や Microsoft.* のように他の場所で十分に文書化されている基本クラスライブラリ (BCL) の型ではなく、サードパーティのライブラリと NuGet パッケージに焦点を当ててください。

  4. 関連するアセンブリを特定したら、NamespacesExplorer ツールを使用して、それらのアセンブリ内の名前空間を検出します。これにより、ライブラリがどのように構成されているかを理解するのに役立ちます。

  5. 関連する名前空間を特定したら、NamespaceTypes ツールを使用して、関心のある名前空間内の型に関する詳細情報を取得します。これには、メソッド、プロパティ、フィールド、イベントなどが含まれます。

  6. 大量のデータに圧倒された場合、または探しているものが正確にわかっている場合にのみ、フィルタリングを使用してください。

  7. 特定の NuGet パッケージを検索したり、そのバージョンや依存関係を調査したりする必要がある場合は、NuGetPackageSearch ツールを使用して、名前またはキーワードでパッケージを検索します。

  8. バージョン履歴や依存関係を含む特定の NuGet パッケージに関する詳細情報が必要な場合は、NuGetPackageVersions ツールを使用します。これは、互換性の要件や依存関係チェーンを理解する必要がある場合に特に便利です。

  9. 特定のバージョンや特定の命名パターンを持つパッケージを検索する場合は、NuGet ツールのフィルタリング機能を使用して結果を絞り込んでください。

このツールは、指定されたプロジェクトとその NuGet 依存関係のみを検査することに注意してください。ソリューション内の他のプロジェクトへの参照は追跡しません。複数のプロジェクトを分析する必要がある場合は、それぞれを個別にスキャンする必要があります。

このトップダウンのアプローチ (アセンブリ → 名前空間 → 型) は、.NET ライブラリを使用するコードを記述する必要がある場合に、それらを調査して理解するための最も効率的な方法です。これは、API がすぐに明らかでない場合や十分に文書化されていないサードパーティのライブラリにとって特に価値があります。NuGet ツールは、パッケージがプロジェクトで既に参照されていることを必要とせずに、パッケージ情報に直接アクセスできるようにすることで、このアプローチを補完します。

仕組み

このサーバーは、型情報を抽出するために次のプロセスを使用します。

  1. プロジェクトの評価: MSBuild を使用してプロジェクトファイルを評価し、コンパイル済みアセンブリを特定します
  2. アセンブリの読み込み: コンパイル済みアセンブリとその依存関係を読み込みます
  3. 型のリフレクション: リフレクションを使用して、型に関する詳細情報を抽出します
  4. フィルタリングとページネーション: 結果にフィルターとページネーションを適用します
  5. レスポンスのフォーマット: 結果を JSON としてフォーマットし、クライアントに返します

API リファレンス

ReferencedAssembliesExplorer

フィルターとページネーションに基づいて、参照されているアセンブリを取得します。

入力スキーマ:

{
  "type": "object",
  "properties": {
    "ProjectFileAbsolutePath": {
      "type": "string"
    },
    "PageNumber": {
      "type": "integer"
    },
    "FullTextFiltersWithWildCardSupport": {
      "type": "array",
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    }
  },
  "required": [
    "ProjectFileAbsolutePath"
  ]
}

レスポンス:

{
  "AssemblyNames": ["Assembly1", "Assembly2", ...],
  "CurrentPage": 1,
  "AvailablePages": [1, 2, ...]
}
NamespacesExplorer

指定したアセンブリから名前空間を取得します。フィルターとページネーションをサポートします。

入力スキーマ:

{
  "type": "object",
  "properties": {
    "ProjectFileAbsolutePath": {
      "type": "string"
    },
    "AssemblyNames": {
      "type": "array",
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    },
    "PageNumber": {
      "type": "integer"
    },
    "FullTextFiltersWithWildCardSupport": {
      "type": "array",
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    }
  },
  "required": [
    "ProjectFileAbsolutePath"
  ]
}

レスポンス:

{
  "Namespaces": ["Namespace1", "Namespace2", ...],
  "CurrentPage": 1,
  "AvailablePages": [1, 2, ...]
}
NamespaceTypes

指定した名前空間から型を取得します。フィルターとページネーションをサポートします。

入力スキーマ:

{
  "type": "object",
  "properties": {
    "ProjectFileAbsolutePath": {
      "type": "string"
    },
    "Namespaces": {
      "type": "array",
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    },
    "PageNumber": {
      "type": "integer"
    },
    "FullTextFiltersWithWildCardSupport": {
      "type": "array",
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    }
  },
  "required": [
    "ProjectFileAbsolutePath"
  ]
}

レスポンス:

{
  "TypeData": [
    {
      "FullName": "Namespace.TypeName",
      "Implements": ["Interface1", "Interface2", ...],
      "Constructors": ["(param1, param2)", ...],
      "Methods": ["ReturnType MethodName(param1, param2)", ...],
      "Properties": ["PropertyType PropertyName { get; set; }", ...],
      "Fields": ["FieldType FieldName", ...],
      "Events": ["event EventHandlerType EventName", ...]
    },
    ...
  ],
  "CurrentPage": 1,
  "AvailablePages": [1, 2, ...]
}
NuGetPackageSearch

nuget.org 上で NuGet パッケージを検索します。フィルタリングとページネーションをサポートします。

入力スキーマ:

{
  "type": "object",
  "properties": {
    "SearchQuery": {
      "type": "string"
    },
    "IncludePrerelease": {
      "type": "boolean"
    },
    "PageNumber": {
      "type": "integer"
    },
    "FullTextFiltersWithWildCardSupport": {
      "type": "array",
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    }
  },
  "required": [
    "SearchQuery"
  ]
}

レスポンス:

{
  "Packages": [
    {
      "Id": "Newtonsoft.Json",
      "Version": "13.0.3",
      "Description": "Json.NET is a popular high-performance JSON framework for .NET",
      "Authors": "James Newton-King",
      "DownloadCount": 1000000,
      "Published": "2023-03-08T00:00:00Z"
    },
    ...
  ],
  "CurrentPage": 1,
  "AvailablePages": [1, 2, ...]
}
NuGetPackageVersions

特定の NuGet パッケージのバージョン履歴と依存関係情報を取得します。

入力スキーマ:

{
  "type": "object",
  "properties": {
    "PackageId": {
      "type": "string"
    },
    "IncludePrerelease": {
      "type": "boolean"
    },
    "PageNumber": {
      "type": "integer"
    },
    "FullTextFiltersWithWildCardSupport": {
      "type": "array",
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    }
  },
  "required": [
    "PackageId"
  ]
}

レスポンス:

{
  "PackageId": "Newtonsoft.Json",
  "Versions": [
    {
      "Id": "Newtonsoft.Json",
      "Version": "13.0.3",
      "Description": "Json.NET is a popular high-performance JSON framework for .NET",
      "Authors": "James Newton-King",
      "DownloadCount": 1000000,
      "Published": "2023-03-08T00:00:00Z",
      "DependencyGroups": [
        {
          "TargetFramework": ".NETStandard2.0",
          "Dependencies": [
            {
              "Id": "System.Text.Json",
              "VersionRange": "6.0.0"
            }
          ]
        }
      ]
    },
    ...
  ],
  "CurrentPage": 1,
  "AvailablePages": [1, 2, ...]
}

使用例のシナリオ

AI エージェントが .NET Types Explorer MCP サーバーを使用して UI フレームワークの API を探索する方法の例を次に示します。

  1. フィルタリングを使用してアセンブリを取得する:

    {
      "ProjectFileAbsolutePath": "/home/user/Projects/MyApp/MyApp.csproj",
      "PageNumber": 1,
      "FullTextFiltersWithWildCardSupport": ["Avalonia*"]
    }
    

    レスポンス:

    {
      "AssemblyNames": [
        "Avalonia",
        "Avalonia.Controls.ColorPicker",
        "Avalonia.Controls.DataGrid",
        "Avalonia.Desktop",
        "Avalonia.Diagnostics",
        "Avalonia.Fonts.Inter",
        "Avalonia.FreeDesktop",
        "Avalonia.Native",
        "Avalonia.ReactiveUI",
        "Avalonia.Remote.Protocol"
      ],
      "CurrentPage": 1,
      "AvailablePages": [1, 2]
    }
    
  2. 対象を絞ったフィルタリングで名前空間を取得する:

    {
      "ProjectFileAbsolutePath": "/home/user/Projects/MyApp/MyApp.csproj",
      "AssemblyNames": ["Avalonia"],
      "PageNumber": 1,
      "FullTextFiltersWithWildCardSupport": ["*Media*", "*Image*"]
    }
    

    レスポンス:

    {
      "Namespaces": [
        "Avalonia.Media",
        "Avalonia.Media.Transformation",
        "Avalonia.Media.TextFormatting",
        "Avalonia.Media.TextFormatting.Unicode",
        "Avalonia.Media.Immutable",
        "Avalonia.Media.Imaging",
        "Avalonia.Media.Fonts"
      ],
      "CurrentPage": 1,
      "AvailablePages": [1]
    }
    
  3. 特定の名前空間から型を取得する:

    {
      "ProjectFileAbsolutePath": "/home/user/Projects/MyApp/MyApp.csproj",
      "Namespaces": ["Avalonia.Media.Imaging"],
      "PageNumber": 1,
      "FullTextFiltersWithWildCardSupport": []
    }
    

    レスポンス (一部):

    {
      "TypeData": [
        {
          "FullName": "Avalonia.Media.Imaging.Bitmap",
          "Implements": [
            "IBitmap",
            "IImage",
            "IDisposable",
            "IImageBrushSource"
          ],
          "Constructors": [
            "(String fileName)",
            "(Stream stream)",
            "(PixelFormat format, AlphaFormat alphaFormat, IntPtr data, PixelSize size, Vector dpi, Int32 stride)"
          ],
          "Methods": [
            "static Avalonia.Media.Imaging.Bitmap DecodeToWidth(System.IO.Stream stream, System.Int32 width, Avalonia.Media.Imaging.BitmapInterpolationMode? interpolationMode = null)",
            "static Avalonia.Media.Imaging.Bitmap DecodeToHeight(System.IO.Stream stream, System.Int32 height, Avalonia.Media.Imaging.BitmapInterpolationMode? interpolationMode = null)",
            "Avalonia.Media.Imaging.Bitmap CreateScaledBitmap(Avalonia.PixelSize destinationSize, Avalonia.Media.Imaging.BitmapInterpolationMode? interpolationMode = null)",
            "virtual System.Void Dispose()"
          ],
          "Properties": [
            "virtual Avalonia.Vector Dpi { get; }",
            "virtual Avalonia.Size Size { get; }",
            "virtual Avalonia.PixelSize PixelSize { get; }"
          ]
        }
      ],
      "CurrentPage": 1,
      "AvailablePages": [1, 2]
    }
    
  4. 特定のフィルターを適用して関連する型を検索する:

    {
      "ProjectFileAbsolutePath": "/home/user/Projects/MyApp/MyApp.csproj",
      "Namespaces": ["Avalonia.Platform"],
      "PageNumber": 1,
      "FullTextFiltersWithWildCardSupport": ["*Framebuffer*", "*Pixel*"]
    }
    

    レスポンス:

    {
      "TypeData": [
        {
          "FullName": "Avalonia.Platform.ILockedFramebuffer",
          "Implements": ["IDisposable"],
          "Methods": [
            "abstract System.IntPtr get_Address()",
            "abstract Avalonia.PixelSize get_Size()",
            "abstract System.Int32 get_RowBytes()",
            "abstract Avalonia.Vector get_Dpi()",
            "abstract Avalonia.Platform.PixelFormat get_Format()"
          ],
          "Properties": [
            "abstract System.IntPtr Address { get; }",
            "abstract Avalonia.PixelSize Size { get; }",
            "abstract System.Int32 RowBytes { get; }",
            "abstract Avalonia.Vector Dpi { get; }",
            "abstract Avalonia.Platform.PixelFormat Format { get; }"
          ]
        }
      ],
      "CurrentPage": 1,
      "AvailablePages": [1]
    }
    

NuGet パッケージの例

AI エージェントが NuGet ツールを使用してパッケージ情報を探索する方法の例を次に示します。

  1. NuGet パッケージを検索する:
{
  "SearchQuery": "EntityFrameworkCore",
  "IncludePrerelease": false,
  "PageNumber": 1,
  "FullTextFiltersWithWildCardSupport": []
}

レスポンス:

{
  "Packages": [
    {
      "Id": "Microsoft.EntityFrameworkCore",
      "Version": "7.0.0",
      "Description": "Entity Framework Core is a lightweight and extensible version of the popular Entity Framework data access technology.",
      "Authors": "Microsoft",
      "DownloadCount": 42000000,
      "Published": "2022-11-08T00:00:00Z"
    },
    {
      "Id": "Microsoft.EntityFrameworkCore.SqlServer",
      "Version": "7.0.0",
      "Description": "Microsoft SQL Server database provider for Entity Framework Core.",
      "Authors": "Microsoft",
      "DownloadCount": 38000000,
      "Published": "2022-11-08T00:00:00Z"
    }
  ],
  "CurrentPage": 1,
  "AvailablePages": [1, 2, 3, 4, 5]
}
  1. フィルタリングを使用して検索する:
{
  "SearchQuery": "Json",
  "IncludePrerelease": false,
  "PageNumber": 1,
  "FullTextFiltersWithWildCardSupport": ["Newtonsoft*"]
}

レスポンス:

{
  "Packages": [
    {
      "Id": "Newtonsoft.Json",
      "Version": "13.0.3",
      "Description": "Json.NET is a popular high-performance JSON framework for .NET",
      "Authors": "James Newton-King",
      "DownloadCount": 1250000000,
      "Published": "2023-03-08T00:00:00Z"
    },
    {
      "Id": "Newtonsoft.Json.Bson",
      "Version": "1.0.2",
      "Description": "Json.NET BSON adds support for reading and writing BSON",
      "Authors": "James Newton-King",
      "DownloadCount": 120000000,
      "Published": "2020-01-01T00:00:00Z"
    }
  ],
  "CurrentPage": 1,
  "AvailablePages": [1]
}
  1. パッケージのバージョン情報を取得する:
{
  "PackageId": "Newtonsoft.Json",
  "IncludePrerelease": false,
  "PageNumber": 1,
  "FullTextFiltersWithWildCardSupport": []
}

レスポンス:

{
  "PackageId": "Newtonsoft.Json",
  "Versions": [
    {
      "Id": "Newtonsoft.Json",
      "Version": "13.0.3",
      "Description": "Json.NET is a popular high-performance JSON framework for .NET",
      "Authors": "James Newton-King",
      "DownloadCount": 1250000000,
      "Published": "2023-03-08T00:00:00Z",
      "DependencyGroups": [
        {
          "TargetFramework": ".NETStandard2.0",
          "Dependencies": []
        },
        {
          "TargetFramework": ".NETFramework4.5",
          "Dependencies": []
        }
      ]
    },
    {
      "Id": "Newtonsoft.Json",
      "Version": "13.0.2",
      "Description": "Json.NET is a popular high-performance JSON framework for .NET",
      "Authors": "James Newton-King",
      "DownloadCount": 980000000,
      "Published": "2022-11-24T00:00:00Z",
      "DependencyGroups": [
        {
          "TargetFramework": ".NETStandard2.0",
          "Dependencies": []
        },
        {
          "TargetFramework": ".NETFramework4.5",
          "Dependencies": []
        }
      ]
    }
  ],
  "CurrentPage": 1,
  "AvailablePages": [1, 2, 3, 4, 5]
}
  1. フィルタリングを使用して特定のパッケージバージョンを取得する:
{
  "PackageId": "Microsoft.EntityFrameworkCore",
  "IncludePrerelease": false,
  "PageNumber": 1,
  "FullTextFiltersWithWildCardSupport": ["7.0.0"]
}

レスポンス:

{
  "PackageId": "Microsoft.EntityFrameworkCore",
  "Versions": [
    {
      "Id": "Microsoft.EntityFrameworkCore",
      "Version": "7.0.0",
      "Description": "Entity Framework Core is a lightweight and extensible version of the popular Entity Framework data access technology.",
      "Authors": "Microsoft",
      "DownloadCount": 42000000,
      "Published": "2022-11-08T00:00:00Z",
      "DependencyGroups": [
        {
          "TargetFramework": "net6.0",
          "Dependencies": [
            {
              "Id": "Microsoft.Extensions.Caching.Memory",
              "VersionRange": "7.0.0"
            },
            {
              "Id": "Microsoft.Extensions.DependencyInjection",
              "VersionRange": "7.0.0"
            },
            {
              "Id": "Microsoft.Extensions.Logging",
              "VersionRange": "7.0.0"
            }
          ]
        }
      ]
    }
  ],
  "CurrentPage": 1,
  "AvailablePages": [1]
}

ライセンス

このプロジェクトは Apache 2.0 ライセンスの下でライセンスされています - 詳細については LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。