Roslyn Code Lens について
Roslyn CodeLens は Roslyn ベースの MCP サーバーで、AI エージェントに .NET コードベースの意味的な理解を提供します。型階層、コールグラフ、DI 登録、診断、リファクタリングなどを扱い、.NET 開発者を主な対象としています。
主な機能
- 01型階層と実装の検索
- 02呼び出し元と参照の分析
- 03DI 登録のスキャン
- 04コンパイラ診断とコード修正
- 05テストの検出とテストスケルトンの生成
- 06ソリューション全体のシンボル名変更とシグネチャ変更
活用シーン
- 01.NET ソリューションの依存関係と呼び出し関係の把握
- 02リファクタリングや破壊的な API 変更の影響範囲の評価
- 03貼り付けたスタックトレースからソースコードの位置を特定
MCP 対応
MCP サーバーとして、find_references、rename_symbol、get_diagnostics など C# の意味解析およびリファクタリングのツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Roslyn CodeLens MCP サーバー
Roslyn ベースの MCP サーバーです。AI エージェントに、.NET コードベースの型階層、呼び出しグラフ、DI 登録、診断、リファクタリングなどに関する深いセマンティックな理解を提供します。
ホステッドデプロイ
Fronteir AI でホステッドデプロイを利用できます。
機能
- find_implementations — インターフェイスを実装する、またはクラスを継承するすべてのクラス/構造体を検索します
- find_callers — メソッド、プロパティ、コンストラクターのすべての呼び出し箇所を検索します
- find_event_subscribers — イベントシンボルに対するすべての += / -= 箇所を、解決されたハンドラーと登録/解除タグとともに取得します
- find_tests_for_symbol — 本番シンボルをテストする xUnit/NUnit/MSTest のメソッドを一覧表示します。ヘルパーを経由する推移的な検索はオプトインです
- get_test_summary — プロジェクトごとに、テストメソッドをフレームワーク、属性の種類、データ行数、場所、参照される本番シンボルとともに一覧表示します
- find_uncovered_symbols — テストから推移的に到達されないパブリックメソッドとプロパティを、優先順位付けのため循環的複雑度順に並べて表示します
- generate_test_skeleton — メソッドまたは型のコンパイル可能なテストクラスのスケルトンをテキストとして出力します。xUnit/NUnit/MSTest を自動検出し、コンストラクターの依存関係を TodoNotes として示し、推奨ファイルパスを返します。
find_uncovered_symbolsと連携して一連の作業を完了できます - get_type_hierarchy — 基底クラス、インターフェイス、派生型をたどります
- get_di_registrations — DI サービス登録を検索します。ジェネリック形式(
AddSingleton<IFoo, Foo>())、単一ジェネリック形式、typeofペア形式、ファクトリーラムダ形式を読み取ります - get_instantiation_options — 「この型をどう構築すればよいですか?」を1回の呼び出しで確認します。完全なパラメーター詳細を含むコンストラクター、ソリューション内の任意の場所(別のファクトリー型を含む)で宣言された静的ファクトリーメソッド、DI 登録、
requiredメンバーを取得します。fromProjectを渡すと、そのプロジェクトから各選択肢に実際にアクセスできるかを確認できます。InternalsVisibleToも考慮するため、「テストプロジェクトからこの内部コンストラクターを呼び出せるか」という疑問にも答えます - get_project_dependencies — プロジェクト参照グラフを取得します
- get_symbol_context — 任意の型のコンテキストを一括取得します
- get_public_api_surface — 本番プロジェクトにあるすべてのパブリック/プロテクト型とメンバーを列挙します。API レビューや破壊的変更のベースラインに適した、フラットで決定的な順序のリストを返します
- find_breaking_changes — 現在の API とベースライン JSON または DLL を比較し、削除されたメンバー、種類の変更、アクセシビリティの変更を、Breaking/NonBreaking の重大度とともに報告します
- find_reflection_usage — 動的/リフレクションベースの使用箇所を検出します
- get_exception_flow — メソッドから送出される可能性のある例外を調べます。深さに上限を設けて呼び出し先をたどり、すべての例外をそれぞれの外側の try/catch を通じて伝播させ、最終的に外部へ送出される例外とその伝播経路を報告します。メタデータの呼び出し先については、ドキュメントに記載された例外も対象になります
- find_throw_sites — 例外型が送出されるすべての箇所を検索します。派生型を含めることもでき、再スローにはフラグを付けます
- find_catch_blocks — ある型を捕捉するすべての catch を検索します。基底クラス節を通じて検索することもでき、フィルター付き、再スローする、空(握りつぶす)ハンドラーにフラグを付けます
- find_references — 任意のシンボル(型、メソッド、プロパティ、フィールド、イベント)へのすべての参照を検索します。各参照には種類(
read、write、readwrite、invocation、method_group、object_creation、cast、type_check、typeof、base_type、type_constraint、type_argument、declaration、attribute、nameof、xml_doc)をタグ付けし、列番号とともに発生箇所ごとに報告します。kindsを使ってサーバー側で絞り込めます(例:変更箇所には["write","readwrite"]) - go_to_definition — シンボルが定義されているソースファイルと行を検索します
- get_method_source — 名前を指定した1つ以上のメンバーについて、宣言のソース全体(XML ドキュメント、属性、シグネチャ、本体を含む元のフォーマット)を1回の呼び出しで取得します。メソッド(すべてのオーバーロード)、コンストラクター、プロパティ、インデクサー、フィールド、イベントが対象です。項目ごとのステータス(
ok/notFound/ambiguous/metadata/unsupportedKind)を返すため、一括処理全体が失敗することはありません - resolve_stack_trace — 貼り付けられた .NET スタックトレースをファイル/行/シンボルに対応付け、コンパイラーによる名前の難読化(async/イテレーターのステートマシン、ラムダ、ローカル関数、ジェネリックのアリティ)を元に戻します。内部例外の連鎖、ログのプレフィックス付き行、Demystifier のトレースに対応します
- get_diagnostics — コンパイルエラー、警告、Roslyn アナライザーの診断を一覧表示します
- get_code_fixes — 任意の診断に対して利用可能なコード修正を、構造化されたテキスト編集として取得します
- search_symbols — 名前によるワークスペースシンボルのあいまい検索を行います
- get_nuget_dependencies — プロジェクトごとの NuGet パッケージ参照を一覧表示します
- find_attribute_usages — 特定の属性が付与された型とメンバーを検索します
- find_obsolete_usage — すべての
[Obsolete]呼び出し箇所を、非推奨メッセージと重大度ごとにグループ化して表示します。エラーを先に表示し、移行計画に役立てます - find_circular_dependencies — プロジェクトまたは名前空間の依存関係グラフにある循環を検出します
- check_architecture — 指定したレイヤリングルール(
forbidとallowOnly)を、usingディレクティブではなく実際のセマンティックな型グラフに適用して検証します。違反は境界ごとにグループ化され、参照数と例となる箇所が表示されます - get_complexity_metrics — メンバー(メソッド、コンストラクター、プロパティ、インデクサー、演算子)ごとの循環的複雑度、認知的複雑度、最大ネスト深度を取得します。循環的複雑度は経路を数え、1から始まります。認知的複雑度はコードの追いやすさを測り、0から始まります。
metricでしきい値と並べ替えに使う指標を選択できます。リファクタリングの優先順位付けには認知的複雑度が、テスト予算の判断には循環的複雑度がより適しています - find_naming_violations — .NET の命名規則への準拠を確認します
- find_async_violations — 同期処理からの非同期処理呼び出し、
async voidの誤用、await の欠落、ファイア・アンド・フォーゲットのタスクを検出し、違反ごとに重大度を報告します - find_disposable_misuse —
using/await usingで囲まれていない、戻り値として返されていない、またはフィールドに代入されていないIDisposable/IAsyncDisposableインスタンスを検出します。違反ごとにエラー/警告の重大度を示します - find_large_classes — メンバー数または行数が多すぎる型を検索します
- find_god_objects — サイズが大きく、名前空間をまたぐ結合度も高い型を検索します。SRP 違反の検出では、単純なサイズよりも明確な指標になります
- find_unused_symbols — 参照解析によってデッドコードを検出します。テストメソッド(xUnit/NUnit/MSTest)、MCP ツールのエントリポイント、ソースジェネレーターの出力、MEF によって合成されるサービス、相互運用レイアウトのフィールドを自動的に除外します。フィルター件数は
summary.filteredOutに表示されます - get_project_health — プロジェクトごとに7つの品質指標(複雑度、大規模クラス、命名、未使用シンボル、リフレクション、非同期処理の違反、破棄可能オブジェクトの誤用)を集約して監査し、件数と上位 N 件の問題箇所をインラインで表示します
- get_source_generators — プロジェクトごとにソースジェネレーターとその出力を一覧表示します
- get_generated_code — ソースジェネレーターによって生成されたソースコードを調べます
- inspect_external_assembly — ソースが非公開の NuGet パッケージや参照アセンブリから、型、メンバー、XML ドキュメントを確認します
- peek_il — ソースが非公開のアセンブリや生成されたアセンブリにある任意のメソッドを、ilasm 形式の IL バイトコードに逆コンパイルします
- get_code_actions — 任意の位置で利用できるリファクタリングや修正(メソッド抽出、名前変更、変数のインライン化など)を検出します
- apply_code_action — タイトルで任意の Roslyn リファクタリングを実行します。プレビューモードでは、ディスクに書き込む前に差分を返します
- rename_symbol — Roslyn の Renamer を使って、型またはメンバーの名前をソリューション全体で安全に変更します。プレビューモード、競合レポート、ディスク上の編集内容に対する鮮度チェックに対応します
- change_signature — メソッドのパラメーターを追加、削除、並べ替え、すべての呼び出し箇所を書き換えます。名前付き/省略可能な引数、
params、拡張メソッドに対応し、連動して変更されたオーバーライドとインターフェイス実装を報告します - list_solutions — 読み込み済みのすべてのソリューションと、現在アクティブなソリューションを一覧表示します
- set_active_solution — 部分名を指定してアクティブなソリューションを切り替えます(以降のすべてのツールはそのソリューションに対して動作します)
- load_solution — 実行時に追加の .sln/.slnx を読み込み、アクティブなソリューションに設定します
- unload_solution — 読み込み済みのソリューションをアンロードしてメモリを解放します
- rebuild_solution — 解析対象のソリューションを強制的に完全再読み込みします
- start_background_task — 実行時間の長いツール(現在は
rebuild_solution)をバックグラウンドで実行するようキューに追加し、ポーリング用のtaskIdを返します - get_task_status —
taskIdを指定して、バックグラウンドタスクの現在のステータス、結果、またはエラーを取得します - list_running_tasks — 実行中のバックグラウンドタスクと、過去5分以内に完了したタスクを一覧表示します
- trust_solution — Roslyn アナライザーを実行するソリューションを許可します(
includeAnalyzers: trueを指定してget_diagnosticsを呼び出す前に必要です) - list_trusted_paths — 永続的な信頼ストアと、セッション中に信頼されたソリューションを確認します
- revoke_trust — ソリューションパスに対して以前に付与した信頼を取り消します
- analyze_data_flow — ステートメント範囲内の変数の読み取り/書き込み/キャプチャを解析します(宣言済み、読み取り、書き込み、常に代入済み、キャプチャ済み、入力/出力される値)
- analyze_control_flow — ステートメント範囲内の分岐/ループの到達可能性を解析します(開始/終了地点の到達可能性、return ステートメント、終了地点)
- analyze_change_impact — シンボルを変更した際に影響を受けるすべてのファイル、プロジェクト、呼び出し箇所を表示します。find_references と find_callers を組み合わせます
- get_type_overview — 複合ツールです。型のコンテキスト、階層、ファイルの診断を1回の呼び出しで取得します
- analyze_method — 複合ツールです。メソッドのシグネチャ、呼び出し元、呼び出し先を1回の呼び出しで取得します
- get_overloads — メソッド/コンストラクターのすべてのオーバーロード(ソースとメタデータ)を、完全なパラメーターと修飾子の詳細とともに1回の呼び出しで取得します
- get_extension_methods — ソリューションと参照アセンブリ(LINQ も対象になります)から、ある型に適用可能なすべての拡張メンバーを取得します。配列、null 許容型、タプルも含み、Roslyn 独自の適用規則を使用します。プロパティや静的メンバーを含む C# 14 の
extensionブロックにも対応します - get_operators — 型にあるすべてのユーザー定義演算子と変換演算子(ソースとメタデータ)を、種類、シグネチャ、パラメーター、ソース位置とともに取得します。合成されたレコードの等値演算子と .NET 7 以降の checked バリアントも含まれます
- get_call_graph — 循環検出を行い、深さに上限を設けて、メソッドの呼び出し元/呼び出し先の推移的なグラフを取得します
- get_file_overview — 複合ツールです。ファイル内で定義された型と、ファイル単位の診断を1回の呼び出しで取得します
レスポンス形式
リストを返すすべてのツールは、結果を統一されたエンベロープでラップします。
{
"items": [ ... ],
"totalCount": 142,
"truncated": false,
"limit": 500,
"summary": { ... }
}
truncated が true の場合、項目はツール固有の自然な並べ替え順(重要度順、深刻度順、プロジェクト別など)で上位 N 件になります。通常はそれで十分です。欠落した後続の項目がタスクに必要な場合にのみ、limit を増やしてください。
現在 summary を含むツールは次のとおりです。
get_diagnostics—{ error, warning, info, hidden }の件数find_references—{ byProject: { name: count }, byKind: { kind: count } }find_callers、find_attribute_usages—{ byProject: { name: count } }search_symbols、find_reflection_usage—{ byKind: {...} }find_unused_symbols—{ byKind, filteredOut: { testMethod, testContainer, mcpTool, generated, composition, interop } }find_naming_violations—{ byRule: {...} }get_complexity_metrics—{ max, avg, overThreshold, maxCognitive }(最初の 3 つは選択したmetricを示します)
単一オブジェクトを返すツール(get_type_overview、get_symbol_context、apply_code_action など)は、固有の形式で直接結果を返します。エンベロープでラップされるのは、リストを返すツールだけです。
エラーレスポンス
ツールが処理を続行できない場合(シンボルが解決されない、ソリューションが信頼されていない、ファイルが見つからない、一致候補が複数あるなど)、構造化された JSON 本文を含む isError: true のコンテンツブロックを返します。
{
"code": "SolutionNotTrusted",
"message": "Solution 'Foo.sln' is not trusted for analyzer execution. ...",
"details": { "solutionPath": "C:\\Foo.sln" }
}
エラーコード(各エラーを処理するには code を判定してください):
SymbolNotFound— 型、メソッド、またはプロパティを解決できませんでした。SolutionNotTrusted—get_diagnosticsまたはget_code_fixesでアナライザーが要求されましたが、trust_solutionによってソリューションが認証されていません。AmbiguousMatch—set_active_solution/unload_solutionで複数のソリューションが一致しました。details.matchesに一致したソリューションが列挙されます。FileNotFound— ファイルパスまたはベースラインが存在しないか、読み込まれたプロジェクトに含まれていません。ProjectNotFound— ソリューション名が、読み込まれたソリューションのいずれにも一致しませんでした。InvalidArgument— 呼び出し元から渡された入力の形式が不正であるか、サポート対象外、または範囲外です。Internal— 上記に該当しない予期しないエラーです。messageに根本原因となった例外のテキストが含まれます。
キャンセル: MCP フレームワークのネイティブなキャンセルが有効です。tools/call リクエストの実行中にキャンセルすると、処理が終了します。時間のかかるツール(アナライザーを使用する get_diagnostics、get_code_actions、apply_code_action、get_code_fixes)は、ホットループの境界でトークンを確認します。
外部アセンブリ
メタデータ由来のシンボル(NuGet パッケージや参照アセンブリのシンボル)は、第一級の要素として扱われます。
- ティア 1 — ナビゲーション(
find_references、find_callers、find_implementations):ソースが公開されていない型名とメンバー名を受け付けます。アセンブリのメタデータから解決し、ソースコード上の使用箇所をすべて報告します。 - ティア 2 — 調査(
inspect_external_assembly):逆コンパイルせずに、参照先の任意のアセンブリから名前空間、型、メンバー、XML ドキュメントコメントを参照できます。 - ティア 3 — IL(
peek_il):ICSharpCode.Decompiler を使って特定のメソッドを注釈付きの ilasm 形式の IL に逆コンパイルします。NuGet ライブラリの内部の仕組みを理解するのに役立ちます。
位置を返す結果には、手書きのコードとソースが公開されていないコードまたは生成された出力を区別するため、Origin フィールド(source または metadata)と IsGenerated フラグが含まれます。
ランタイム構成
ROSLYN_CODELENS_OPEN_PROJECT_TIMEOUT_SECONDS— プロジェクトごとの MSBuild 読み込みタイムアウト(デフォルトは300)。ワークスペースを開く際にプロジェクトがこの時間を超えると、kind: "Timeout"のSkippedProjectsエントリとして記録され、ソリューションの残りの部分は引き続き読み込まれます。レガシーまたは不正なプロジェクトによってBuildHost-net472サブプロセスが停止する場合に役立ちます。
セキュリティ:信頼モデル
get_diagnostics と get_code_fixes は、プロセス内で実行される DLL である Roslyn アナライザーを読み込むことがあります。信頼できないアナライザーが自動的に実行されないよう、このサーバーでは VS/Rider 形式の信頼モデルを採用しています。
- 起動時に CLI で指定したソリューションは、現在のセッションで自動的に信頼されます。
- その他のソリューションは、
trust_solutionMCP ツールを使って明示的に信頼する必要があります。 - アナライザー DLLは、ユーザーの NuGet グローバルパッケージフォルダー、dotnet SDK のインストールディレクトリ、またはソリューション自身の
bin/objに配置されている必要があります。それ以外のパスはスキップされます。
信頼状態を確認および管理するには、list_trusted_paths ツールと revoke_trust ツールを使用してください。永続的な信頼状態は %APPDATA%\roslyn-codelens\trust.json に保存されます。
脅威モデルの全容については、SECURITY.md をご覧ください。
クイックスタート
npx(任意の MCP クライアント)
{
"mcpServers": {
"roslyn-codelens": {
"type": "stdio",
"command": "npx",
"args": ["-y", "roslyn-codelens-mcp"]
}
}
}
npm パッケージにはサーバーコードは含まれていません。これは、対応するバージョンの RoslynCodeLens.Mcp
.NET グローバルツールをインストールして実行するランチャーです。そのため、.NET 10 SDK が PATH 上に必要です。
2 回目以降の起動ではインストールが完全に省略され、オフラインで動作します。
VS Code/Visual Studio(dnx 経由)
MCP 設定(.vscode/mcp.json または VS の設定)に追加します。
{
"servers": {
"roslyn-codelens": {
"type": "stdio",
"command": "dnx",
"args": ["RoslynCodeLens.Mcp", "--yes"]
}
}
}
Claude Code プラグイン
claude install gh:MarcelRoozekrans/roslyn-codelens-mcp
このプラグインに必要なのは .NET 10 SDK だけです。プラグインのバージョンに固定した dnx 経由でサーバーを実行するため、グローバルツールのインストールや更新は不要です。
.NET グローバルツール
dotnet tool install -g RoslynCodeLens.Mcp
続いて、MCP クライアントの設定に追加します。
{
"mcpServers": {
"roslyn-codelens": {
"command": "roslyn-codelens-mcp",
"args": [],
"transport": "stdio"
}
}
}
Docker
ホストに .NET SDK がなくても実行でき、ソリューションは /workspace にバインドマウントされます。
docker build -t roslyn-codelens-mcp .
docker run -i --rm -v "$PWD:/workspace" roslyn-codelens-mcp
MSBuildWorkspace が参照を解決できるよう、マウントしたソリューションは復元済みである必要があります。また、ツールの出力にはホスト側ではなくコンテナー内のパスが表示されます。詳しくは
docs/site/docs/getting-started/docker.md をご覧ください。
使い方
サーバーは、現在のディレクトリから上位へたどって .sln ファイルを自動的に検出します。1 つ以上のソリューションパスを直接渡すこともできます。
# Single solution
roslyn-codelens-mcp /path/to/MySolution.sln
# Multiple solutions — switch between them with set_active_solution
roslyn-codelens-mcp /path/to/A.sln /path/to/B.sln
複数のソリューションが読み込まれている場合は、list_solutions を使って利用可能なソリューションを確認し、set_active_solution("B") でコンテキストを切り替えてください。デフォルトでは最初のパスがアクティブになります。
HTTP トランスポート
デフォルトでは、サーバーは stdio を使用します。--http を渡すと、代わりに同じツールを
ストリーミング可能な HTTP 経由で公開できます。Roslyn ワークスペースをウォーム状態に保ち、クライアントごとの起動コストをなくせるため、複数のローカル MCP クライアントで共有する、長時間稼働するサーバーに便利です。
roslyn-codelens-mcp /path/to/MySolution.sln --http # http://127.0.0.1:3001
roslyn-codelens-mcp /path/to/MySolution.sln --http --port 8080
{
"mcpServers": {
"roslyn-codelens": {
"type": "http",
"url": "http://127.0.0.1:3001"
}
}
}
HTTP エンドポイントは 127.0.0.1 のみで待ち受けるよう設定されており、単一ユーザーによるローカル利用を想定しています。接続中のすべてのクライアントで同じソリューション状態を共有し(set_active_solution の変更は全員に反映されます)、認証はありません。--host で待ち受け先を広げることはできますが、サーバーは警告を表示します。ツールはソースファイルを読み取ったり変更したりできるため、完全に信頼できるネットワークでのみ実行してください。
パフォーマンス
すべての型検索では、事前構築された逆継承マップ、メンバーインデックス、属性インデックスを使用し、O(1) でアクセスします。i9-12900HK と .NET 10.0.7 でのベンチマーク結果:
| ツール | レイテンシ | メモリ |
|---|---|---|
go_to_definition | 2.1 µs | 576 B |
find_implementations | 2.5 µs | 720 B |
get_project_dependencies | 2.8 µs | 1.5 KB |
get_type_hierarchy | 3.5 µs | 1.3 KB |
find_circular_dependencies | 3.7 µs | 2.7 KB |
get_symbol_context | 4.1 µs | 1.0 KB |
get_source_generators | 16 µs | 23 KB |
analyze_data_flow | 19 µs | 1.6 KB |
find_attribute_usages | 72 µs | 904 B |
get_generated_code | 78 µs | 24 KB |
analyze_control_flow | 115 µs | 14 KB |
inspect_external_assembly(summary) | 159 µs | 35 KB |
find_large_classes | 265 µs | 3.5 KB |
get_di_registrations | 478 µs | 16 KB |
inspect_external_assembly(namespace) | 564 µs | 259 KB |
find_reflection_usage | 705 µs | 19 KB |
get_complexity_metrics | 781 µs | 25 KB |
get_code_actions | 792 µs | 54 KB |
get_file_overview | 797 µs | 101 KB |
get_diagnostics | 822 µs | 99 KB |
get_nuget_dependencies | 849 µs | 48 KB |
get_public_api_surface | 885 µs | 247 KB |
get_type_overview | 1.1 ms | 104 KB |
peek_il | 1.1 ms | 34 KB |
find_disposable_misuse | 3.5 ms | 286 KB |
find_uncovered_symbols | 3.8 ms | 224 KB |
search_symbols | 3.9 ms | 557 KB |
analyze_method | 5.8 ms | 333 KB |
find_async_violations | 7.0 ms | 335 KB |
find_tests_for_symbol(direct) | 8.4 ms | 396 KB |
find_callers | 10 ms | 337 KB |
find_tests_for_symbol(transitive) | 12 ms | 399 KB |
find_naming_violations | 15 ms | 788 KB |
find_unused_symbols | 23 ms | 1.0 MB |
find_references | 28 ms | 1013 KB |
analyze_change_impact | 33 ms | 1.3 MB |
| ソリューションの読み込み(一度のみ) | ~4.1 s | 16 MB |
ホットリロード
サーバーは .cs、.csproj、.props、.targets ファイルの変更を監視します。変更が検出されると、影響を受けるプロジェクトは次回のツールクエリ時に遅延再コンパイルされます。再コンパイルされるのは古くなったプロジェクトとその下流の依存プロジェクトのみで、ソリューション全体ではありません。
位置を返すツールには IsGenerated フラグが含まれ、ソースジェネレーターの出力と手書きのコードを区別できます。
要件
- .NET 10 SDK
- コンパイル可能なプロジェクトを含む .NET ソリューション
プロジェクトの互換性
サーバーは、.NET SDK ランタイムで MSBuildWorkspace が読み込めるすべてのプロジェクトを解析します。
サポート対象: SDK スタイルのプロジェクト(<Project Sdk="...">)、あらゆるターゲットフレームワーク(net48、net6.0、net8.0、net10.0 など)。.NET Framework ターゲットも、csproj が SDK スタイルの形式を使用していれば問題なく動作します。
スキップ対象(クラッシュせず、警告が表示されます): SDK スタイルではないレガシープロジェクト(<Project ToolsVersion="..." xmlns="http://schemas.microsoft.com/developer/msbuild/2003">。通常は、以前のバージョンの Visual Studio で作成された .NET Framework プロジェクト)。これらは Visual Studio に付属する .NET Framework MSBuild からの Microsoft.Common.props のインポートに依存していますが、.NET SDK の MSBuild ランタイムでは利用できません。
ソリューションにレガシープロジェクトが含まれている場合、サーバーは次の処理を行います。
- SDK スタイルのプロジェクトをすべて通常どおり読み込みます。それらのプロジェクトではすべてのツールが使用できます。
- 各レガシープロジェクトをスキップし、
LoadedSolution.SkippedProjectsに記録します。 - スキップしたプロジェクトの一覧を
list_solutions(各SolutionInfoのSkippedProjects配列)とload_solutionの戻りメッセージに表示します。各項目にはプロジェクト名、種類(Legacy)、理由が含まれます。
レガシープロジェクトを解析するには、 SDK スタイルの形式に変換するか(Microsoft の移行ガイドを参照)、Visual Studio Developer Command Prompt からソリューションを開き、完全な Visual Studio MSBuild が PATH に含まれるようにしてください。
開発
dotnet build
dotnet test
dotnet run --project benchmarks/RoslynCodeLens.Benchmarks -c Release
サードパーティライセンス
- ICSharpCode.Decompiler — MITライセンス(v8以降)。
peek_ilツールでのIL逆アセンブルに使用しています。
ファミリー
Roslyn CodeLens MCPは、AI関連の.NETプロジェクトからなる小さなファミリーの一員です。
- AI.Sentinel:
IChatClient用のセキュリティ監視ミドルウェアです。プロンプトインジェクション、ハルシネーション、PIIを検出し、監査証跡を記録します。 - Minos.NET: 型付きでソース生成される意思決定用の質問と、調整済みの回答を提供します。
- Rag.NET: Microsoft.Extensions.AI 上に構築されたモジュール式の検索拡張生成パイプラインです。
- MemoryLens MCP: MCPを通じて、オンデマンドの.NETメモリプロファイリングと、AIが実行可能な修正を提供します。
ZeroAlloc上に構築
Roslyn CodeLens MCPは、実行時にリフレクションを使用しないソースジェネレーターおよびアナライザーである、以下のZeroAllocライブラリを使用しています。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。