mcpField
E
EU PII Redaction

EU PII Redaction

Local
rapidapi.comSecurity0Updated 4w ago

About EU PII Redaction

EU PII Redaction helps protect European personal data in LLM workflows, with Python, LangChain, and MCP interfaces. It detects multiple identifier types and supports file redaction with local restoration.

Key features

  1. 01Detect names and national IDs
  2. 02Validate IBANs, cards, and VAT numbers
  3. 03Reuse placeholders for each person
  4. 04Redact and restore text
  5. 05Process files and save mappings

Use cases

  1. 01Remove personal data before sending prompts
  2. 02Redact files without placing contents in chat
  3. 03Restore original values in generated replies

MCP support

The MCP server exposes tools for text redaction, file redaction, and file restoration. It reads and writes files itself, returning only counts and related information; restoration works offline.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"julianjohansen-eu-pii-redact": {
"command": "uvx",
"args": [
"eu-pii-redact"
],
"env": {
"RAPIDAPI_KEY": "<RAPIDAPI_KEY>"
}
}
}
}
Run commanduvx eu-pii-redact
Environment variables to set
RAPIDAPI_KEYSecretRapidAPI key subscribed to EU PII Redaction (free plan: 500 requests/month).

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypieu-pii-redact0.1.0

Tools

3

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
modeenumNo"label" replaces with [TYPE_n] placeholders, "mask" with asterisks.label | mask
textstringYesText to redact.
typesanyNoOnly these types; default all.

Details

From the project README

eu-pii-redact

Keep European personal data out of LLM prompts and logs, and put it back in the answer. Python client, LangChain integration and MCP server for the EU PII Redaction API. Try it live without signing up · Quickstart · Privacy and data processing

Hi, my name is Karina Dahl. I was charged twice for order 88412.
Please refund to DK50 0040 0440 1162 43 or call me on +45 32 12 34 56.
Karina

becomes

Hi, my name is [PERSON_1]. I was charged twice for order 88412.
Please refund to [IBAN_1] or call me on [PHONE_1].
[PERSON_1]
  • Names from evidence, not capital letters: titles, greetings, roles, Name: labels, sign-offs, or a first name from 140,000 European names. "Best Practices" and "Court of Justice" stay as they are.
  • National ID numbers from 21 EU/EEA countries, checked by check digit and birth date (personnummer, HETU, DNI/NIE, codice fiscale, NIR, PESEL, BSN, CPR, ...).
  • IBANs (mod-97), cards (Luhn), EU VAT numbers, emails, phones (with + prefix), IPs.
  • Every mention of a person shares one placeholder; order and invoice numbers stay untouched.

You need a RapidAPI key with a plan for the API. The free plan gives 500 requests a month. Set it as RAPIDAPI_KEY.

Python

pip install eu-pii-redact
from eu_pii_redact import Redactor

with Redactor() as r:                       # reads RAPIDAPI_KEY
    redaction = r.redact(ticket)
    reply = ask_llm(redaction.text)         # the model only sees placeholders
    print(redaction.restore(reply))         # real values back in the answer

redaction.entities lists each finding with its type, offsets in the original text and placeholder (national IDs also carry country and scheme). Texts longer than 50,000 characters are sent in pieces with consistent placeholders. r.redact(text, types=["EMAIL", "IBAN"], mode="mask") masks with asterisks.

LangChain

pip install "eu-pii-redact[langchain]"
from eu_pii_redact.langchain import protect, PIIRedactionTransformer

safe_llm = protect(llm)   # any model or chain that takes a string
safe_llm.invoke("Draft a reply to Karina Dahl about her refund to DK50 0040 0440 1162 43")
# the model sees [PERSON_1] and [IBAN_1]; the returned message has the real values again

docs = PIIRedactionTransformer().transform_documents(docs)   # e.g. before indexing for RAG

MCP server

Lets an AI assistant redact text and, more importantly, files without reading them: redact_file reads and writes the file itself and only reports counts, so the personal data never enters the conversation. restore_file puts the values back locally.

ToolWhat it does
redact_textRedact a text; returns the redacted text and entities (no original values)
redact_fileRedact a UTF-8 file into a new file; writes a restore mapping (owner-only permissions)
restore_filePut the original values back into a file using that mapping, offline

Claude Desktop (one click): download eu-pii-redact-0.1.0.mcpb from the latest release, open it, and paste your RapidAPI key when asked. The bundle sources are in mcpb/.

Claude Code

claude mcp add eu-pii-redact -e RAPIDAPI_KEY=your-key -- uvx eu-pii-redact

Claude Desktop / Cursor / other hosts (mcpServers config)

{
  "mcpServers": {
    "eu-pii-redact": {
      "command": "uvx",
      "args": ["eu-pii-redact"],
      "env": { "RAPIDAPI_KEY": "your-key" }
    }
  }
}

Postman

Fork the public collection from the EU PII Redaction workspace (or import postman/eu-pii-redaction.postman_collection.json), set the collection variable rapidapi_key, and send: four requests with example responses and built-in tests.

Limits

Rule-based, which keeps it fast (about 0.1 s for 50,000 characters) and predictable: no street addresses yet, phone numbers need an international prefix, and a name without any cue whose surname is an English word ("Will Smith") is missed on purpose. Use it as a strong first layer, not as a compliance guarantee.

License

MIT for this client package. The API itself is a hosted service.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.