mcpField
S
Sheriff

Sheriff

本地服务
github.com开发工具027 周前更新

关于 Sheriff

Sheriff 是一款 MCP 服务,可将 SARIF 静态分析问题整理为供 AI Agent 使用的持久任务队列。它按文件分组问题,并支持筛选、进度跟踪及跨会话继续处理。

主要功能

  1. 01载入 SARIF 报告
  2. 02按文件批量整理问题
  3. 03按规则、严重性或路径筛选
  4. 04保存并跟踪处理进度
  5. 05重新打开和导出问题

适用场景

  1. 01处理大型静态分析报告
  2. 02按源文件分组修复问题
  3. 03Agent 会话重启后继续处理
  4. 04聚焦修复指定规则的问题

MCP 相关

它提供单个 `sheriff` MCP 工具,可载入、浏览、完成、跟踪、重新打开、汇总和导出 SARIF 问题。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ryansmith4-sheriff": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ryansmith4/sheriff-mcp:1.0.2"
]
}
}
}
启动命令docker run -i --rm ghcr.io/ryansmith4/sheriff-mcp:1.0.2

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/ryansmith4/sheriff-mcp:1.0.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Sheriff-MCP

CI OpenSSF Scorecard OpenSSF Best Practices License Java 21+ GitHub release

Sheriff 是一个 MCP 服务,可帮助 AI Agent 高效修复 SARIF 报告中的静态分析问题。

文档 | 安装 | 工具参考


为什么选择 Sheriff?

AI Agent 难以处理大型静态分析报告:

  • 上下文过载 - 100 多个问题会占满上下文窗口
  • 进度丢失 - 上下文压缩或会话重启时,已完成的工作会丢失
  • 导航效率低 - 无法批量处理,导致反复在不同文件间切换

Sheriff 通过充当工作队列管理器来解决这些问题:

  • 智能批处理 - 按文件分组问题,便于高效修复
  • 进度持久化 - 状态在上下文压缩、重启和 Agent 切换后仍会保留
  • 范围筛选 - 聚焦于特定规则、严重性或文件模式
  • 精简响应 - 使用缩写字段名,尽量减少上下文占用
支持的静态分析工具

Sheriff 适用于任何可生成 SARIF 输出的工具:

工具语言SARIF 命令
QodanaJava/Kotlin/JS/Pythonqodana scan
Semgrep多语言semgrep --sarif -o results.sarif
ESLintJavaScript/TypeScripteslint --format @microsoft/sarif
CodeQL多语言内置 SARIF 输出
SpotBugsJavaspotbugs -sarif
BanditPythonbandit -f sarif
CheckovIaCcheckov -o sarif
Trivy容器/IaCtrivy --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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。