
Security News
PHP Foundation Says Chainguard Broke Security Embargo Ahead of Emergency Patches
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.
@guardbee/mcp-server-auditor
Advanced tools
MCP server that audits other MCP servers' tool definitions for insecure patterns — excessive-agency tool names, shell/eval/SQL/SSRF sinks fed by raw tool input, overly permissive schemas, hardcoded secrets, and wildcard CORS
🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch
An MCP (Model Context Protocol) server that scans other MCP servers' tool definitions for insecure patterns.
While ai-code-scanner looks at general LLM/AI integration code, this package specifically looks at an MCP server itself: how privileged a tool defined via server.tool(...) is, how loose its parameters are, which dangerous sinks (shell/filesystem/HTTP/SQL) its handler passes tool input into directly. The MCP ecosystem is growing fast, but there's no common tool yet for auditing these servers' security.
Telemetry is off by default. With
GUARDBEE_TELEMETRY=1it sends the server, tool, success, duration and short parameter values such as a file path; longer strings and fields likecontent,tokenorpasswordare replaced with a placeholder. See@guardbee/mcp-telemetry.
Claude ──► mcp-server-auditor ──► An MCP server's source code
│
├─ Excessive agency (execSync(input.command), a tool named "run_shell")
├─ Unsafe input (fetch(input.url) → SSRF, SQL string interpolation)
├─ Loose schema (a parameter typed z.any()/z.unknown())
├─ Secrets exposure (a hardcoded API key in a schema default, the entire process.env)
└─ Network exposure (wildcard CORS)
recommendation) — not just "found it"guardbee.yml{
"mcpServers": {
"guardbee-mcp-server-auditor": {
"command": "npx",
"args": ["-y", "@guardbee/mcp-server-auditor"]
}
}
}
npx @guardbee/mcp-server-auditor scan ./src --fail-on=high --format=sarif > results.sarif
| Tool | Description |
|---|---|
scan_text | Scans a given text/code snippet |
scan_file | Scans a single file |
scan_directory | Recursively scans a directory (node_modules, .git, dist skipped automatically) |
list_patterns | Lists all supported patterns by category |
| Category | Pattern | Severity | OWASP | What it means |
|---|---|---|---|---|
| excessive-agency | shell_exec_from_tool_input | critical | MCP05:2025 | A tool handler passes tool input directly into a shell call like execSync/spawn |
| excessive-agency | eval_of_tool_input | critical | MCP05:2025 | Tool input is executed as code via eval()/new Function() |
| excessive-agency | unrestricted_shell_tool_name | high | MCP05:2025 | A tool name (run_shell, execute_sql, etc.) implies shell/SQL execution directly |
| unsafe-input | fs_write_from_raw_tool_input | high | A path from tool input flows into a file write/delete call with no validation (path traversal) | |
| unsafe-input | ssrf_fetch_from_tool_input | high | A URL from tool input flows directly into fetch/axios with no allowlist (SSRF) | |
| unsafe-input | sql_injection_via_tool_input | critical | MCP05:2025 | Tool input is interpolated into a SQL string via a template literal |
| loose-schema | overly_permissive_tool_schema | medium | A tool parameter is typed z.any()/z.unknown() — accepts anything | |
| secrets-exposure | hardcoded_secret_in_tool_schema | critical | A credential-shaped schema field's default value is a hardcoded literal | |
| secrets-exposure | full_env_exposed_to_tool_caller | critical | The entire process.env is spread/stringified/returned (not one named variable) | |
| network-exposure | permissive_cors_on_server | medium | Wildcard CORS (Access-Control-Allow-Origin: *) or cors() with no options |
These are heuristic findings — a static text-pattern scan, not a full AST/type analysis. Designed for a low false-positive rate, but every finding should still be reviewed manually.
guardbee.yml)mcp-server-auditor:
fail-on: high # any | critical | high | medium | low | none
max-files: 5000
exclude:
- ".test.ts"
- "fixtures/"
npm run build
npm test # 32 unit tests
MIT — GuardBee
Questions, ideas, or a false positive? Start a thread in GitHub Discussions or open an issue. If GuardBee is useful to you, a ⭐ on the repository helps others find it.
FAQs
MCP server that audits other MCP servers' tool definitions for insecure patterns — excessive-agency tool names, shell/eval/SQL/SSRF sinks fed by raw tool input, overly permissive schemas, hardcoded secrets, and wildcard CORS
The npm package @guardbee/mcp-server-auditor receives a total of 42 weekly downloads. As such, @guardbee/mcp-server-auditor popularity was classified as not popular.
We found that @guardbee/mcp-server-auditor demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.

Security News
PHP releases emergency patches for two critical RCE vulnerabilities as agencies urge organizations to take unpatched sites offline.

Threat Research
/Security News
A supply chain attack compromised LiteLLM 1.107.0 on PyPI and Docker, spreading malware that steals cloud credentials, developer secrets, and AI provider keys.