safe-fix-mcp について
safe-fix-mcpは、Pythonリポジトリの保守担当者向けに、デッドコードや依存関係の問題を調べるMCPサーバーです。高確度の未使用インポートに限り、テスト合格を条件にブランチとPRを提案し、その他の検出事項は報告のみにとどめます。マージは人が判断します。
主な機能
- 01デッドコードと依存関係をスキャン
- 02変更せずに検出結果を報告
- 03条件に合う未使用インポートを削除
- 04リポジトリのテストスイートを実行
- 05ブランチを作成・プッシュしPRを試行
活用シーン
- 01Pythonプロジェクトのデッドコードを確認
- 02高確度の未使用インポート削除を提案
- 03テスト合格を変更の条件にする
MCP 対応
MCPクライアント向けに `scan_dead_code` と `propose_removal_pr` ツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| repo_path | string | いいえ | |
| min_confidence | integer | いいえ |
詳細
safe-fix-mcp
Python リポジトリ内のデッドコードを検出し、実際に安全に自動削除できる種類の指摘、つまり単一名のインポート行にある未使用インポートについて、ブランチ+PRを提案する実用的な MCP サーバーです。それ以外の検出結果(未使用の関数、クラス、依存関係)はすべて、報告のみです。マージは常に人が行います。このツールが自ら何かをマージすることはありません。
このツールを作った理由
多くの「デッドコード」ツールは、報告するだけです。さらに踏み込むツールは、安全策なしで削除するのが一般的です。このツールはそのどちらでもありません。対象リポジトリのテストスイート全体が削除後に実際に成功することを条件に、実際の、最小限でレビュー可能な PR の下書きを作成します。これはヒューリスティックではなく、実際に pytest を実行します。テストスイートが失敗した場合、コミットもプッシュも行われず、リポジトリは開始時の状態のままです。
ツール
scan_dead_code(repo_path=".", min_confidence=60)
読み取り専用です。vulture(デッドコード)と deptry(依存関係の問題)を実行し、指摘事項を人が読みやすい形式で返します。何も変更しません。
propose_removal_pr(repo_path=".")
- 作業ツリーに変更がある場合は実行を拒否します。未コミットの作業の上から編集することはありません。
- vulture の信頼度が 90% 以上で、単一名のインポート行にある未使用インポートのみを対象にします(
from x import y, zはスキップします。行全体を削除すると、zまで気付かれずに削除されるためです)。 - 実際のブランチを作成し、該当するインポートを削除して、リポジトリの実際のテストスイート全体を実行します。
- テストに実際に成功した場合のみ、コミット、プッシュし、
gh pr createで PR の作成を試みます。 ghがインストールされていない、または認証されていない場合でも、ブランチは実際にコミットされてプッシュされます。PR の作成のみが行われず、実際のエラーが返されるので、手動で PR を開けます。
インストール
pip install safe-fix-mcp
MCP クライアントの設定に追加します(例:Claude Code)。
claude mcp add safe-fix-mcp -- safe-fix-mcp
または、ローカルでテストするために直接実行します。
python -m safe_fix_mcp.server
PyPI ではなくソースからインストールする場合:
pip install -e .
スキル
SKILL.md は別途ダウンロードするものではなく、このパッケージ内に含まれています。2 つのツールをいつ、どのように正しく使うかを Claude に教えます(たとえば、propose_removal_pr が自動削除するのは単一名の未使用インポートのみであり、関数、クラス、依存関係は決して削除しないことなど)。プロジェクトにインストールします。
safe-fix-mcp-install-skill
スキルを有効にしたいプロジェクトのルートから実行してください。現在のディレクトリを基準に .claude/skills/safe-fix-mcp/SKILL.md に書き込みます。
要件
- Python ≥ 3.10
- PATH 上に
gitがあること propose_removal_prで実際に PR を開きたい場合は、PATH 上にgh(GitHub CLI)があり、認証済みであること。これがない場合でも、ブランチは実際にプッシュされ、ツールが手動で PR を開くよう案内します。
開発
pip install -e ".[dev]"
pytest
既知の制限事項
vulture は scan_dead_code/propose_removal_pr 自体を「未使用」と判定します。これは既知の誤検出であり、実際のバグではありません。これらはソース内のどこからも直接呼び出されず、実行時に @mcp.tool() デコレーターによって呼び出されます。そのため、静的な呼び出しグラフ解析では、実際の呼び出し元(MCP フレームワーク自体)を検出できません。
実際の環境での検証
scripts/verify_real_client.py は、パッケージ化されたサーバーを実際のサブプロセスとして起動し、実際の mcp.client.ClientSession を使って通信します。これは実際の MCP クライアントが使うのと同じ経路です。変更後のスモークテストとして便利です。
python scripts/verify_real_client.py
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。