A Spring Boot MCP server that provides PII redaction and EU AI Act compliance auditing through regex patterns and optional LLM-enhanced detection. Includes a Vue.js dashboard for real-time security monitoring.
Single tool 'secure_audit' has a clear, well-written description (127 chars, within 10-1024 range) and explicit input schema with type and description. However, the tool lacks output schema documentation, the AuditResult record is defined in code but not exposed in the tool definition. No error handling guidance, no parameter constraints (snippet length unbounded), and no recovery hints. The tool name 'secure_audit' is acceptable but generic; 'audit_compliance' or 'check_ai_compliance' would be more action-oriented. Overall definition quality is fair but incomplete for production use.
Audits a code snippet or text for EU AI Act 2026 violations and PII exposure. Returns a risk score from 0 (safe) to 100 (critical).
Output schema not documented. AuditResult record (riskScore, classification, violations) is defined in code but not exposed in tool metadata. LLMs cannot plan downstream actions or extract fields without knowing the response structure.
No input validation or constraints. 'snippet' parameter accepts unbounded strings with no length limit, format specification, or error guidance. LLMs may pass extremely large payloads, causing performance issues or timeouts.
No error handling or recovery guidance. If the tool fails (e.g., regex timeout on pathological input), there is no error message telling the LLM what to do next or whether to retry.
Tool name lacks action verb clarity. 'secure_audit' is passive; 'audit_compliance' or 'check_ai_compliance' would better signal the action to LLMs and improve tool selection in multi-tool scenarios.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Parameter description is minimal (47 chars). While present, it lacks context on expected format, length limits, or examples of what triggers violations. Expand to 50-150 chars with actionable constraints.