Skip to main content
AllMCPs
BrowseBestCategoriesStackCompareToolsGuidesBlog Log in Submit MCP

Stay in the loop

Get new MCP servers and top picks in your inbox.

AllMCPs

The open directory for discovering and installing Model Context Protocol servers.

Explore

  • Browse servers
  • Best MCP servers
  • Categories
  • MCP clients
  • Agent prompts
  • Stack Builder
  • Compare servers
  • Tags index
  • Submit a server
  • Pricing

Learn

  • Guides hub
  • What is MCP?
  • Install guide
  • Troubleshooting
  • Security
  • Blog
  • Blog RSS

Tools

  • All tools
  • Config generator
  • Config validator
  • MCP playground
  • OpenAPI β†’ MCP
  • Badge generator

For agents

  • API docs
  • Trust & traffic
  • llms.txt β†— (opens in a new tab)
  • Catalog JSON β†— (opens in a new tab)
  • Remote MCP β†— (opens in a new tab)

Company

  • About
  • Contact
  • X (@AllMCPs) β†— (opens in a new tab)
  • GitHub β†— (opens in a new tab)
  • Terms
  • Privacy
AllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistAllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on Buildlist
Β© 2026 Jackalope Digital LLC. All rights reserved.
  1. Home
  2. πŸ’» Developer Tools
  3. Umbryn Mcp
U
Health: Not checked yetWe have not completed a health check for this listing yet.Last checked 8/11/2026, 12:12:07 AM

Umbryn Mcp

Enrichment pendingWe haven’t run our AI enrichment pass on this listing yet, so the overview, use cases, and FAQ below may be sparse or missing. We work through the catalog over time β€” check back soon.
View Repository

Redacts PII/PHI from text before it reaches an LLM. Fail-closed, self-hosted, no egress.

Quick Install

Automated & IDE Setup

Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β€” or use 1-click editor setup below.

Add to CursorAdd to VS Code
Manual Client & Custom JSON ConfigExpand JSON β–Ύ

Install Config Generator

Choose your client
claude_desktop_config.json
{
  "mcpServers": {
    "umbryn-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "umbryn-mcp"
      ]
    }
  }
}

πŸ’‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)

Install Directory Badge Claim listing AlternativesπŸ’» More in Developer Tools

Documentation Overview

umbryn-mcp

An MCP server that redacts PII/PHI from text before it ever reaches an LLM β€” self-hosted, fail-closed, and HIPAA-aware.

PyPI version Tests Python versions License: MIT Ruff PRs welcome

Teams building LLM and agent pipelines in regulated domains have no clean, drop-in way to strip PHI/PII from a payload before it crosses into a model provider's infrastructure. umbryn-mcp is that boundary: three MCP tools β€” redact, restore, detect β€” that scrub sensitive values into reversible placeholders, run entirely inside infrastructure you control, and block the request if detection is uncertain instead of leaking data.

text
redact("Patient MRN: 1234567, provider NPI 1234567893, ssn 078-05-1120, john.doe@example.com")

  redacted_text  (safe to send to the model):
    "Patient MRN: [MEDICAL_RECORD_NUMBER_1], provider NPI [NPI_1], ssn [US_SSN_1], [EMAIL_ADDRESS_1]"

  token_map      (kept local, never sent to the model):
    [MEDICAL_RECORD_NUMBER_1] β†’ 1234567
    [NPI_1]                   β†’ 1234567893
    [US_SSN_1]                β†’ 078-05-1120
    [EMAIL_ADDRESS_1]         β†’ john.doe@example.com

Send the redacted text to the model; keep the token_map local; call restore afterward to rehydrate the result. Round-trips are byte-exact and proven with property-based tests.


Why this exists

The PHI/PII-redaction MCP niche is real but underserved β€” the existing options are thin Presidio wrappers with no HIPAA-specific detection and, critically, no guarantee that a detection failure blocks the request instead of silently passing raw data through. So teams either roll their own boundary or ship sensitive data to a provider and lean on a BAA to cover it β€” the design-time mistake that causes real compliance incidents.

