resharper-cli-mcp について
resharper-cli-mcpはJetBrains ReSharperのコマンドラインツールをMCP サーバーとして提供し、.NETソリューションを検査・クリーンアップするコーディングエージェント向けです。.DotSettingsと.editorconfigに従い、キャッシュ、出力、実行キューも管理します。非公式プロジェクトです。
主な機能
- 01ファイルと重大度別の問題検査
- 02ReSharper設定に沿ったコード整理
- 03検査結果のファイル別表示
- 04ReSharperキャッシュの事前準備と再利用
- 05実行のキューイングと進捗報告
活用シーン
- 01.NETソリューションのコード問題を検出
- 02指定ファイルをプロジェクトのスタイルに整理
- 03重大度で対応する問題を絞り込む
- 04エージェントが検査・設定ガイドを参照
MCP 対応
MCP サーバーとして、コーディングエージェントに`resharper_inspect`、`resharper_cleanup`、キャッシュリセットのツールと、セットアップ・設定ガイドのリソースを提供します。ローカルにインストールされた`jb`を実行します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
resharper-cli-mcp
resharper-cli-mcpは、コーディングエージェント向けにJetBrainsのReSharperコマンドラインツールを実行するMCP サーバーです。resharper_inspectツールはjb inspectcodeを実行して問題を返し、resharper_cleanupはエージェントが指定したファイルに対してjb cleanupcodeを実行します。jbはIDE上のReSharperと同様に、ソリューションの.DotSettingsと.editorconfigを読み込むため、エージェントには同じ重大度とコードスタイルが適用されます。このサーバーは非公式で、JetBrainsとは提携も承認も受けておらず、自分でインストールしたjbを実行します。
jbを直接呼び出さない理由
エージェントはシェルからjbを実行できます。その場合、何千もの問題を含む可能性があるレポートファイル、呼び出しごとに名前を指定する必要があるクリーンアッププロファイル、新しいチェックアウトごとに空のキャッシュが生じます。このサーバーは、それぞれに対処します。
- 問題はファイルごとにまとめたMarkdownとして返され、クライアントの出力上限に収まるまで詳細度を下げて再レンダリングされます。
jb cleanupcodeは、--profileが指定されない限り、ソリューションの設定にかかわらずBuilt-in: Full Cleanupを実行します。サーバーは、ソリューションがSilentCleanupProfileで指定するプロファイルを渡し、クリーンアップで変更されたファイルを報告します。RESHARPER_MCP_PREWARM=offでない限り、クライアントの接続時にキャッシュがウォームアップされます。新しいワークツリーやクローンには、別のチェックアウトのウォーム済みキャッシュが引き継がれます。- 実行はキューに入れられます。そうしないと、同じソリューションで2つ目の
jbを同時実行した際に、独自の空のキャッシュが構築されるためです。 - 実行中は10秒ごとに、経過時間と上限を含む進捗状況が報告されます。
実行時間
シンボルの解決にはソリューション全体のモデルが必要なため、実行のたびにソリューション全体が解析されます。inspectでは、filesは報告対象を絞り込みますが、解析対象は絞り込みません。cleanupでは、書き換えるファイル数も指定されます。また、キャッシュがウォーム済みの場合、cleanupは指定するファイル数が多いほど時間がかかります。ソリューションに対する初回実行ではReSharperのキャッシュが構築され、通常は数分かかります。その後、同じキャッシュを使う実行は数倍速くなります。
各実行には、デフォルトで10分のRESHARPER_MCP_TIMEOUT_SECSによる上限が設定されています。クライアント側のツール呼び出しタイムアウトがキャッシュ未作成時の実行時間より短い場合は、そちらも延長してください。
クイックスタート
このサーバーには、.NET 10 SDK と JetBrains の ReSharper コマンドラインツールが必要です。どちらも無料で、ReSharper ライセンスは不要です。両方とも .NET グローバルツールとしてインストールします。
dotnet tool install -g JetBrains.ReSharper.GlobalTools
dotnet tool install -g Zphil.ReSharperCli
引数を取らないコマンド resharper-cli-mcp を MCP クライアントに登録します。Claude Code の場合は、.mcp.json に追加します。
{
"mcpServers": {
"resharper": {
"command": "resharper-cli-mcp"
}
}
}
このサーバーは、作業ディレクトリにある唯一の .sln または .slnx を使用します。ファイルがない場合、または複数ある場合は、設定の env ブロックで JB_SOLUTION_PATH を設定します。
その他のクライアントでは、エントリを記述する場所と、そのエントリを囲むキーだけが異なります。
| クライアント | エントリを記述する場所 | トップレベルキー |
|---|---|---|
| Visual Studio 2022 17.14+ および 2026 | ソリューションと同じ場所にある .mcp.json | "type": "stdio" を含む servers |
| VS Code | .vscode/mcp.json | "type": "stdio" を含む servers |
| Cursor | .cursor/mcp.json、またはすべてのプロジェクトで使用する場合は ~/.cursor/mcp.json | mcpServers |
| Rider AI Assistant | Settings | Tools | AI Assistant | MCP | mcpServers |
| Junie | .junie/mcp/mcp.json、またはすべてのプロジェクトで使用する場合は ~/.junie/mcp/mcp.json | mcpServers |
| Cline | MCP サーバーの設定画面にある cline_mcp_settings.json | mcpServers |
Rider では、IDE 自体の解析結果がすでにエージェントに提供されるため、resharper_inspect を実行すると、IDE と並行してソリューションが二重に解析されます。そのため、ここでサーバーを使用する唯一の目的は resharper_cleanup です。Rider の MCP ツールではファイルを再フォーマットできますが、クリーンアッププロファイルは実行できません。
Codex CLI の場合は、codex mcp add resharper -- resharper-cli-mcp を実行します。llms-install.md には、各クライアントの設定手順がチェックリスト形式で記載されているため、エージェントに渡してインストールを行わせることができます。
両方のツールをインストールすると、VS Code、Visual Studio、Cursor、LM Studio では、ワンクリックでサーバーを追加できます。
Claude Code プラグインとしてインストールする
このリポジトリは、プラグインが1つ含まれる Claude Code プラグインマーケットプレイスでもあります。
/plugin marketplace add andypgray/resharper-cli-mcp
/plugin install resharper-cli-mcp@resharper-cli-mcp
このプラグインは、特定のリリースに固定した dotnet dnx でサーバーを起動します。claude plugin update resharper-cli-mcp@resharper-cli-mcp を実行すると、固定先が最新リリースに更新されます。.NET 10 SDK と jb は引き続きインストールする必要があります。また、ReSharper のキャッシュはプラグインのデータディレクトリに保存されます。
Claude Desktop 拡張機能としてインストールする
最新リリースから resharper-cli-mcp-<version>.mcpb をダウンロードしてダブルクリックし、解析する .sln または .slnx を ソリューションファイル に設定します。Claude Desktop はリポジトリの外部でサーバーを起動するため、ソリューションを探すための作業ディレクトリがありません。このバンドルに含まれるのはサーバーのみなので、先に .NET 10 ランタイムと ReSharper コマンドラインツールをインストールしてください。実行上限 を設定すると、1回の実行に対する10分の制限を変更できます。
ツール
| ツール | ファイルを変更するか | 内容 |
|---|---|---|
resharper_inspect | いいえ | jb inspectcode を実行し、問題をファイルごとにまとめて返します。 |
resharper_cleanup | はい | 指定されたファイルに対して jb cleanupcode を実行し、ディスク上で変更されたファイルを報告します。 |
resharper_reset_cache | いいえ(キャッシュを削除) | ソリューションの ReSharper キャッシュを削除して次回の実行を初期状態から開始するか、削除されたチェックアウトが残したキャッシュを回収します。 |
resharper_inspect は、ソリューションからの相対パスまたは絶対パスの files グロブと、Suggestion、Warning(デフォルト)、Error のいずれかの severity を受け取ります。severity=Suggestion の場合、応答は次のようになります。
Found 2 issue(s) across 1 file(s):
### /repo/src/HomeController.cs
- **Line 8** [WARNING] `RedundantUsingDirective`: Using directive is not required by the code and can be safely removed.
- **Line 24** [SUGGESTION] `FieldCanBeMadeReadOnly.Local`: Field can be made readonly.
report=Markdown を指定すると、各問題のメッセージが記載されたファイルをシステムの一時ディレクトリに書き込みます。応答にはファイル名が記載され、サーバーは 7 日後にそのファイルを削除します。detail は応答の詳細度を制限し、1 行だけの Minimal まで指定できます。そのため、detail=Minimal report=Markdown を使えば、レガシーソリューションを 1 回の呼び出しで調査できます。
resharper_cleanup はスタイルを変更しますが、動作は変更しません。対象は、書式設定、using ディレクティブ、var のスタイル、修飾子の順序、冗長な修飾子と括弧、波括弧です。profile 引数を指定しない場合は、ソリューションの設定にある SilentCleanupProfile で指定されたプロファイルを使い、それがなければ Built-in: Full Cleanup を使います。Full Cleanup によってレガシーコードが大量に変更される場合は、より範囲を絞ったプロファイルを指定してください。以降のすべての呼び出しでそのプロファイルが使われ、存在を知らないエージェントからの呼び出しにも適用されます。
まだスタイル設定がないコードベースでは、ReSharper の Detect Code Style Settings から始めるか、Rider で Auto-Detect Code Style Rules を使ってください。derive_style_guide プロンプトを使うと、IDE なしでエージェントに同じ作業を進めさせることができます。
設定
クライアント設定の env ブロックに設定します。すべて任意です。JB_ 変数は jb に渡され、RESHARPER_MCP_ 変数はサーバー自体を制御します。
| 変数 | デフォルト | 用途 |
|---|---|---|
JB_SOLUTION_PATH | 検出された値 | 作業ディレクトリにソリューションがない場合、または複数ある場合に使用するソリューションです。solutionPath ツール引数を指定すると、1 回の呼び出しに限りこの値を上書きします。 |
JB_SETTINGS_PATH | なし | ソリューション自体の外部にある .DotSettings ファイルです。ソリューションとすべてのプロジェクトの設定より上位の Custom レイヤーとしてマウントされます。 |
JB_CACHE_HOME | ~/.jb-cache | ReSharper のキャッシュディレクトリです。 |
JB_EXTENSIONS | なし | 読み込む ReSharper プラグイン ID をセミコロン区切りで指定します。 |
JB_EXTENSION_SOURCE | jb 自身のもの | これらのプラグイン用のカスタム NuGet ソースです。 |
RESHARPER_MCP_TIMEOUT_SECS | 600 | 1 回の jb 実行と、すでに実行中の処理を待つ時間の上限(秒)です。60~86,400 の範囲に制限されます。 |
RESHARPER_MCP_PREWARM | on | off にすると、クライアント接続時のキャッシュの事前ウォームアップが無効になります。 |
RESHARPER_MCP_LOG_LEVEL | Warning | ローテーションするファイルログのレベルです。Verbose、Debug、Information、Warning、Error、Fatal を指定できます。Microsoft の名称である Trace と Critical も使用でき、認識されない値は Warning にフォールバックします。 |
MAX_MCP_OUTPUT_TOKENS | 25,000 文字 | レスポンスをこのサイズに収めるために削減する、クライアント出力の上限です。トークンあたり 2.5 文字として計算します。 |
ソリューションは、solutionPath 引数、次に JB_SOLUTION_PATH、その次に作業ディレクトリ内の .sln または .slnx ファイル 1 つの順に選択されます。親ディレクトリへの探索は行いません。ログは Windows では %LOCALAPPDATA%\Zphil.ReSharperCli\logs に日次でローテーションされ、それ以外のプラットフォームでは同等の場所に保存されます。
さらに詳しいガイドが 2 つあり、サーバーはエージェントが読めるように、どちらも MCP リソースとして提供します。セットアップガイド(resharper://guides/setup)では、検出、キャッシュ、実行時間、出力制限を説明しています。設定ガイド(resharper://guides/configuration)では、設定レイヤー、クリーンアッププロファイル、意図したスタイルが元に戻されないようにする方法を説明しています。
クリーンアップを促すフック
タスクの最後に一度だけ行うクリーンアップは、エージェントが忘れがちです。この Claude Code の PostToolUse フックは、.cs または .razor を編集するたびに、エージェントのコンテキストに 1 行のリマインダーを追加します。コードの編集やツールの呼び出しは行わないため、クリーンアップをいつ実行するかは引き続きエージェントが判断します。.claude/settings.json に追加してください。このコマンドには POSIX シェルが必要です。Windows では Git Bash を使用します。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "grep -qiE '\"file_path\"[[:space:]]*:[[:space:]]*\"[^\"]*\\.(cs|razor)\"' && printf '%s' '{\"hookSpecificOutput\":{\"hookEventName\":\"PostToolUse\",\"additionalContext\":\"When this task is done, batch every edited .cs/.razor file into one resharper_cleanup call.\"}}' || true"
}
]
}
]
}
}
プライバシーポリシー
resharper-cli-mcp は何も収集しません。テレメトリ、分析、アカウント、リモートロギングはなく、独自にネットワーク通信を行うこともありません。各ツール呼び出しでは、マシン上の jb が実行され、結果は標準入出力経由でサーバーを起動した MCP クライアントに返されます。
サーバーが書き込むものはすべて、そのマシン上に留まります。診断ログ、呼び出しで要求された検査レポート、ReSharper のキャッシュの隣にある管理ファイルが該当します。ログとレポートには、絶対パスや、ソリューションから読み取ったルール ID とメッセージが含まれる場合があります。PRIVACY.md には、各ファイルの保存場所と保存期間を含む、ポリシーの全文が記載されています。
コントリビューション
コントリビューションを歓迎します。公開ソリューションで再現できるバグ報告、MCP クライアントとの互換性修正、検出や出力形式の改善が特に役立ちます。CONTRIBUTING.md では開発環境のセットアップとテスト構成を説明し、SECURITY.md ではセキュリティ問題を非公開で報告する方法を説明しています。
ライセンス
MIT。詳細はLICENSEをご覧ください。
JetBrainsおよびReSharperは、JetBrains s.r.o.の商標です。このプロジェクトは、JetBrains独自のライセンスで提供されているReSharper Command Line Toolsの独立したラッパーです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。