MCP server for scanning text content for sensitive information like passwords, API keys, emails, and other personally identifiable information. Provides tools to detect, redact, and validate sensitive data.
The Security Scanner MCP server has three tools with adequate naming but inconsistent quality across definitions. Tool names follow verb_noun convention (scan_for_sensitive_data, redact_text, validate_data_safety) which is positive, but descriptions lack depth and schema documentation is minimal. Parameters have type information but lack detailed constraint descriptions. Error handling exists but provides generic messages rather than actionable recovery guidance. No parameter descriptions in the schema itself, only in docstrings. Output structure is present but not formally documented in schema. The server falls into the 'fair to poor' category typical of community MCP implementations.
Redact sensitive information from text content.
Scan text content for sensitive information like passwords, API keys, emails, etc.
Validate if text content is safe based on allowed sensitive data types.
Output schemas not formally documented. All three tools return complex objects inferred from code, but no schema declaration or field documentation in tool registration. LLMs cannot reliably plan downstream steps when output structure is undocumented.
Parameter descriptions in @mcp.tool() decorators are minimal or missing. Parameter 'text' appears in all three tools with description 'The text content to...' (11-24 chars), which violates the 10 - 1024 character guideline by being too short to be meaningful. Parameter 'allowed_types' in validate_data_safety has no specification of valid values (e.g., 'password', 'email', 'phone', etc.), only examples in docstring, not formal constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
Tool descriptions lack differentiation and recovery guidance. scan_for_sensitive_data and redact_text both scan AND redact, the description does not clarify when to call each. validate_data_safety does a subset of scan_for_sensitive_data with a whitelist, confusion is easy. No description hints the LLM on tool selection strategy (e.g., 'Use scan_for_sensitive_data for discovery; use validate_data_safety to enforce policies').
Error messages are generic and non-actionable. All three tools catch exceptions and return 'Error scanning content: <str(e)>' or similar. An LLM receiving this has no guidance on whether to retry, fix input, or escalate. No error classification (retryable vs. user-fixable vs. fatal).
redact_text returns original_text (echoes input). This violates the 'strip irrelevant fields' rule, the LLM already has the input and does not need it echoed back. Wastes tokens; increases context pollution.
No idempotency or confirmation mechanism. redact_text and scan_for_sensitive_data are read-only, so safe to retry. But validate_data_safety uses policy enforcement semantics (is_safe=true/false decision) that an agent might rely on for gating; if called multiple times in a loop, inconsistent behavior (if allowed_types varies) could cause issues. No documentation of idempotency contract.