Skip to main content
Glama
jcucci

dotnet-sherlock-mcp

Sherlock MCP for .NET

Sherlock MCP for .NETは、.NETアセンブリに対する詳細なイントロスペクション機能を提供する包括的なModel Context Protocol (MCP) サーバーです。LLM(大規模言語モデル)が.NETコードを正確に分析・理解できるようにし、複雑な開発シナリオにおいて正確でコンテキストを意識した回答を提供します。

このツールは、以下のような目的でLLMの能力を活用したい開発者にとって不可欠です。

  • 詳細なコードベース分析 - 複雑な.NETアーキテクチャと依存関係の理解

  • 正確な型情報 - 型、メンバー、およびそのシグネチャに関する詳細なメタデータの取得

  • 自動ドキュメント化 - XMLドキュメントと属性の抽出と活用

  • カスタムツール開発 - .NETアセンブリと対話する高度なツールの構築

  • コード生成 - 既存の型構造に基づいた正確なコードの作成

主な機能

  • 包括的なMCPサーバー: .NETアセンブリ分析のための31以上の専門ツールを提供

  • 高度なアセンブリイントロスペクション: 型、メンバー、メタデータのリフレクションベースの詳細分析

  • 豊富なメンバー分析: メソッド、プロパティ、フィールド、イベント、コンストラクターの詳細な調査

  • スマートなフィルタリングとページネーション: 名前や属性による高度なフィルタリングと、大規模データセット向けの効率的なページネーション

  • XMLドキュメント統合: summary、parameters、returns、remarksの自動抽出

  • パフォーマンス最適化: キャッシュ、ストリーミング、メモリ効率の高い処理

  • 安定したJSON API: バージョン管理と構造化されたエラーコードを備えた一貫性のあるエンベロープ

  • .NET 9.0ネイティブ: 最新のC#機能を備えた最新の.NETプラットフォーム上で構築

  • プロジェクト統合: 依存関係解決を含むソリューションおよびプロジェクトファイルの分析

インストール

NuGetからグローバルツールをインストールします(sherlock-mcpがPATHに追加されます):

dotnet tool install -g Sherlock.MCP.Server

あるいは、開発中にサーバーをローカルで実行することも可能です:

dotnet run --project src/server/Sherlock.MCP.Server.csproj

MCPクライアントの設定

Sherlockは、stdio経由で通信する標準的なMCPサーバーとして動作します。

  • Cursor: 設定 → MCP / カスタムツール → ツールの追加 → コマンド: sherlock-mcp

  • Claude Desktop / その他のMCPクライアント: sherlock-mcpコマンドを指すサーバーエントリを追加します。JSONエントリの例(正確なファイル場所や形式については、クライアントのドキュメントを参照してください):

{
  "servers": {
    "sherlock": {
      "command": "sherlock-mcp"
    }
  }
}

引数は不要です。サーバーは起動時にすべてのツールを自己登録します。

.NETプロジェクト用の自動設定

.NETコードを扱う際にSherlockを自動的に使用するには、以下の設定を追加してください。

Claude Code (CLAUDE.md)

プロジェクトのCLAUDE.mdファイルに以下を追加します:

## .NET Assembly Analysis

This project uses Sherlock MCP for .NET assembly analysis. When analyzing .NET types, methods, or assemblies:

1. Use sherlock-mcp tools instead of guessing about .NET APIs
2. For type analysis: `GetTypeInfo`, `GetTypeMethods`, `GetTypeProperties`
3. For assembly overview: `AnalyzeAssembly` or `GetTypesFromAssembly`
4. For project structure: `AnalyzeProject`, `AnalyzeSolution`
5. Assembly paths are typically: `./bin/Debug/net9.0/ProjectName.dll`

Always include assembly path, prefer full type names, and use pagination for large results.

Cursor (.cursorrules)

プロジェクトの.cursorrulesファイルに以下を追加します:

