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

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.4
File Size Uploaded
pii_mcp-1.5.4.tar.gz 178.6 kB Details

Built distributions (wheels)

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

Download URL pii_mcp-1.5.4.tar.gz
Size 178.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d0122d37c6d30dfa700059e72f17585164c9ee396067b286c1e70c791cd03074
BLAKE2b-256 checksum
How to use checksums
0ec58ad56f84c3f2ed9a155c96f97d829964446bc363840053c9ffa6afc33a45
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.4-py3-none-any.whl

Download URL pii_mcp-1.5.4-py3-none-any.whl
Size 19.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c3dbb2b38ef4a7b19f0198889d8e96a3666b209e0fe04d2dbc8432fdd7ffe3e0
BLAKE2b-256 checksum
How to use checksums
7a43ae14e0ae501c3b09f2eb13514d7e58b1d3c8ef1c862483c336eed8116efb
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.4-cp310-abi3-win_amd64.whl

Download URL pii_mcp-1.5.4-cp310-abi3-win_amd64.whl
Size 765.3 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
2f1681f9d80a47e9d2edb248f4538bf3036054a332f8efb8209abc2c5e791b1c
BLAKE2b-256 checksum
How to use checksums
f7d684f5a0acf4872621e2b90482f5b0ff3dcb0f382d2262afbb2cfc48c960c3
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.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pii_mcp-1.5.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 920.0 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
30b758ad82bd17ebc156fb50bae910834ba832276843329cc5ec62f4b5a088ab
BLAKE2b-256 checksum
How to use checksums
f2a84f46db3967a70349530c468790a7531cdebe72a903a685639ea7fbf0b95d
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.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pii_mcp-1.5.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 888.9 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
994bc494e7b38fe343d8fb621778b47735533315f14848fae232014998050065
BLAKE2b-256 checksum
How to use checksums
c557100e13d75d6cd0dd589f5d9ab15aa5c8d20f0182849649053ff135eaf7f1
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.4-cp310-abi3-macosx_11_0_arm64.whl

Download URL pii_mcp-1.5.4-cp310-abi3-macosx_11_0_arm64.whl
Size 800.2 kB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
132542f5d0c4b6c2e52c3ca5f2b883e960d9d448c30acbd779360cc57a708906
BLAKE2b-256 checksum
How to use checksums
56132b8339e247d94481e326d67cbcbb86e575b6b758a755649584ac3025cbd9
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.4-cp310-abi3-macosx_10_12_x86_64.whl

Download URL pii_mcp-1.5.4-cp310-abi3-macosx_10_12_x86_64.whl
Size 846.8 kB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
2d4bac5142c677b25a713fa774d3fb1e45df92989126c47fcdc69f477b632975
BLAKE2b-256 checksum
How to use checksums
2685fd0f0fd173d1c7885f4ef6c42df904778b4ce8767ab728f733aaa77ead4e
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

1.5.5

7 release files

This release

1.5.4 This release

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