Ocultar PII Refinery — Claude MCP Extension
mcp-name: io.github.ocultar-dev/ocultar-pii
Zero-egress PII protection for Claude AI workflows. Runs entirely in your infrastructure — no data ever leaves your environment.
Tools
| Tool | Description |
|---|---|
refine_text |
Redacts PII before sending text to Claude. Returns clean text + token map. |
reveal_tokens |
De-tokenizes tokens back to plaintext (auditor-only, requires OCULTAR_AUDITOR_TOKEN). |
register_entity |
Registers a canonical PII entity and its variants so they resolve to the same token across sessions (auditor-only, requires OCULTAR_AUDITOR_TOKEN). |
list_entities |
Lists all registered PII entities (auditor-only, requires OCULTAR_AUDITOR_TOKEN). |
seed_entities |
Bulk-registers PII entities, e.g. from a CRM roster (auditor-only, requires OCULTAR_AUDITOR_TOKEN). |
sombra_query |
Asks a redacted question via the Ocultar Sombra gateway — redacts PII, routes to the chosen LLM, rehydrates the response (requires OCULTAR_SOMBRA_TOKEN and Sombra running separately). |
Prerequisites
- Ocultar Refinery running locally:
docker compose up
- Python 3.10+
Installation
pip install ocultar-claude-mcp
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or
%APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"ocultar-pii": {
"command": "ocultar-claude-mcp",
"env": {
"OCULTAR_URL": "http://localhost:4141",
"OCULTAR_API_KEY": "your-api-key"
}
}
}
}
Claude Code (CLI)
claude mcp add ocultar-pii -- ocultar-claude-mcp
Or add to .claude/settings.json:
{
"mcpServers": {
"ocultar-pii": {
"command": "ocultar-claude-mcp",
"env": {
"OCULTAR_URL": "http://localhost:4141",
"OCULTAR_API_KEY": "your-api-key"
}
}
}
}
Environment Variables
| Variable | Required | Description |
|---|---|---|
OCULTAR_URL |
Yes | URL of your local Ocultar Refinery (default: http://localhost:4141) |
OCULTAR_API_KEY |
No | Bearer token for Refinery auth |
OCULTAR_AUDITOR_TOKEN |
No | Enables reveal_tokens, register_entity, list_entities, seed_entities — must match OCU_AUDITOR_TOKEN on the server |
OCULTAR_SOMBRA_URL |
No | URL of your local Ocultar Sombra gateway (default: http://localhost:8086) |
OCULTAR_SOMBRA_TOKEN |
No | Enables sombra_query — Sombra rejects requests with no Bearer token |
Usage
Once connected, Claude will automatically call refine_text when you ask it to handle
sensitive data. You can also ask explicitly:
"Refine this before processing: John Smith's email is john@example.com, SSN 123-45-6789"
Claude returns:
{
"cleanText": "John [NAME_a1b2c3d4e5f6a7b8]'s email is [EMAIL_9c8f7a1b2d3e4f50], SSN [SSN_3a1b2c4d5e6f7081]",
"tokenMap": {
"[NAME_a1b2c3d4e5f6a7b8]": "NAME",
"[EMAIL_9c8f7a1b2d3e4f50]": "EMAIL",
"[SSN_3a1b2c4d5e6f7081]": "SSN"
}
}
For authorized workflows that need to restore PII after AI processing:
"Reveal these tokens: [EMAIL_9c8f7a1b2d3e4f50], [SSN_3a1b2c4d5e6f7081]"
This call is recorded in the immutable Ed25519-signed audit log.
Why Zero-Egress?
The Ocultar Refinery runs entirely on your machine. The MCP server communicates only
with localhost — no telemetry, no cloud calls, no supply chain attack surface.
If the Refinery is unreachable, both tools fail closed: raw PII is never forwarded.
Security Model
refine_textis safe to expose to any Claude sessionreveal_tokensrequiresOCULTAR_AUDITOR_TOKENand every call is logged with actor, timestamp, and Ed25519 signature in the audit trail- The Refinery's vault uses AES-256-GCM with HKDF-SHA256 key derivation — tokens are useless without the master key
License
AGPLv3 — see LICENSE. Commercial licensing available for organizations that cannot comply with AGPLv3's source-disclosure requirements — see COMMERCIAL_LICENSE.md.
Release files for ocultar-claude-mcp 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ocultar_claude_mcp-0.3.0.tar.gz | 15.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ocultar_claude_mcp-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.8 kB
Release files / ocultar_claude_mcp-0.3.0.tar.gz
| Download URL | ocultar_claude_mcp-0.3.0.tar.gz |
|---|---|
| Size | 15.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33258f21c51775292d3c3f43c0bb759599f61783aae0d9c65f4fe5a89e41e54b
|
|
BLAKE2b-256 checksum How to use checksums |
ced1eeb799cec4e131186e43b9b164aec88bb51e54b55edcbda56469c52616b0
|
| 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 Aug 28, 2026.
Transparency logRelease files / ocultar_claude_mcp-0.3.0-py3-none-any.whl
| Download URL | ocultar_claude_mcp-0.3.0-py3-none-any.whl |
|---|---|
| Size | 23.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3dd782759d4013b4d9ecbf45937601bfd7978cc19bd842bb35f29063b0973b4b
|
|
BLAKE2b-256 checksum How to use checksums |
011e6df46ac9a34cadd2436266f3f8231599af9e9d8568a75dfc2b9f25032cc4
|
| 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 Aug 28, 2026.
Transparency log