Presidio PII MCP server for Claude Desktop (zero-dependency Node). Detects and anonymizes personally identifiable information using Microsoft Presidio.
Three tools with complete input schemas and clear descriptions. Tool naming follows verb_noun pattern (presidio_analyze, presidio_anonymize, presidio_decrypt). Descriptions are substantive (150-250 chars), explaining what each tool does and when to use it. However, parameter descriptions are sparse or missing for several fields (language, entities in analyze; language, entities in anonymize lack detail). Output schemas are not documented, LLMs cannot predict response structure. Error handling guidance is absent. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The encrypt/decrypt pair demonstrates good composition (reversible operations), but missing documentation on key format, length, and security implications.
Detect personally identifiable information (PII) in text using Microsoft Presidio. Returns each entity's type, character span, confidence score, and the matched text.
Return a copy of the text with PII removed using the chosen operator: replace (<EMAIL_ADDRESS>), redact (delete), mask (****1234), hash, or encrypt. Only encrypt is reversible: it emits self-contained <ENC:TYPE:...> tokens that presidio_decrypt turns back into the originals with the same key. The other operators are one-way.
Reverse a previous encrypt: find every <ENC:TYPE:...> token in the text and restore the original value using the same key. Needs only the text and the key — no spans, no Presidio service. Tokens that fail to authenticate (wrong key or tampered) are left untouched.
Output schemas not documented. LLMs cannot predict response structure (entity types, confidence scores, encrypted token format). Agents cannot plan downstream operations without guessing.
Parameter descriptions incomplete. 'language' and 'entities' in presidio_analyze lack detail on valid language codes, entity type names, and defaults. 'key' in presidio_encrypt/decrypt lacks format/length guidance and security warnings.
No tool annotations. presidio_analyze should have readOnlyHint=true. presidio_anonymize and presidio_decrypt should have destructiveHint=true (irreversible for non-encrypt operators). Agents cannot reason about side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Error handling guidance absent. No recovery hints for common failures (Presidio service unavailable, invalid language code, encryption key mismatch). Agents cannot self-correct.
Missing parameter constraints. 'operator' enum is present, but 'language' accepts free-form strings with no validation hint. 'entities' array lacks guidance on valid entity type names (PERSON, EMAIL_ADDRESS, PHONE_NUMBER, etc.).