Naive Presidio wrapperRegex-in-your-appCloud DLP APIumbryn-mcp
Drop-in MCP toolssometimesβŒβŒβœ…
Fail-closed on uncertain detectionβŒβŒβŒβœ…
HIPAA identifiers (NPI, DEA, MBI, MRN, CLIA)❌partialpartialβœ…
Reversible (restore original)rarelyDIYsomeβœ…
Runs self-hosted, zero egressβœ…βœ…βŒ (sends data out)βœ…
Works with zero heavy deps❌ (needs spaCy)βœ…n/aβœ… (regex engine)
Optional ML NER (names, addresses)βœ…βŒβœ…βœ… ([presidio] extra)

Why it was built: MCP went mainstream fast β€” it's now first-class in Claude, Cursor, and ChatGPT, across thousands of servers β€” but the PHI/PII-redaction corner was left to a few unmaintained wrappers. This fills that gap with a single honest, auditable, fail-closed boundary, kept open source so the redaction logic you depend on is fully inspectable rather than a black box.

Features

  • Three tools, one boundary β€” redact (β†’ scrubbed text + reversible token map), restore (β†’ original), detect (β†’ entities found, no mutation).
  • Fail-closed by construction β€” if detection errors or any detection lands below the confidence threshold, the call returns a typed error. Uncertainty blocks; it never redacts-what-it-can and passes the rest.
  • HIPAA-aware detection β€” checksum-validated NPI and DEA, position-typed Medicare MBI, context-anchored MRN, CLIA lab IDs, plus standard PII (email, phone, SSN, credit card, IBAN, IP, URL).
  • Zero-egress, self-hosted β€” the default engine is pure regex + checksums with no network calls and no heavy dependencies. It installs anywhere Python does.
  • Optional ML upgrade β€” pip install "umbryn-mcp[presidio]" adds Microsoft Presidio + spaCy for PERSON/LOCATION NER, transparently.
  • Reversible & deterministic β€” collision-proof typed placeholders make restore(redact(x)) == x for arbitrary input; same input + config always yields the same output.

When to use it (and when not to)

Reach for umbryn-mcp when:

  • You send healthcare, clinical, financial, or user-generated text to a third-party LLM API and need PHI/PII kept out of that provider's infrastructure and logs.
  • You're building an agent or MCP pipeline in a regulated domain and want a drop-in scrubbing boundary you wire in with one tool call.
  • You need reversible redaction so downstream steps still work: redact β†’ send to model β†’ restore.
  • You want a self-hosted, no-egress detector you can audit line by line.
  • You need HIPAA-specific identifiers (NPI, DEA, Medicare MBI, MRN, CLIA), not just names and emails.

Reach for something else when:

  • You need irreversible de-identification / anonymization (tokenization, k-anonymity) β€” redaction here is reversible by design.
  • You need to redact non-text data (images, audio, PDFs, database rows) β€” scope is text.
  • You want a certified compliance product β€” this is one technical control, not a compliance program (see Scope & honest limitations).
  • You want a transparent proxy that auto-scrubs everything in the request path β€” v1 is explicit tool calls; proxy mode is on the roadmap.
  • You require guaranteed 100% recall β€” no detector, this one included, can promise that.

Quickstart (< 60 seconds)

Terminal
pip install umbryn-mcp        # zero heavy deps; runs immediately

Then register it with your MCP client.

Claude Desktop / Claude Code (claude_desktop_config.json, or claude mcp add umbryn-mcp -- umbryn-mcp):

config.json
{
  "mcpServers": {
    "umbryn-mcp": {
      "command": "umbryn-mcp"
    }
  }
}

Cursor (.cursor/mcp.json) and VS Code use the same shape β€” see examples/ for ready-to-paste configs.

Want name/address detection too?

Terminal
pip install "umbryn-mcp[presidio]"
python -m spacy download en_core_web_lg

The server auto-detects Presidio and upgrades β€” no config change needed. (Set UMBRYN_ENGINE=regex to force the dependency-free engine, or =presidio to require the ML one.)

How it works

A tool call comes in over stdio; the Redactor core runs the configured detection engine, resolves overlaps deterministically, applies the fail-closed threshold check, and swaps detected spans for reversible typed placeholders. Only scrubbed text is meant to leave the boundary you run.

