Zero-execution static AST security scanner for Model Context Protocol servers. Checks for Command Injection (CWE-78), Path Traversal (CWE-22), Hardcoded Secrets (CWE-798), Tool Poisoning & Prompt Injection (CWE-1384), and Unauthenticated Transports (CWE-306).
Two tools with clear, domain-specific descriptions (audit_mcp_repository: 227 chars, audit_local_directory: 108 chars). Both have input schemas with type definitions and descriptions. However, output schemas are not documented in the source code, the tools return Dict[str, Any] with no structured schema visible. Error handling returns status/message but lacks actionable recovery guidance. Parameter descriptions are adequate but minimal. No tool annotations (readOnlyHint, destructiveHint) despite both being read-only operations.
Audits a local directory containing MCP server source code for security vulnerabilities using static AST analysis.
Performs a static AST security audit on a public MCP Git repository without executing untrusted code. Checks for Command Injection (CWE-78), Path Traversal (CWE-22), Hardcoded Secrets (CWE-798), and Unauthenticated Transports (CWE-306). Returns a Trust Score (0-100), letter grade, and findings.
Output schemas not documented. Tools return Dict[str, Any] with no structured schema visible to LLMs. Cannot determine what fields to expect (trust_score, findings, grade, etc.) or plan downstream operations.
Error responses lack actionable recovery guidance. Returns {'status': 'error', 'message': str(e)} with no hint for LLM on what to do next (retry? ask user? fatal?). Example: 'Failed to clone repository: ...' gives no recovery path.
No tool annotations despite clear semantics. Both tools are read-only (no state modification), but lack readOnlyHint annotation. This prevents agents from optimizing retry logic and caching strategies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Parameter 'sub_directory' in audit_mcp_repository has minimal description ('Optional subdirectory within the repository to audit'). No guidance on format (relative path? absolute? with/without leading slash?), constraints, or examples.
No pagination or result limits documented. If audit returns hundreds of findings, response could exhaust context window. No mention of max findings returned or how to filter/paginate results.