# .NET Analysis Rules
When working with .NET code, assemblies, or types:
- Use sherlock-mcp tools for accurate type/member information
- Assembly paths: ./bin/Debug/net9.0/*.dll or ./bin/Release/net9.0/*.dll
- For unknown types: GetTypesFromAssembly -> GetTypeInfo -> GetTypeMethods/Properties
- For code analysis: AnalyzeAssembly for overview, GetTypeInfo for details
- Use pagination (maxItems=50) for large results to avoid token limits

グローバル設定

システム全体で使用する場合は、グローバルなClaude Code設定またはCursor設定に追加します:

For .NET development: Use sherlock-mcp tools when analyzing assemblies, types, methods, or project structure. Prefer these over guessing .NET API details.

プロンプトのヒント

以下は、チャットに貼り付けてすぐに生産性を高めるためのコンパクトなプロンプトスニペットです。パスはローカルのDLLに合わせて調整してください。

一般的なセットアップ

You have access to an MCP server named "sherlock" that can analyze .NET assemblies. Prefer these tools for .NET questions and include short reasoning for which tool you chose. Ask me for the assembly path if missing.

型のメンバーを列挙する

Analyze: /absolute/path/to/MyLib/bin/Debug/net9.0/MyLib.dll
Type: MyNamespace.MyType
List methods, including non-public, filter name contains "Async", include attributes, return JSON.

メンバーのXMLドキュメントを取得する

Use GetXmlDocsForMember on /abs/path/MyLib.dll, type MyNamespace.MyType, member TryParse. Summarize the summary + params.

型を検索して詳細を確認する

List types from /abs/path/MyLib.dll; then get type info for the first result and list its nested types.

ページングとフィルターの調整

Use GetTypeMethods on /abs/path/MyLib.dll, type MyNamespace.MyType, sortBy name, sortOrder asc, skip 0, take 25, hasAttributeContains Obsolete.

ツール概要

アセンブリの発見と分析

  • AnalyzeAssembly: 公開されている型とメタデータを含むアセンブリの完全な概要

  • FindAssemblyByClassName: 特定のクラス名を含むアセンブリを特定

  • FindAssemblyByFileName: 一般的なビルドパス内でファイル名からアセンブリを検索

型のイントロスペクション

  • GetTypesFromAssembly: メタデータを含むすべての公開型をリストアップ(ページネーション対応)

  • AnalyzeType: すべてのメンバーを含む包括的な型分析

  • GetTypeInfo: 詳細な型メタデータ(アクセシビリティ、ジェネリクス、ネストされた型)

  • GetTypeHierarchy: 継承チェーンとインターフェースの実装

  • GetGenericTypeInfo: ジェネリックパラメーター、引数、および分散情報

  • GetTypeAttributes: 型に宣言されたカスタム属性

  • GetNestedTypes: ネストされた型の宣言

メンバー分析(フィルタリング・ページネーション対応)

  • GetAllTypeMembers: すべてのカテゴリにわたる全メンバー

  • GetTypeMethods: メソッドシグネチャ、オーバーロード、メタデータ

  • GetTypeProperties: getter/setterやインデクサーを含むプロパティの詳細

  • GetTypeFields: 定数やreadonlyフィールドを含むフィールド情報

  • GetTypeEvents: ハンドラー型を含むイベント宣言

  • GetTypeConstructors: コンストラクターのシグネチャとパラメーター

  • AnalyzeMethod: オーバーロードや属性を含む詳細なメソッド分析

逆引き検索

  • FindImplementationsOf: インターフェースを実装している、または基底クラスから派生している型

  • FindMethodsReturning: 戻り値の型が指定された型と一致するメソッド(オープンジェネリックの一致をサポート)

  • FindReferencesTo: パラメーター、フィールド、プロパティ、イベント、ジェネリック引数にわたる広範な検索

属性とメタデータ

  • GetMemberAttributes: 特定のメンバーの属性

  • GetParameterAttributes: パラメーターレベルの属性情報

XMLドキュメント

  • GetXmlDocsForType: 型レベルのXMLドキュメントを抽出

  • GetXmlDocsForMember: メンバー固有のドキュメント(summary/params/returns/remarks)

プロジェクトとソリューションの分析

  • AnalyzeSolution: .slnファイルを解析し、プロジェクトを列挙

  • AnalyzeProject: プロジェクトのメタデータ、参照、ビルド構成

  • GetProjectOutputPaths: 構成ごとの出力ディレクトリを解決

  • ResolvePackageReferences: NuGetパッケージをキャッシュされたアセンブリにマッピング

  • FindDepsJsonDependencies: ランタイム依存関係のためにdeps.jsonを解析

設定とランタイム

  • GetRuntimeOptions: 現在のサーバー設定とデフォルト値

  • UpdateRuntimeOptions: ページネーション、キャッシュ、検索動作の変更

高度なフィルタリングとページネーション

すべてのメンバー分析ツールは、包括的なフィルタリングとページネーションをサポートしています:

フィルタリングオプション:

  • caseSensitive (bool): 型/メンバー名の大文字小文字を区別するマッチング

  • nameContains (string): メンバー名の部分一致によるフィルタリング

  • hasAttributeContains (string): 属性型の部分一致によるフィルタリング

  • includePublic / includeNonPublic (bool): 可視性によるフィルタリング

  • includeStatic / includeInstance (bool): メンバータイプによるフィルタリング

ページネーション:

  • skip / take (int): 標準的なオフセットページネーション

  • maxItems (int): リクエストごとの最大結果数

  • continuationToken (string): 大規模データセット向けのトークンベースのページネーション

  • sortBy / sortOrder (string): 名前/アクセス権による昇順/降順のソート

型の解決:

  • 完全修飾名 (Namespace.Type)、単純名 (Type)、ネストされた型 (Outer+Inner) をサポート

  • 大文字小文字の区別は caseSensitive パラメーターで制御

  • あいまいな型名に対する自動フォールバック解決

レスポンススキーマ

すべてのツールは安定したJSONエンベロープを返します:

{ "kind": "type.list|member.methods|...", "version": "1.0.0", "data": { /* result */ } }

