datascience-engineeringexperts/mcp-warden check

CI-first MCP supply-chain integrity gate. Re-captures a server's declared tool/resource/prompt surface and fails if it has drifted from the committed baseline (warden.lock). Emits a SARIF report and optionally uploads it to GitHub code scanning. Required permissions when upload-sarif is true: permissions: contents: read security-events: write Set upload-sarif: false for private repos without GitHub Advanced Security / code-scanning, or when running on a fork pull request (which lacks the required permission by default).

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jun 29, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: datascience-engineeringexperts/mcp-warden@f88c02d219671bd7eba5464ac15b33d2e5a1c148 # v1.0.1

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
server-cmdMCP server launch command string (e.g. "node ./build/index.js" or "python server.py"). Must be a plain, whitespace-separated argv string — no quoted arguments and no shell metacharacters (; | & $ ` \ < > ( ) { } ' ") are permitted. The guard step rejects any of these characters before expansion occurs.yes
lockPath to the baseline lock file (relative to working-directory).nowarden.lock
sarifPath for the SARIF output file (relative to working-directory).nomcp-warden.sarif
upload-sarifUpload the SARIF report to GitHub code scanning. Set false for repos without GitHub Advanced Security or when security-events: write permission is unavailable (e.g. fork pull requests).notrue
categoryCode-scanning category label. Use a distinct value per server when running mcp-warden against multiple servers in one repo.nomcp-warden
python-versionPython version to use. Must be >= 3.11.no3.11
timeoutCapture timeout in seconds passed to mcp-warden check --timeout.no30
working-directoryWorking directory for all steps. Defaults to the repo root.no.
namedescription
exit-codeRaw exit code from mcp-warden check: 0 = clean, 1 = drift detected, 2 = error (capture/IO failure). Use this in downstream conditional steps.
sarifResolved absolute path to the written SARIF file (empty if check exited 2 before writing).