mcp-stdio-shellguard

MCPcommunity
v0.1.2Matthias MeyerMITUpdated 1mo agonpmGitHub

Defense-in-depth bundle for MCP stdio servers: drop-in guard for child_process.exec/spawn, AST audit CLI for unsanitized shell calls, and a reference MCP server that exposes both. Closes the Ox-Security 200k-server stdio-RCE class.

Works in
ClaudeCursorCopilotGemini

Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Automatically indexed from public sources. Not yet verified by the developer on Forge.Claim this listing →
75Downloads/wk
1mo agoLast update
Package
AuthorMatthias Meyer
LicenseMIT
Version0.1.2
Sourcenpm+mcp-registry
Trust Status
B
60/100Good
✓Listed in Forge index+10/10
—Publisher identity verified+0/20
→ Publisher: run `forge publish` from the package repo to claim ownership
—Ed25519 publish signature+0/5
→ Included automatically when the publisher runs `forge publish`
—Domain verification+0/5
→ Publisher: host /.well-known/forge.json on the package homepage with { "publisher": "<github-login>" }
—npm Trusted Publishing (Sigstore)+0/5
→ Publish from GitHub Actions with --provenance so the attestation binds this package to this repo
—npm maintainer match+0/5
→ Earned once your identity is verified above and that login is an npm maintainer of this package
✓CVE scan · clean+30/30
✓Static analysis · clean+20/20
Paste into Claude Code, Cursor, or any AI assistant to fix all gaps
StatusCommunity-indexed
PublisherUnverified
SignatureUnsigned
Domain—
Provenance—
Dependencies✓ 60 resolved+ · none vulnerable
Tool surface8 tools · 2 privileged
Security scan✓ Cleanv0.1.2 · 1mo agoHow well does this scan work?
EvalsNone
IndexedAug 20, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

8 tools · 2 privileged
Statically extracted from the published packagev0.1.2 · 1mo ago

Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.

guard_execprivilegedDefended replacement for child_process.exec. Forces an args[] vector,

Defended replacement for child_process.exec. Forces an args[] vector,

No input schema was published for this tool.

guard_spawnprivilegedDefended replacement for child_process.spawn. Returns stdout/stderr SHA-256 hashes

Defended replacement for child_process.spawn. Returns stdout/stderr SHA-256 hashes

No input schema was published for this tool.

register_allowlistRegister a tool name with its allowed executable + args regex patterns.

Register a tool name with its allowed executable + args regex patterns.

No input schema was published for this tool.

audit_sourceScan a TypeScript / JavaScript path for unsanitised child_process.exec / spawn /

Scan a TypeScript / JavaScript path for unsanitised child_process.exec / spawn /

No input schema was published for this tool.

audit_reportFormat an AuditScanResult as markdown / json / sarif. Pure pass-through transformer.

Format an AuditScanResult as markdown / json / sarif. Pure pass-through transformer.

No input schema was published for this tool.

replay_checkCompute the canonical SHA-256 hash for an invocation and report whether the same

Compute the canonical SHA-256 hash for an invocation and report whether the same

No input schema was published for this tool.

sandbox_statusReport the active sandbox profile + concrete limits (timeout, byte caps, fd budget,

Report the active sandbox profile + concrete limits (timeout, byte caps, fd budget,

No input schema was published for this tool.

trust_tierDerive the LOW / MEDIUM / HIGH / CRITICAL trust tier for a registered tool plus

Derive the LOW / MEDIUM / HIGH / CRITICAL trust tier for a registered tool plus

No input schema was published for this tool.

8 of 8 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

Defense-in-depth bundle for MCP stdio servers: drop-in guard for child_process.exec/spawn, AST audit CLI for unsanitized shell calls, and a reference MCP server that exposes both. Closes the Ox-Security 200k-server stdio-RCE class.

Keywords
mcpmodel-context-protocolsecurityshell-injectionrcestdioauditsandboxallowlistchild_processdefensive-security
Alternatives
Comparing tool surfaces…

Dependency tree

What one Forge scan resolved from npm metadata on 2026-08-30 — observed resolution, not a publisher declaration.

60 packages resolved · 7 direct · none carrying advisories Resolution stops at depth 4 and 60 packages.

The crawl stopped at the 60-package limit. The rest of the tree was never resolved.

36 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)

Declared but not resolved

76 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.

+64 more not listed. The counts by reason above cover all of them.

Not followed: peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.

Topics

Related in security