关于 Sheriff
Sheriff 是一款 MCP 服务,可将 SARIF 静态分析问题整理为供 AI Agent 使用的持久任务队列。它按文件分组问题,并支持筛选、进度跟踪及跨会话继续处理。
主要功能
- 01载入 SARIF 报告
- 02按文件批量整理问题
- 03按规则、严重性或路径筛选
- 04保存并跟踪处理进度
- 05重新打开和导出问题
适用场景
- 01处理大型静态分析报告
- 02按源文件分组修复问题
- 03Agent 会话重启后继续处理
- 04聚焦修复指定规则的问题
MCP 相关
它提供单个 `sheriff` MCP 工具,可载入、浏览、完成、跟踪、重新打开、汇总和导出 SARIF 问题。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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 是一个 MCP 服务,可帮助 AI Agent 高效修复 SARIF 报告中的静态分析问题。
为什么选择 Sheriff?
AI Agent 难以处理大型静态分析报告:
- 上下文过载 - 100 多个问题会占满上下文窗口
- 进度丢失 - 上下文压缩或会话重启时,已完成的工作会丢失
- 导航效率低 - 无法批量处理,导致反复在不同文件间切换
Sheriff 通过充当工作队列管理器来解决这些问题:
- 智能批处理 - 按文件分组问题,便于高效修复
- 进度持久化 - 状态在上下文压缩、重启和 Agent 切换后仍会保留
- 范围筛选 - 聚焦于特定规则、严重性或文件模式
- 精简响应 - 使用缩写字段名,尽量减少上下文占用
支持的静态分析工具
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"]
}
}
}
有关各客户端的具体说明和推荐的 Agent 指令,请参阅 Agent 设置指南。
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 提供一个 sheriff 工具,包含 7 个操作:load、next、done、progress、summary、reopen 和 export。完整文档请参阅工具参考。
示例会话
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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。