mcp-ssrf-scan Cloud

Know which commit introduced the SSRF.

mcp-ssrf-scan is a free, open-source static scanner for MCP servers — it flags tool handlers that fetch a caller-controlled URL with no host validation, hardcoded secrets, and exec-injection. As a CI gate it fails the build on any HIGH finding. That's free and stays free.

A gate tells you something is wrong. It doesn't tell you what changed. Cloud uploads every CI scan and diffs it against the last one for that repo, so each run tells you:

Findings are matched by rule, severity, file and the flagged code — not line number — so unrelated edits that shift lines don't show up as "new", while a HIGH downgraded by added validation shows up as fixed.

Pricing

Free

The CLI as a CI gate — fails the build on HIGH findings. No account, no upload.

npx @sms-florin/mcp-ssrf-scan ./src
$15 / month

Cloud: scan upload, new/fixed diff on every run, per-repo history and dashboard. Up to 10 repos. API key shown instantly after checkout. Cancel any time.

Subscribe — $15/mo →

Setup (2 minutes)

Add the key from checkout as a CI secret named MCP_SSRF_SCAN_KEY, then add --upload:

GitHub Actions

- run: npx @sms-florin/mcp-ssrf-scan@latest ./src --upload
  env:
    MCP_SSRF_SCAN_KEY: ${{ secrets.MCP_SSRF_SCAN_KEY }}

GitLab CI

mcp-ssrf-scan:
  image: node:22
  script:
    - npx @sms-florin/mcp-ssrf-scan@latest ./src --upload

Repo, branch and commit are read from the CI environment (GitHub Actions, GitLab CI) or from git. Only findings are uploaded — file path, line, rule, message and the flagged line of code — never your full source.

Why this exists

I found this exact bug class in my own production code before I ever thought of building a scanner for it. BlueRock scanned 8,000+ public MCP servers and found 36.7% with unbounded URI fetch / SSRF flaws. The scanner is a heuristic, not a proof — treat a HIGH as "go read this function".

Already subscribed? Open the dashboard.

Also from the same maker, for testing the signup flows your agents run into: receivemail.dev (disposable inboxes by API, codes pre-extracted or pushed to a webhook) and sms-florin (real UK numbers for SMS codes).