// CASE_FILE > MCP_SENTRY

安全 · MCP2026

mcp-sentry

MCP 服务器上线时带着悄无声息的安全漏洞。我构建了一款静态分析检查器,覆盖 OWASP MCP Top 10 全部八个类别,并在 CI 中给项目从 A 到 F 评级。

8
OWASP MCP 检查项
4
报告器格式
6
A–F 评级档
github.com/HUMBLEF0OL/mcp-sentryFEED//LIVE
$ npx mcp-sentry scan ./server
[ok] taint trace complete
MCP01..MCP08 .......... pass
grade ................ A
report ............... SARIF
status: HARDENED
$

// 01 > CONTEXT

mcp-sentry 是一款面向 TypeScript Model Context Protocol 服务器的静态分析安全检查器。它通过 SARIF、PR 评论和一枚公开的 Shields.io 徽章与 CI 集成。

// 02 > THE_PROBLEM

MCP 服务器向智能体暴露工具,而一个标注错误或可被注入的工具就能把命令执行权交到攻击者手中,且评审中无人察觉。

此前没有面向 MCP 的检查器。通用扫描器会漏掉 MCP 特有的风险,比如一个名为只读却会改变状态的工具,或是跨函数边界流入 Shell 调用的不可信输入。

之前

无 MCP 感知扫描 · 注入风险未被标记 · 意图错误标注不可见

// 03 > APPROACH

我把 OWASP MCP Top 10 映射为具体的检查项,加入跨过程的污点追踪以发现命令注入,并通过一个可评级的阈值让整套工具原生融入 CI。

跨过程污点追踪

跨函数追踪不可信输入,以捕获单函数扫描器会漏掉的命令注入。

意图颠覆检测

标记那些名为只读却实际改变状态的工具 —— 一种典型的 MCP 信任违规。

TypeScriptMCPCloudflare WorkersSARIF

// 04 > THE_RESULT

一次扫描即可在 OWASP MCP 全部八个类别上给 MCP 服务器从 A 到 F 评级,在阈值处让 CI 失败,并发布一枚公开徽章。

之前

  • MCP 风险未被扫描
  • 注入路径不可见
  • CI 中没有安全信号

之后

  • 覆盖 MCP01–MCP08
  • 污点追踪的注入发现
  • A–F 评级 + SARIF + 徽章
安全工具必须置于工作发生的地方。mcp-sentry 会让构建失败并发布评级,这样就没人需要记着去运行它。
AAmit RanaAuthor & Maintainer, mcp-sentry

遇到了类似的问题?

预约 20 分钟通话