mermaid
flowchart LR
    A[MCP client<br/>Claude Β· Cursor Β· agent] -- redact / restore / detect --> B[umbryn-mcp<br/>stdio server]
    B --> C[Redactor core<br/>fail-closed Β· reversible]
    C --> D{Detection engine}
    D -->|default, zero deps| E[Regex + checksums]
    D -->|optional| F[Presidio + spaCy NER]
    C -. scrubbed text .-> A
    A -- scrubbed text only --> G[(LLM / downstream)]

The Redactor core depends only on a small DetectionEngine interface β€” never on Presidio or MCP directly. Raw data and the detection engine stay inside the boundary you run; only scrubbed text leaves it. See docs/ARCHITECTURE.md and docs/THREAT_MODEL.md.

The tools

redact(text) β†’ { redacted_text, token_map, entities }

Replaces detected PHI/PII with typed placeholders like [NPI_1]. token_map maps each placeholder back to its original value β€” keep it local; never send it to the model. entities lists what was redacted (type/span/score) for auditing.

restore(redacted_text, token_map) β†’ { text }

Reverses a redaction, recovering the original text exactly. Safe to call on model output that still contains the placeholders.

detect(text) β†’ { entities, count }

Reports the entities found β€” type, span, confidence β€” without modifying the text. Unlike redact, it surfaces low-confidence hits rather than blocking, so you can inspect coverage before trusting the boundary in a pipeline.

How to use it (a real pipeline)

The pattern is redact β†’ model β†’ restore, with the token map never leaving your side:

  1. Scrub before the model. Call redact(user_text). Send only redacted_text to the LLM. Keep token_map in your process β€” treat it as sensitively as the raw input, and never pass it to the model.
  2. Let the model work on placeholders. It sees [NPI_1], [US_SSN_1], etc. β€” semantically neutral tokens it can reason about and echo back.
  3. Rehydrate after. Call restore(model_output, token_map) to swap the real values back into the model's response before it reaches your user or database.
  4. Handle the block. If redact returns a [LOW_CONFIDENCE] or [DETECTION_ERROR] tool error, the boundary refused to leak β€” surface it, tighten input, or lower the risk, but don't send the raw text onward.

Before trusting it in a pipeline, call detect(sample_text) on representative (synthetic) data to see exactly what is and isn't caught, and tune the thresholds (below) to your risk tolerance.

Fail-closed, precisely

Two thresholds govern every redact call:

  • detection_floor (default 0.35) β€” the sensitivity boundary. Signals below it are treated as noise.
  • min_confidence (default 0.5) β€” the trust threshold.

Any candidate that survives the floor but scores below min_confidence puts the call into fail-closed mode: it returns a [LOW_CONFIDENCE] error rather than redacting the confident spans and passing the uncertain one through. Engine errors return [DETECTION_ERROR]. On any error, no redacted text is returned. Both thresholds are configurable (see below).

Configuration

All optional; sane defaults mean it runs with zero config. Set via the client's env block.

VariableDefaultMeaning
UMBRYN_ENGINEautoauto (Presidio if installed, else regex), regex, or presidio
UMBRYN_MIN_CONFIDENCE0.5Trust threshold; detections below it fail closed
UMBRYN_DETECTION_FLOOR0.35Below this, a signal is treated as noise
UMBRYN_MAX_INPUT_CHARS100000Reject larger input with a typed error
UMBRYN_SPACY_MODELen_core_web_lgspaCy model for the Presidio engine
UMBRYN_AUDIT_LOGfalseEmit a structured audit record per redact call (counts and types only)
UMBRYN_CONFIG(unset)Path to a JSON config file (below)

Config file

For settings that don't fit a flat environment variable, point UMBRYN_CONFIG at a JSON file. Environment variables still win over the file for the scalar values above, so you can ship one file and tweak per launch. A malformed file (bad JSON, unknown threshold, un-compilable regex) fails closed at startup rather than degrading silently.