エラーは一貫した形式を使用します:

{ "kind": "error", "version": "1.0.0", "code": "AssemblyNotFound|TypeNotFound|InvalidArgument|InternalError", "message": "...", "details": { } }

Common error codes include `AssemblyNotFound`, `TypeNotFound`, `MemberNotFound`, `InvalidArgument`, and `InternalError`.

コントリビューション

コントリビューションを歓迎します。このリポジトリには、最新のC#設定(ファイルスコープの名前空間、式形式のメンバー、4スペースのインデント)を含む.editorconfigが含まれています。

コミットメッセージの形式

このプロジェクトは、自動チェンジログ生成のためにConventional Commitsを使用しています。すべてのコミットは以下の形式に従う必要があります:

type(scope): description

有効なタイプ:

  • feat - 新機能

  • fix - バグ修正

  • docs - ドキュメントのみの変更

  • style - コードスタイルの変更(フォーマット、セミコロンなど)

  • refactor - バグ修正でも新機能追加でもないコード変更

  • perf - パフォーマンス向上

  • test - テストの追加または修正

  • build - ビルドシステムや依存関係の変更

  • ci - CI設定の変更

  • chore - ソースやテストファイルを変更しないその他の変更

  • revert - 前のコミットの取り消し

例:

git commit -m "feat(tools): add new assembly analysis tool"
git commit -m "fix: resolve null reference in type loader"
git commit -m "docs(readme): update installation instructions"

開発環境のセットアップ

# Restore .NET tools (versionize, husky)
dotnet tool restore

# Install git hooks for commit validation
dotnet husky install

ガイドライン

  • 変更は小さく、焦点を絞ってください。新しい動作にはユニットテストを追加してください。

  • ツールを追加する際は、レスポンスエンベロープとエラーコードの規約に従ってください。

  • PRを開く前に、ローカルで dotnet builddotnet test を実行してください。

リリースの作成

メンテナーは以下を使用してリリースを作成できます:

# Restore tools if not already done
dotnet tool restore

# Preview what will change
dotnet versionize --dry-run

# Create release (bumps version, updates changelog, creates git tag)
dotnet versionize

# Push changes and tag to trigger release workflow
git push --follow-tags

リリースワークフローは自動的に以下を行います:

  1. プロジェクトのビルドとテスト

  2. チェンジログノートを含むGitHubリリースの作成

  3. NuGetパッケージの公開

  4. 新しいバージョンで server.json を更新

MCPレジストリ

mcp-name: io.github.jcucci/dotnet-sherlock-mcp

ライセンス

Sherlock MCP for .NETはMIT Licenseの下でライセンスされています。

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
7dResponse time
8wRelease cycle
3Releases (12mo)
Issues opened vs closed

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jcucci/dotnet-sherlock-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server