File size: 911 Bytes
2bc91c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import re
from fastmcp import FastMCP

mcp = FastMCP("PII Privacy Server")

patterns = {
    "email": r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}",
    "phone": r"\b\d{10}\b",
    "credit_card": r"\b(?:\d[ -]*?){13,16}\b",
    "ssn": r"\b\d{3}-\d{2}-\d{4}\b"
}

@mcp.tool
def scan_document(text: str) -> dict:
    """Scan text and return sensitive info findings."""
    findings = []
    for label, pattern in patterns.items():
        for match in re.finditer(pattern, text):
            findings.append({"type": label, "value": match.group()})
    return {"findings": findings}

@mcp.tool
def redact_document(text: str) -> str:
    """Redact sensitive info from text."""
    redacted = text
    for label, pattern in patterns.items():
        redacted = re.sub(pattern, f"[REDACTED-{label.upper()}]", redacted)
    return redacted

if __name__ == "__main__":
    mcp.run()