Skip to main content

pii-mcp

Pattern-based PII scrubbing for MCP servers (regex + checksums). Masks emails, IBANs, cards, BICs, MACs, IMEIs, IPs, coordinates, BSNs, US SSNs, German tax IDs, Dutch BTW-ids, Dutch passport/ID numbers, phones, Dutch postcodes, and Dutch license plates in tool results. Not NER for person names or full street addresses. Language packs: en, nl, and opt-in de.

PyPI npm CI License: MIT

Example

from pii_mcp import scrub_text

scrub_text(
    "Contact ada@example.com. IBAN NL91 ABNA 0417 1643 00. card 4111111111111111"
)
# Contact [EMAIL]. IBAN [IBAN]. card [CREDIT_CARD]

Install

pip install "pii-mcp[fastmcp]"   # FastMCP >= 3.0.0
# or
pip install pii-mcp              # core; platform wheels include Rust acceleration
# or
npm install pii-mcp

FastMCP

from fastmcp import FastMCP
from pii_mcp.fastmcp import PiiScrubMiddleware

mcp = FastMCP("MyServer")
mcp.add_middleware(PiiScrubMiddleware())  # languages=["en", "nl"] by default
# mcp.add_middleware(PiiScrubMiddleware(languages=["en", "nl", "de"]))

Results only. On scrub failure or oversize, the result is withheld, never forwarded unmasked.

Core

from pii_mcp import scrub_text, scrub_payload

scrub_text("mail ada@example.com")
scrub_payload({"email": "ada@example.com"}, languages=["en"])

Scope

Aligned with AP: wat zijn persoonsgegevens where pattern/checksum detection can reach them. Names, free-text health data (allergies), photos/audio/video, unstructured klant-/personeelsnummers, and full street addresses need NER or media handling and stay out of scope.

AP coverage (pattern layer)

AP example / category Detector Notes
e-mail / contact email, phone
IP-adres ip Indirect identifier
Locatiegegevens location Decimal lat/lon
Financiële gegevens iban, credit_card, bic, vat_id
BSN / nationaal ID bsn, passport Passport/NIK format (nl pack)
Online / device IDs mac, imei IMEI: grouped forms + Luhn
Adres (structured) address NL postcode only
Kenteken license_plate nl pack
Naam, pasfoto, allergieën, koopgedrag, camera NER / media

Packages

Runtime Path Install
Python src/pii_mcp pip install pii-mcp
TypeScript typescript/ npm install pii-mcp
Rust core crates/pii-core shared by both (PyO3 / N-API)

Rust core (Python)

Published platform wheels ship pii_mcp._native (PyO3 over pii-core). Pip prefers those on supported OS/arch; elsewhere (or with --no-binary) you get the pure-Python hatchling wheel/sdist and the same scrub API.

When _native is importable, scrub_text / scrub_payload use it. Force the Python path with PII_MCP_BACKEND=python; require native with PII_MCP_BACKEND=native.

Local development from a clone (optional):

pip install -e ".[native]"
maturin develop --release --manifest-path crates/pii-mcp-native/Cargo.toml

Performance (Python vs Rust release)

Medians from scripts/bench_backends.py on macOS arm64 / CPython 3.14.7 (release native build; debug builds are not representative):

Case Python Rust Speedup
Short clean text 0.234 ms 0.023 ms 10.2x
Short mixed PII 0.058 ms 0.007 ms 8.9x
100 KiB sparse PII 20.4 ms 2.0 ms 10.2x
1 MiB sparse PII 203 ms 20.4 ms 10.0x
Nested JSON payload 12.4 ms 1.2 ms 10.3x
1k x tiny scrub_text 54.3 ms 6.8 ms 8.0x
python scripts/bench_backends.py

Metadata

Release files for pii-mcp 1.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pii-mcp 1.5.2
File Size Uploaded
pii_mcp-1.5.2.tar.gz 164.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pii-mcp 1.5.2
File
pii_mcp-1.5.2-py3-none-any.whl Python 3 none any Details
pii_mcp-1.5.2-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
pii_mcp-1.5.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
pii_mcp-1.5.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
pii_mcp-1.5.2-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
pii_mcp-1.5.2-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 4.4 MB

Release files / pii_mcp-1.5.2.tar.gz

Download URL pii_mcp-1.5.2.tar.gz
Size 164.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3019a7caf4cc2e2bdc25bcbc5bd0228f7debcdbf89657e4149a286b88b2e9fb0
BLAKE2b-256 checksum
How to use checksums
6bdf9610f052b7bb4224a65623f4b899dd53b4ede3b34edd69097e24cb50c909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / pii_mcp-1.5.2-py3-none-any.whl

Download URL pii_mcp-1.5.2-py3-none-any.whl
Size 18.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
31196928a06c49b8719e0ddf6a160f555fd1533329baba09e0197306759ac785
BLAKE2b-256 checksum
How to use checksums
c4812b28cf273984cdd4415dc084fa8bfaff000d02a404c8ee127ef32b83a71f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / pii_mcp-1.5.2-cp310-abi3-win_amd64.whl

Download URL pii_mcp-1.5.2-cp310-abi3-win_amd64.whl
Size 763.2 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
ee9d651360d42d82c8cf09d1e3f2612d9a70a033020bf8d42e43bee6e9cbdabd
BLAKE2b-256 checksum
How to use checksums
8b4c1e4a8da446e67b19fae6fe8b8bc2ef2cb4050192b3c4b7f76177ea36cf01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / pii_mcp-1.5.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pii_mcp-1.5.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 918.1 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
2a49ddbd3fa29d47e29371eaa307141bc6ff20b76763a10ca9189e492582f406
BLAKE2b-256 checksum
How to use checksums
2a3c3ccf645edb1f54928caa8b8972ab10341617fcaa9489d78226955be219b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / pii_mcp-1.5.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pii_mcp-1.5.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 886.4 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
8062994bf8842e4bc334a413a7a03b5aa136870b236e8402e86cde16c9d644b4
BLAKE2b-256 checksum
How to use checksums
83f282da3ca6524675d084a6e9e6e334857a211e211ce19b8a2c9ab50c1f2208
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / pii_mcp-1.5.2-cp310-abi3-macosx_11_0_arm64.whl

Download URL pii_mcp-1.5.2-cp310-abi3-macosx_11_0_arm64.whl
Size 797.9 kB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
322893dd9ab53c806a62d7610d43adcec80fd79ba6259fece2a784273c2d5760
BLAKE2b-256 checksum
How to use checksums
ffbcc499cb8099b57df8ca1454422014819e2f6b00060d9e8eb8fa1853d44bb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / pii_mcp-1.5.2-cp310-abi3-macosx_10_12_x86_64.whl

Download URL pii_mcp-1.5.2-cp310-abi3-macosx_10_12_x86_64.whl
Size 844.5 kB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
d4602f07f780aee3551880b9761cbb4b24fca51634fad9ffe387054c18ff5274
BLAKE2b-256 checksum
How to use checksums
ae46e9111bb3ee91b929d83e42fc6d36b4529e97a024bd7ade2ebf2168fd0f97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release history Release notifications | RSS feed

1.10.0

7 release files

1.9.1

7 release files

1.9.0

7 release files

1.8.1

7 release files

1.8.0

7 release files

1.7.1

7 release files

1.7.0

7 release files

1.6.0

7 release files

1.5.5

7 release files

1.5.4

7 release files

1.5.3

7 release files

This release

1.5.2 This release

7 release files

1.5.1

7 release files

1.5.0

7 release files

1.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page