JSON Config
{
  // Per-entity trust thresholds override min_confidence for that type.
  "entity_thresholds": { "PHONE_NUMBER": 0.7, "IP_ADDRESS": 0.9 },

  // Entity types to drop entirely β€” never detected, never redacted.
  // (A privacy trade-off you're opting into: a disabled type can leak.)
  "disabled_entities": ["URL"],

  // Your own recognizers, no fork required. `validator` names a built-in
  // check-digit function (luhn, npi, dea, iban, nhs) β€” config supplies data,
  // never code.
  "recognizers": [
    {
      "entity_type": "EMPLOYEE_ID",
      "regex": "\\bEMP-\\d{6}\\b",
      "base_score": 0.85,
      "context": ["employee", "badge"],
      "context_required": false
    }
  ],

  "audit_log": true
}

A ready-to-copy example lives at examples/umbryn_config.json.

Entity coverage

EntityRegex engine (default)Presidio engine ([presidio])
Email, Phone, SSN, Credit card, IP, URLβœ…βœ…
NPI (Luhn + 80840 check digit)βœ…βœ…
DEA (check digit)βœ…βœ…
Medicare MBI (position-typed)βœ…βœ…
MRN (context-anchored)βœ…βœ…
Medicare HICN (SSN + beneficiary code)βœ…βœ…
CLIA lab numberβœ…βœ…
US ITIN (9XX-range structure)βœ…βœ…
UK NHS number (mod-11 check)βœ…βœ…
Canadian SIN (Luhn check)βœ…βœ…
US driver's license (context-anchored)βœ…βœ…
IBAN (mod-97 / ISO 7064 check)βœ…βœ…
Person namesβŒβœ… (spaCy NER)
Addresses / locationsβŒβœ… (spaCy NER)
Custom recognizers (your regex + check digit, via config)βœ…βœ…

Benchmark

Detection quality is measured, not asserted. The numbers below are the default (zero-dependency) engine scored against the synthetic eval corpus β€” 200 generated documents, ~1,800 labeled spans, with checksum-failing look-alikes woven in as distractors to keep precision honest. Reproduce them with python eval/run_eval.py --markdown.

EntityPrecisionRecallF1TPFPFN
CANADA_SIN1.001.001.008700
CLIA_NUMBER *1.001.001.0010500
CREDIT_CARD1.001.001.007200
DEA_NUMBER *1.001.001.0011900
EMAIL_ADDRESS1.001.001.0014400
IBAN_CODE1.001.001.008700
IP_ADDRESS1.001.001.006200
MEDICAL_RECORD_NUMBER *1.001.001.0020000
MEDICARE_BENEFICIARY_ID *1.001.001.0012600
MEDICARE_HICN *1.001.001.007800
NPI *0.941.000.97200120
PHONE_NUMBER1.001.001.0014400
UK_NHS_NUMBER1.001.001.009500
US_DRIVERS_LICENSE *1.001.001.008100
US_ITIN1.001.001.009700
US_SSN *1.001.001.0013600

