MCP Server for using Semgrep to scan code for security issues and static analysis
Five tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (semgrep_scan, semgrep_findings, security_check), which is good. However, descriptions are generic (avg ~60 chars, below the 194-char baseline), and critical parameter details are missing. No output schemas documented. semgrep_scan, semgrep_scan_local_files, and semgrep_scan_rpc are near-duplicates with unclear distinctions. Parameters like 'config' lack enum constraints despite accepting specific values ('p/docker', 'p/xss', 'auto'). Error handling and recovery guidance absent.
Perform a comprehensive security check on code
Retrieve findings from Semgrep Cloud Platform
Scan code for security issues using Semgrep
Scan local files for security issues using Semgrep
Scan code using Semgrep via RPC (requires Pro Engine)
Three near-duplicate scan tools (semgrep_scan, semgrep_scan_local_files, semgrep_scan_rpc) with unclear distinctions. LLMs will struggle to choose between them. semgrep_scan_rpc description mentions 'requires Pro Engine' but no guidance on when to use it vs. semgrep_scan.
Parameter 'config' accepts specific values ('p/docker', 'p/xss', 'auto') but is defined as free-form string with no enum constraint. LLMs will hallucinate invalid config values. Should be enum or include strict format description.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. What does semgrep_scan return? Fields? Structure? Pagination?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Descriptions are too short (40 - 50 chars, below 194-char baseline). 'Scan code for security issues using Semgrep' lacks context on when to use this vs. security_check, what it returns, or prerequisites.
No error handling or recovery guidance. If semgrep_scan fails, what should the LLM do? Retry? Call a different tool? No actionable error messages defined.