Sheriff について
Sheriffは、SARIF形式の静的解析結果をAIエージェント向けの永続的な作業キューに変換するMCPサーバーです。問題をファイルごとにまとめ、絞り込みや進捗管理、セッションをまたいだ作業再開に対応します。
主な機能
- 01SARIFレポートの読み込み
- 02ファイル単位で問題をまとめる
- 03ルール、重大度、パスで絞り込み
- 04進捗の保存と追跡
- 05問題の再開とエクスポート
活用シーン
- 01大量の解析レポートを順に処理
- 02ソースファイル単位で問題を修正
- 03エージェントの再起動後に作業を再開
- 04指定したルールの問題に絞って修正
MCP 対応
SARIFの問題を読み込み、確認、完了、追跡、再開、集計、エクスポートするアクションを備えた単一の `sheriff` MCPツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/ryansmith4/sheriff-mcp:1.0.2ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/ryansmith4/sheriff-mcp:1.0.2stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Sheriff-MCP
Sheriff は、AI エージェントが SARIF レポートの静的解析の問題を効率的に修正できるよう支援する MCP サーバーです。
Sheriff が選ばれる理由
AI エージェントは、大規模な静的解析レポートの処理に苦労します。
- コンテキストの過負荷 - 100 件を超える問題がコンテキストウィンドウを圧迫します
- 進捗の消失 - コンテキストの圧縮やセッションの再起動で作業が失われます
- 非効率な移動 - バッチ処理がないため、ファイル間を何度も行き来する必要があります
Sheriff は、作業キューマネージャーとしてこれらの問題を解決します。
- インテリジェントなバッチ処理 - 効率よく修正できるよう、問題をファイルごとにグループ化します
- 進捗の永続化 - 状態は、コンテキストの圧縮や再起動、エージェントの切り替え後も保持されます
- 対象範囲のフィルタリング - 特定のルール、重要度、ファイルパターンに絞り込めます
- 簡潔なレスポンス - フィールド名を省略し、コンテキストの使用量を最小限に抑えます
対応している静的解析ツール
Sheriff は、SARIF 形式で出力するあらゆるツールに対応しています。
| ツール | 言語 | SARIF コマンド |
|---|---|---|
| Qodana | Java/Kotlin/JS/Python | qodana scan |
| Semgrep | マルチ言語 | semgrep --sarif -o results.sarif |
| ESLint | JavaScript/TypeScript | eslint --format @microsoft/sarif |
| CodeQL | マルチ言語 | SARIF 出力を標準搭載 |
| SpotBugs | Java | spotbugs -sarif |
| Bandit | Python | bandit -f sarif |
| Checkov | IaC | checkov -o sarif |
| Trivy | コンテナ/IaC | trivy --format sarif |
| SonarQube | マルチ言語 | SARIF エクスポートを標準搭載 |
クイックスタート
1. インストール
JAR(全プラットフォーム) — Java 21+ が必要です
Releases から sheriff-mcp-1.0.2-all.jar をダウンロードします。
Docker
docker pull ghcr.io/ryansmith4/sheriff-mcp:latest
MCP Registry
MCP Registry に対応しているクライアントは、名前を指定して直接インストールできます:io.github.ryansmith4/sheriff-mcp
詳しくは、インストールガイドをご覧ください。
2. MCP クライアントを設定する
Sheriff を MCP クライアント(Claude Code、Cursor、ChatGPT Desktop など)に追加します。
{
"mcpServers": {
"sheriff": {
"command": "java",
"args": ["-jar", "/path/to/sheriff-mcp-1.0.2-all.jar", "start"]
}
}
}
Docker を使用する場合:
{
"mcpServers": {
"sheriff": {
"command": "docker",
"args": ["run", "-i", "--rm", "-v", ".:/data", "ghcr.io/ryansmith4/sheriff-mcp:latest"]
}
}
}
クライアント別の手順と推奨されるエージェント向け指示については、エージェント設定ガイドをご覧ください。
3. 使用する
1. Run static analysis → qodana scan
2. Load into Sheriff → sheriff load target="results.sarif"
3. Get next file's issues → sheriff next
4. Fix all issues in file → [edit the code]
5. Mark as done → sheriff done fps=[...] status="fixed"
6. Repeat 3-5 → until remaining = 0
Sheriff は、load、next、done、progress、summary、reopen、export の 7 つのアクションを備えた単一の sheriff ツールを公開します。詳しくは、ツールリファレンスをご覧ください。
使用例
User: "Fix all ConstantValue issues in my codebase"
Agent: sheriff load target="build/qodana/qodana.sarif.json"
→ 136 total issues, 22 ConstantValue, 15 unused...
Agent: sheriff next scope={rule: "ConstantValue"}
→ 3 issues in Service.java with code snippets
Agent: [reads Service.java, fixes all 3 issues]
Agent: sheriff done fps=["88d32cab35478753", "ab1c2d3e12345678", "f9e8d7c6a1b2c3d4"] status="fixed"
→ 3 marked fixed, 19 remaining
... continues until remaining = 0
セキュリティ
サプライチェーンのセキュリティ確保のため、すべてのリリース成果物は Sigstore で署名されています。
JAR の検証:
VERSION=1.0.2
cosign verify-blob \
--signature sheriff-mcp-${VERSION}-all.jar.sig \
--certificate sheriff-mcp-${VERSION}-all.jar.pem \
--certificate-identity-regexp "https://github.com/ryansmith4/sheriff-mcp" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
sheriff-mcp-${VERSION}-all.jar
Docker イメージの検証:
cosign verify ghcr.io/ryansmith4/sheriff-mcp:latest \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-identity-regexp="github.com/ryansmith4/sheriff-mcp"
セキュリティポリシーについては、SECURITY.md をご覧ください。
コントリビューション
コントリビューションを歓迎します!ガイドラインについては、CONTRIBUTING.md をご覧ください。
ライセンス
Apache License 2.0 — 詳細は LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。