
MCP stdio ShellGuard
io.studiomeyer由 studiomeyer.io 發布v0.1.3更新於 Nov 3, 2026
MCP stdio 伺服器的縱深防禦:shell 注入防護、AST 審計 CLI、RCE 攔截。
AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。
原文描述
Defense-in-depth for MCP stdio servers: shell-injection guard, AST audit CLI, RCE blocking.
發布方自己的服務:StudioMeyer Crew
概覽
MCP stdio ShellGuard 的本機 MCP 服務,由 studiomeyer.io 發布;無需登入;STDIO。
暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。
- 發布者
- studiomeyer.io
安裝
在 SourceWeft 中
- 開啟 儀表板中的 MCP stdio ShellGuard,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Part of the StudioMeyer MCP Stack — Built in Mallorca 🌴 · ⭐ if you use it
mcp-stdio-shellguard
[npm version] [npm downloads] [License] [Last commit] [GitHub stars]
Defense-in-depth bundle for MCP stdio servers. Wraps `child_process.exec/spawn`with allowlist + sandbox + replay-detection, plus an AST audit CLI (mcp-shellguard-audit)
that scans MCP server sources for unsanitized shell calls. Closes the Ox-Security
MCP stdio-RCE class (200k vulnerable servers, May 2026 disclosure).
- MCP spec: 2025-06-18
- SDK:
@modelcontextprotocol/sdk^1.29.0 - Node: >= 20
- License: MIT
- Author: Matthias Meyer (StudioMeyer)
Install
Or run the audit CLI directly without installing:
Package contents and maintenance
Version 0.1.3 includes the dependency bundle described below.
The package ships @typescript-eslint/typescript-estree plus TypeScript and the required parser dependency closure through bundledDependencies. A root-only npm override does not constrain an installed package's dependency tree; the included closure carries the checked versions to consumers. The bundle preparation checks @typescript-eslint/typescript-estree 8.72.1 and minimatch 11.0.3, then changes only the parser manifest dependency range from minimatch ^10.2.2 to ^11.0.3. Third-party source files and package version numbers are unchanged. The AST audit calls typescript-estree.parse directly, with TypeScript included explicitly to satisfy the parser dependency tree; no ESLint runtime is required.
The measured archive is approximately 4.92 MB compressed and 26.04 MB unpacked (decimal MB). Bundling increases download and disk use; a security update to an included dependency requires an updated package archive.
For maintenance, run npm ci and npm run test:consumer from the repository checkout. npm pack runs prepack automatically: it builds the package and prepares the declared bundle. The consumer check packs twice, verifies identical bytes, installs the actual archive in a fresh project, checks npm ls and both dependency audits, and exercises the installed CLI or runtime. Review dependency updates together with the locked bundle and license proofs before distributing a new archive. The archive's dist/bundled-dependencies.json records the bundle and manifest adjustments.
What it gives you
Three layers, opt-in piecewise:
- Library API — drop-in
guardExec/guardSpawnyou call from your own MCP server. Default-deny allowlist, sandbox profiles, replay window. - Audit CLI —
mcp-shellguard-audit scan <path>walks the AST, reports 12 anti-patterns from LOW (no timeout) to CRITICAL (exec(\...${userInput}...`)`). - Reference MCP server —
mcp-stdio-shellguard-demoexposes 8 tools so the MCP Inspector / Claude Desktop can drive the bundle directly.
Tools (reference server)
Sandbox profiles
Caller can tighten via timeoutMs / fdBudget per call. Caller cannot widen
beyond the profile.
Trust tiers
Lift LOW → CRITICAL by registering the tool + setting argsPatterns + running
through guardExec/guardSpawn (which always activate sandbox + replay).
Library quickstart
Audit CLI
Exit codes:
0clean (no findings at-or-above floor)1findings present2parse / IO errors
Custom ignoreGlobs passed to scanPath or the audit_source MCP tool accept
at most 128 strings. Each string is limited to 1024 UTF-16 code units and 16
unescaped opening grouping characters ((, {, [). Inputs above these
budgets raise a controlled error before matching.
Anti-pattern library (12 rules)
The scanner resolves renamed child_process bindings before matching,
so the dangerous shapes below are caught even when the call goes through an
alias rather than a literal child_process.exec:
const execAsync = promisify(exec); execAsync(...${x})import cp from "node:child_process"; cp.exec(...${x})const { exec: sh } = require("child_process"); sh(...${x})import { exec as run } from "node:child_process"; run(...)
Synchronous variants (spawnSync, execFileSync) share their async rules,
and shell_true_option also fires on a string shell ({ shell: "/bin/sh" })
or a dynamic shell value — not just the literal { shell: true }. A
promisify of a non-child_process function, a destructure off another
module, and { shell: false } stay clean (no false positives).
Pragmas
// shellguard:ignore-next-line— suppress one finding// shellguard:ignore-file— suppress whole file (rare; prefer per-line)
Why this exists
Ox-Security disclosed (2026-05) that 200k+ MCP stdio servers wrap
child_process.exec with template literals carrying user input straight from
LLM tool args. LiteLLM v1.83.6 was the canonical example (CVE patched in 1.83.7).
This bundle is the defensive-security counterpart: a drop-in guard + scanner
that closes the class. Inspired by AWS Linux seccomp + Chromium sandbox tiers.
See also
HOOK_RECIPES.md— Claude Code hook recipes that auto-block dangerous tool callsCHANGELOG.md— release history- Ox-Security MCP audit: https://venturebeat.com/security/200000-mcp-stdio-servers/
- LiteLLM CVE-2026-XXXX: https://github.com/BerriAI/litellm/security/advisories
License
MIT — Copyright (c) 2026 Matthias Meyer (StudioMeyer)
Bundled dependencies retain their complete upstream license texts in the archive. The package license applies to this project's own code; bundled third-party packages retain their respective terms. The consumer check verifies each approved package version's full license file, or its complete README license section, against pinned content hashes from integrity-verified official npm artifacts. Whitespace and line-ending differences are accepted; missing, empty or partial legal text is rejected.
來源:README.md,提交 35b97f8
工具
0版本歷史
2- v0.1.3最新Nov 3, 2026
- v0.1.2Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Studiomeyer 整合
StudioMeyer Crew
io.studiomeyer官方發布者
遠端 MCP 伺服器,為 Claude 提供代理角色、16 個工具與 3 個工作流程,宣稱不產生額外 API 費用。
StudioMeyer Memory
io.studiomeyer官方發布者
遠端雙時態 AI 記憶伺服器,具備知識圖譜與語意搜尋,讓助理跨工作階段持久記憶。

StudioMeyer MCP Suite
io.studiomeyer官方發布者
遠端 MCP 套件,整合 8 個伺服器、104+ 個工具,涵蓋記憶、社群、PDF、電子郵件、圖片、行事曆、排程與檔案。
StudioMeyer GEO
io.studiomeyer官方發布者
一個遠端、託管於歐盟的 MCP 伺服器,讓助理查看品牌或網站在八個大型語言模型平台上的能見度,共 30 個工具,多數不需 API 金鑰。
StudioMeyer CRM
io.studiomeyer官方發布者
StudioMeyer CRM 是遠端、AI 原生的 CRM 伺服器,為助理提供 37 個工具,涵蓋銷售管道、潛在客戶、健康分數與 GDPR 權利。