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.5

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.5
File Size Uploaded
pii_mcp-1.5.5.tar.gz 184.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pii-mcp 1.5.5
File
pii_mcp-1.5.5-py3-none-any.whl Python 3 none any Details
pii_mcp-1.5.5-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
pii_mcp-1.5.5-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.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
pii_mcp-1.5.5-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
pii_mcp-1.5.5-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 4.5 MB

Release files / pii_mcp-1.5.5.tar.gz

Download URL pii_mcp-1.5.5.tar.gz
Size 184.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a4a61a7ddf5ac512c97dd93f81b16bf860caf57a42a8c1557d7a036b41e5a6c7
BLAKE2b-256 checksum
How to use checksums
5ae736d1f174fd7145bdd7456e20f3cb2c29ceb99504f3b71286873f5a742449
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 23, 2026.

Transparency log

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

Download URL pii_mcp-1.5.5-py3-none-any.whl
Size 21.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a5cee048f328c85577979f9c4ca4b8e9d6a55412c4fb68619f1d6eaa006ebbae
BLAKE2b-256 checksum
How to use checksums
21aa77cf3879d406c67bdc81ec3e0700519013524f1329acbca656641dcf8334
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 23, 2026.

Transparency log

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

Download URL pii_mcp-1.5.5-cp310-abi3-win_amd64.whl
Size 771.9 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
c27811b2e4671ed005640535c00c9b9a88598d8700749cb9ad42e0457bfd8203
BLAKE2b-256 checksum
How to use checksums
b5fa293a395c61c4ce885e277a4b29322881fda9c7428627bbf281b2908ac1e5
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 23, 2026.

Transparency log

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

Download URL pii_mcp-1.5.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 926.7 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
893ae6c123194fd17d2004aff651e403f18e29352ac945aca7735ddac9e8ec94
BLAKE2b-256 checksum
How to use checksums
1c183b5def175d0c32b3ecda14c00c61c5cb99348d53f167585e0ea0ff8e2922
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 23, 2026.

Transparency log

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

Download URL pii_mcp-1.5.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 897.2 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
7abd1da7b6a862914819f687a5d9f37a69b075b57f8db17dc9e8bdb46e285524
BLAKE2b-256 checksum
How to use checksums
fc4b4b4a276320dfd54205c97c93853dbbb488b54f47b11b4bb265b51d0efcd1
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 23, 2026.

Transparency log

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

Download URL pii_mcp-1.5.5-cp310-abi3-macosx_11_0_arm64.whl
Size 805.6 kB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bd0a34f3d2acf7442d4dae09c447297ce04f51844279f6eb0f0a5bbab93faec7
BLAKE2b-256 checksum
How to use checksums
1e0247dbc5e88af38355735b601e193076de20a92e969f5be27adab75014979d
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 23, 2026.

Transparency log

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

Download URL pii_mcp-1.5.5-cp310-abi3-macosx_10_12_x86_64.whl
Size 853.2 kB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b2bffd691b0da7680b223e1025b6f7474b74338727763116d8c8b655e141fc1e
BLAKE2b-256 checksum
How to use checksums
0d758b96d0341d20b669a484b5578dd6e87cd06e98f997349572ab0d2fa11988
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 23, 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

This release

1.5.5 This release

7 release files

1.5.4

7 release files

1.5.3

7 release files

1.5.2

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