\* = HIPAA-relevant identifier, subject to the CI quality gate. Aggregate over the gated set: precision 0.99, recall 1.00. The gate fails the build if recall drops below 0.90 or precision below 0.80. (NPI's 12 false positives are look-alike 10-digit numbers that happen to pass the Luhn/80840 check digit β€” a deliberate, fail-safe bias toward over-redaction.)

These are synthetic, best-case conditions with clean formatting and nearby context words; real-world text is messier. Treat this as a regression guardrail and a sanity check, not a guarantee β€” always evaluate on your own representative data.

Scope & honest limitations

This tool reduces PHI/PII exposure at one boundary. It does not make a system "HIPAA compliant." Compliance is a property of an entire system and organization β€” its policies, contracts, access controls, audit posture, and people β€” not of any single library. Running umbryn-mcp can be part of a compliant design, but it is not a certification, a guarantee, or a substitute for a Business Associate Agreement, a risk assessment, or legal counsel.

Concretely, this project does not: guarantee 100% detection (no detector does), de-identify beyond reversible redaction, cover non-text data, or act as a transparent proxy in v1 (redaction is via explicit tool calls you wire in). No detector is perfect β€” evaluate on your own representative data before relying on it. See docs/THREAT_MODEL.md for the full boundary, assumptions, and residual risks, and SECURITY.md to report issues.

How to contribute

Contributions are very welcome β€” this is a deliberately friendly place to make your first open-source PR, and the maintainer tries to respond quickly.

The easiest high-value contribution: add a detection recognizer for a new identifier (a regex + an optional check-digit validator + a test). The add-a-recognizer issue form doubles as the spec, and CONTRIBUTING.md walks through the six steps.

Other good ways to help: improve docs, add test cases or example client configs, or pick up something from the roadmap. Browse good first issues or open an issue to propose something.

bash
git clone https://github.com/Rinava/umbryn-mcp && cd umbryn-mcp
pip install -e ".[dev]"
pytest                 # fast invariant suite (Presidio faked, sub-second)
ruff check . && mypy src/umbryn_mcp
python eval/run_eval.py

The full guide β€” dev setup, conventions, and the no-real-PHI rule for fixtures β€” is in CONTRIBUTING.md. By contributing you agree your work is MIT-licensed.

License

MIT β€” matches Presidio and maximizes reuse. Built with Microsoft Presidio (optional) and the MCP Python SDK.

Related MCP Servers

View all in Developer Tools View all alternatives
  • M
    Mcp

    Detect prompt injection, jailbreaks, and code injection in untrusted text before it reaches an LLM.

    πŸ’» Developer Tools0 views
    Compare vs Mcp β†’
  • Claude Task Master logoClaude Task Master

    AI-powered task management system for AI-driven development. Features PRD parsing, task expansion, multi-provider support (Claude, OpenAI, Gemini, Perplexity, xAI), and selective tool loading for optimized context usage.

    πŸ’» Developer Tools7 views
    Compare vs Claude Task Master β†’
  • A
    Ai Netcafe

    Compare LLM cost & latency on one prompt, translate PDF keeping layout, cited research, make PPTX

    πŸ’» Developer Tools0 views
    Compare vs Ai Netcafe β†’
  • Shadcn Ui Mcp Server logoShadcn Ui Mcp Server

    MCP server that gives AI assistants seamless access to shadcn/ui v4 components, blocks, demos, and metadata.

    πŸ’» Developer Tools2 views
    Compare vs Shadcn Ui Mcp Server β†’

Frequently Asked Questions about Umbryn Mcp

Add the following block to your claude_desktop_config.json under mcpServers: "mcpServers": { "umbryn-mcp": { "command": "npx", "args": ["-y", "umbryn-mcp"] } }

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewUmbryn Mcp AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/umbryn-mcp?style=directory)](https://allmcps.com/mcp/umbryn-mcp)
HTML Embed
<a href="https://allmcps.com/mcp/umbryn-mcp"><img src="https://allmcps.com/api/badge/umbryn-mcp?style=directory" alt="Umbryn Mcp on AllMCPs" /></a>

Technical Specs & Signals

CategoryπŸ’»Developer Tools
More technical detailsExpand β–Ύ
TransportSTDIO
RuntimeNode.js
0/4 checks healthy over the last 6h
Views0
Unique ViewsTotal visits recorded for this listing page on AllMCPs.
Installs0
Installs & Copy ActionsTotal times users copied install commands or configuration snippets for this server.
27Quality signal: Emerging Β· 27/100How this signal is calculated β–Ύ
Server availabilityNot measured

Not scored for repo-hosted servers β€” we can't reach the running server, only its GitHub page. Hosted MCP endpoints are health-checked live.

Verified ownership8/20
Documentation & tools11/30
Adoption & activity1/15
Community engagement0/10

A guidance signal from public completeness & health data β€” not a user rating. New listings start lower and rise as they add docs, get verified, and grow adoption. Signals we can't observe for a listing are skipped, not counted against it.

β˜… FeaturedMoxie Docs MCP logo

Moxie Docs MCP

MCP & Agent Skills for Automated Documentation, and codebase conventions + context

Explore Server β†’

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Free dofollow backlink: after claiming, verify your product site and place a dofollow AllMCPs badge β€” we recheck it stays live.

Claim & get free dofollow

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.

Explore more

More in πŸ’» Developer Tools β†’Best MCP servers for Developers β†’Alternatives to Umbryn Mcp β†’Install in Claude DesktopInstall in CursorInstall in VS Code