ILens について
ILensは、コンパイル済み.NETアセンブリを調べるWindows向けMCPサーバーです。Agentや開発者向けに、メタデータの検索、C#への逆コンパイル、参照関係の分析を絞り込んで提供します。
主な機能
- 01型とメンバーの一覧表示
- 02名前によるメソッド検索
- 03個別メソッドの逆コンパイル
- 04呼び出し元、オーバーライド、実装、属性使用の分析
- 05アセンブリのアクセス先を許可ディレクトリに制限
活用シーン
- 01名前空間の公開型を確認
- 02メソッド本体を含めずクラスAPIを確認
- 03メソッドの呼び出し元や実装を追跡
- 04アセンブリビルド間の差分を調査
MCP 対応
ILensは、型やメソッドの検索、逆コンパイル、参照関係の分析を行うツールをMCPクライアントに公開します。アセンブリのパスは設定済みの許可ルート内に制限されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ILens
AI エージェントがコンパイル済みの .NET アセンブリを調査できる MCP サーバーです。型の一覧表示、メソッドの逆コンパイル、相互参照分析を実行でき、ファイル全体のダンプにトークンを浪費することはありません。
理由
AI エージェントがコンパイル済みの .NET アセンブリを調査する際の標準的な代替手段は、ildasm(IL ダンプ)または ilspycmd(C# 全体の逆コンパイル)をシェルから実行することです。どちらもファイル全体をテキストとして出力し、その出力は以降の各ターンで入力トークンとしてエージェントのコンテキストに残るため、1 つのクラスを調べるだけで、すぐに数千トークンを消費します。
| 作業 | ilspycmd のコスト | ILens ツール | ILens のコスト |
|---|---|---|---|
| 名前空間内のパブリック型を一覧表示する | 1,041,476 tokens | find_types | 1,109 tokens |
| 中規模クラス 1 つの API サーフェスを確認する | 1,041,476 tokens | list_members | 562 tokens |
| 指定したメソッドを公開する型を見つける | 1,041,476 tokens | find_methods | 526 tokens |
2026-10-31 に ICSharpCode.Decompiler.dll 9.1.0.7988 を対象に測定。トークン数は文字数を 4 で割った値であり、実際のトークナイザーによる計測ではありません。
ILens はアセンブリの調査を、範囲を限定した的確な検索に変えます。名前空間内の型の一覧表示、メソッド本体を含めずに 1 つの型のメンバーを一覧表示、名前によるメソッドの検索、単一のメソッド本体の逆コンパイル、相互参照分析(呼び出し元、オーバーライド、実装、拡張メソッド、属性の使用状況)を実行できます。各呼び出しは対象を絞った応答を返すため、常時利用可能なツールとして登録しても低コストです。
対象範囲
ILens は C# アセンブリの調査用に構築されており、出力も C# です。メタデータ駆動のツール(find_types、find_methods、list_members、analyze)は言語に依存しないメタデータを読み取るため、あらゆる .NET 言語で作成されたアセンブリに対応します。decompile、search_code、および analyze の call_sites 種別は常に C# を出力します。F#、VB.NET、または C++/CLI からコンパイルされたアセンブリでも実行できますが、C# に相当する構文がない要素は忠実に表現されない場合があります。
ILSpy を基盤に構築
ILSpy がなければ、ILens は成り立ちません。逆コンパイラー、アナライザー、ILens が .NET アセンブリについて C# の用語で扱うことを可能にする型システム――これらはいずれも ILens のものではありません。ILSpy チームのものです。ILens がリンクする 2 つのライブラリ、逆コンパイラー本体の ICSharpCode.Decompiler とアナライザー基盤の ICSharpCode.ILSpyX は、10 年以上にわたる丁寧な開発の成果です。率直に言えば、このプロジェクトはその上に載せた薄い MCP シムです。
ILens が存在できるのは、この成果が MIT ライセンスで提供されているからです。ILens が役に立った場合は、ILSpy にスターを付けることをご検討ください。彼らはその評価に値します。
念のためお伝えします。ILens に関するバグ報告や機能リクエストは、ILSpy ではなくILens の課題トラッカーにお寄せください。下流で発生した問題を上流のメンテナーに持ち込まないでください。彼らには彼ら自身の仕事があります。
インストール
システム要件:Windows 10/11、x64。バイナリは自己完結型のため、別途 .NET ランタイムをインストールする必要はありません。
winget install Tadis.ILens
標準的な winget のポータブルインストールです。バイナリは %LOCALAPPDATA%\Microsoft\WinGet\Packages\ 配下に配置され、ilens はユーザーの PATH で自動的に利用可能になります。管理者権限への昇格は不要です。
別のインストーラー、更新方法、インストール時のトラブルシューティングについては、ユーザーガイドをご覧ください。
セットアップ
ステップ 1:サーバーを登録する
プロジェクトのルートにある .mcp.json にエントリーを追加します。インストーラーが ilens を PATH に追加するため、command フィールドではバイナリ名を指定します。フルパスは不要です。
{
"mcpServers": {
"ilens": {
"command": "ilens",
"args": [
"--allow-root", "C:\\path\\to\\dlls"
]
}
}
}
各 --allow-root フラグで、アセンブリを読み込めるディレクトリツリーを追加します。--allow-root フラグを一つも指定しない場合、サーバーはアセンブリを読み込めません。 ツール呼び出しでは、リクエストごとにアセンブリのパスを指定します。サーバーは、そのパスが設定済みルートのいずれかの内側にあることを検証し、パストラバーサル(..)を拒否します。また、シンボリックリンクとジャンクションを解決してから包含関係を再確認し、最も長く使われていないアセンブリを閉じることで、メモリ使用量を上限(デフォルト 200 MB、--max-total-size <MB>)以内に保ちます。
ツール呼び出しでは、調査するアセンブリを指定します。
find_types(assembly="C:\\path\\to\\dlls\\MyApp.dll", namespace="MyApp.Models")
list_allowed_roots ツールを使うと、エージェントがアクセス可能な場所を把握できるよう、設定済みのルートを確認できます。
ご注意 — 初回インストール後は、新しいセッションを開始するだけでなく、アプリを完全に再起動する必要があります。 Windows はプロセスの起動時に PATH を取得するため、
ilensがユーザー PATH に新たに追加された場合(winget による初回のポータブルインストールや、install.ps1の実行時)は、すでに起動している Claude アプリは古い環境を保持します。また、Claude Code はセッション開始時にのみ.mcp.jsonを読み取るため、実行中のセッションには新しいサーバーも登録されません。手順:Claude アプリを完全に終了 → ILens をインストール → Claude アプリを再起動 → 再起動したアプリで新しい Claude Code セッションを開始します。セッションを再開した場合は Claude アプリの再起動後も以前の環境が保持されるため、ilensを見つけられません。以降のwinget upgrade Tadis.ILensでは PATH は変更されないため、新しい Claude Code セッションを開始するだけで構いません。
ステップ 2:サーバーの指示を読み取らないクライアント
クライアントが接続すると、ILens は MCP サーバーの指示を送信します。指示には、ILens の用途、読み取り可能なディレクトリ、各ツールがどの質問に答えるかが記載されています。Claude Code はターミナルでも Claude デスクトップアプリの Code タブでも、各セッションの開始時に指示を読み取るため、Claude Code ではステップ 1 がセットアップのすべてです。
Claude Desktop のチャットはサーバーの指示を読み取りません。そのため、また同様に指示を読み取らない他のクライアントの場合は、クライアントの指示に以下の段落を追加し、<allow-root> を上記で設定したディレクトリに置き換えてください。特定のツール名は含まれていないため、リリースでツール名が変更されたり、ツールが統合されたりしても、そのまま使えます。
## Inspecting .NET assemblies
Assemblies under `<allow-root>` are reachable through the `ilens` MCP server.
Prefer its tools over running `ildasm` or `ilspycmd` in a shell, reading
assembly files directly, or searching the web for source.
プロジェクトの CLAUDE.md やクライアントの指示に、以前の ILens README で貼り付けを求められたブロックがある場合は削除してください。そこには現在存在しないツールが記載されています。サーバーの指示を読み取らないクライアントでは、代わりに上記の段落を使用してください。
詳細リファレンス
この README で説明していない内容は、自己完結型の HTML ユーザーガイドで確認できます。
- ツールごとのリファレンス — すべてのツールとパラメーター(
required/optionalフラグおよび型を含む)、戻り値の形式、エラー条件の完全な一覧 - 別の連携方法 —
claude mcp addCLI コマンド、Claude Desktop の設定 - セキュリティモデル — 強制される制約(
--allow-rootが必須、パストラバーサルなし、ネットワークアクセスなし、メモリ上限 200 MB、読み取り専用)と、強制されない制約 - トラブルシューティング — エラー文字列と考えられる原因の対応表
オンライン版は https://tadis174.github.io/ILens/guide.html で参照できます。または、リリース ZIP に同梱されている guide.html を開いてください。
ソースからビルドする
バイナリを自分でビルドする場合は、以下を実行します。
dotnet build -c Release
dotnet publish -c Release
publish ターゲットは、LICENSE、README.md、guide.html、third-party-licenses/ とともに Build/dist/ILens.exe を生成します。公開前に作業ツリーがクリーンである必要があります。また、Build/doc/guide.html が存在している必要があります(再生成するには、プロジェクトの /doc スキルを実行してください)。
ライセンス
ILens は MIT ライセンス のもとで公開されています。サードパーティの依存関係は third-party-licenses/INDEX.md に記載されており、各リリースにはソースごとのライセンステキストとともに同梱されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。