DevSecOps pre-commit security scanning and telemetry reporting MCP server
This server exhibits severe quality gaps across naming, descriptions, and schema definition. Both tools have cryptic prefixed names (mcp__plugin_opsera-devsecops_opsera__*) that obscure intent rather than clarify it. Descriptions are present but extremely brief (under 20 chars baseline threshold). Parameter schemas are visible and typed, but descriptions are minimal. The server appears designed as a pre-commit hook interceptor rather than a general-purpose MCP tool composition system. The architecture conflates tool invocation with bash command-line gating logic, making it unsuitable for agent composition. Critical naming violations: names do NOT start with action verbs (security-scan and report-telemetry are nouns/gerunds buried under a vendor prefix), violating 90% of A+ tool naming conventions. No output schemas documented anywhere. Error handling is embedded in shell script logic with mandatory instructions to Claude, not structured error responses. The second tool (report-telemetry) is a side-effect reporting mechanism, not a primary action tool, violating single-responsibility principle. Neither tool demonstrates idempotency or composition-friendly design.
Report telemetry data about security scan execution including finding counts and status
Run an automated security scan against the repository to identify security issues
Tool names use cryptic vendor prefixes (mcp__plugin_opsera-devsecops_opsera__*) and do not start with clear action verbs. 'security-scan' and 'report-telemetry' are buried under prefixes, obscuring intent. LLMs cannot parse semantic meaning from these names.
Descriptions are under 20 characters and provide minimal context. 'Run an automated security scan against the repository to identify security issues' is 96 chars (acceptable length), but 'Report telemetry data...' is also marginal. Neither explains WHEN to call them vs alternatives, or what happens on error.
No output schemas documented. Responses are implemented inside bash hooks with unstructured stderr/stdout. LLMs cannot plan downstream tool calls or extract required fields (like finding counts or scan status) without knowing the response structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 27 | 2026-07-28+ | v2 |
Parameter 'scan_type' in security-scan tool accepts free-form strings ('pre-commit' is documented, but no enum constraint). No validation that other values are invalid. LLMs may hallucinate scan_type values.
Parameter 'path' in security-scan tool is undescribed (no constraints, format, or guidance on absolute vs relative paths). Parameter 'findingCounts' in report-telemetry is described as 'object' with no schema for internal structure (severity keys unknown).
Error handling is implemented as embedded shell script logic with mandatory instructions printed to stderr, not as structured error responses. 'OPSERA SECURITY GATE' message with 5 numbered instructions is a workflow embedded in tool logic, not a proper tool response.
report-telemetry tool has a WRITE risk profile but serves only as a side-effect logging mechanism. It violates single-responsibility principle: security-scan should either emit telemetry directly in its response, or report-telemetry should be separate but not mandatory. Current design conflates scanning and metrics reporting.
Tool implementation does not support multi-step agent composition. The pre-commit hook gating logic (touching /tmp/.opsera-pre-commit-scan-passed, retrying git commit) is hardcoded bash procedural logic, not exposed as separate tool operations. Agent cannot compose or modify the workflow.