mcpField
S
safe-fix-mcp

safe-fix-mcp

ローカル
github.com/pamela-0開発ツール110 週間前に更新

safe-fix-mcp について

safe-fix-mcpは、Pythonリポジトリの保守担当者向けに、デッドコードや依存関係の問題を調べるMCPサーバーです。高確度の未使用インポートに限り、テスト合格を条件にブランチとPRを提案し、その他の検出事項は報告のみにとどめます。マージは人が判断します。

主な機能

  1. 01デッドコードと依存関係をスキャン
  2. 02変更せずに検出結果を報告
  3. 03条件に合う未使用インポートを削除
  4. 04リポジトリのテストスイートを実行
  5. 05ブランチを作成・プッシュしPRを試行

活用シーン

  1. 01Pythonプロジェクトのデッドコードを確認
  2. 02高確度の未使用インポート削除を提案
  3. 03テスト合格を変更の条件にする

MCP 対応

MCPクライアント向けに `scan_dead_code` と `propose_removal_pr` ツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"pamela-0-safe-fix": {
"command": "uvx",
"args": [
"safe-fix-mcp"
]
}
}
}
起動コマンドuvx safe-fix-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypisafe-fix-mcp0.1.1

ツール

2

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
repo_pathstringいいえ
min_confidenceintegerいいえ

詳細

safe-fix-mcp

PyPI License: MIT

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。