Anonymix MCP
Provides a web-based graphical interface for visual review and manual adjustment of detected entities within anonymized documents.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Anonymix MCPanonymize the file smlouva.pdf"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Anonymix MCP
MCP server pro anonymizaci českých právních dokumentů (smlouvy, rozsudky, žaloby).
Nahrazuje osobní údaje pseudonymy [OSOBA_1], [IČO_1] apod. — lokálně na vašem počítači,
žádná data neopouštějí váš stroj.
Instalace
Požadavky
Python 3.10+
uvnebopip
Krok 1: Přidat MCP server do Claude Code
Přidejte do ~/.claude/settings.json:
{
"mcpServers": {
"anonymix": {
"command": "uvx",
"args": ["anonymix-mcp"]
}
}
}Krok 2: Přidat skill
Zkopírujte SKILL.md do vašeho projektu nebo do globálního .claude/ adresáře.
Krok 3: Restart Claude Code
Při prvním použití se automaticky stáhnou jazykové modely (~290 MB celkem):
NameTag CNEC 2.0 (~8 MB) — češtinový NER model ÚFAL
DistilBERT multilingual (~280 MB) — záložní NER model
Related MCP server: ai-security-gateway-mcp
Alternativní instalace
Přes pip
pip install anonymix-mcp
anonymix-mcp # spustí MCP serverPro vývoj
git clone https://github.com/dbuze/anonymix-mcp
cd anonymix-mcp
pip install -e ".[nametag,bert,gui]"
anonymix-mcpRuční stažení modelů
python scripts/download_models.pyPoužití
Po instalaci jsou v Claude Code dostupné tyto MCP tools:
anonymize_text(text, depth="thorough")
→ anonymized_text, mapping_id, entity_count
anonymize_file(file_path, depth="thorough")
→ anonymized_path, mapping_id, entity_count
deanonymize(text, mapping_id)
→ original_text, replacements_made
get_status()
→ verze, dostupné modely, počet sessions
start_gui(port=8501)
→ URL Streamlit GUI pro vizuální reviewPříklad workflow
Uložte citlivý dokument jako
smlouva.pdfV Claude Code: "Anonymizuj mi smlouva.pdf"
Claude zavolá
anonymize_file("smlouva.pdf")→ vrátísmlouva_anonymized.txt+mapping_idClaude pracuje s anonymizovaným textem
"Deanonymizuj výsledek" → Claude zavolá
deanonymize(výsledek, mapping_id)
Bezpečnost
Anonymizace probíhá výhradně lokálně — Claude nikdy neuvidí originální data.
Pravidla:
mapping_idje pouze UUID odkaz, ne samotná dataMapovací tabulky jsou v
~/.cache/anonymix-mcp/sessions/— jen lokálněClaude nesmí tyto soubory číst (viz
CLAUDE.md)
Detekované entity
Typ | Příklad | Pseudonym |
Osoba | Jan Novák, Ing. Jana Procházková |
|
Organizace | Firma s.r.o., Ministerstvo |
|
Místo/adresa | Praha, ul. Mánesova 5 |
|
Rodné číslo | 850101/1234 |
|
IČO | 12345678 |
|
DIČ | CZ12345678 |
|
Bankovní účet | 123456789/0800 |
|
Telefon | +420 777 123 456 |
|
| ||
Datum | 15. 3. 2024 |
|
Částka | 50 000 Kč |
|
Spisová značka | 12 C 345/2020 |
|
Datová schránka | ab12cde |
|
GUI (volitelné)
Pro vizuální kontrolu a ruční úpravu entit:
pip install anonymix-mcp[gui]
streamlit run gui/app.pyNebo přes MCP tool: start_gui() → URL v prohlížeči.
Licence
MIT License — viz LICENSE
Jazykové modely:
NameTag CNEC 2.0: CC BY-NC-SA (ÚFAL, MFF UK) — pouze pro nekomerční použití
DistilBERT: Apache 2.0 (Davlan / HuggingFace)
Available Tools
5 toolsanonymize_fileA
Anonymizuje soubor (PDF, DOCX, MD, TXT) — nahradí PII pseudonymy.
Args: file_path: Absolutní cesta k souboru ke zpracování. depth: Hloubka detekce ("thorough" nebo "quick"). output_path: Výstupní cesta (volitelné). Výchozí: vedle originálu s příponou _anonymized.txt.
Returns: anonymized_path: Cesta k výstupnímu souboru s anonymizovaným textem. mapping_id: UUID pro pozdější deanonymizaci. UCHOVEJTE! entity_count: Počet nalezených entit. entities_summary: Počty entit dle typu. source_format: Formát vstupního souboru (pdf/docx/txt/md).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| depth | No | thorough | |
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behaviors: it replaces PII with pseudonyms, generates a mapping ID for later deanonymization (with strong warning to preserve it), and returns detailed statistics. It doesn't mention permissions, rate limits, or error conditions, but covers the core transformation behavior adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Perfectly structured with a clear opening sentence stating purpose, followed by organized sections for Args and Returns. Every sentence earns its place, providing essential information without redundancy. The Czech language doesn't affect conciseness scoring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (file processing with PII detection), no annotations, and the presence of an output schema, the description is remarkably complete. It explains the transformation process, parameters, return values (though output schema exists), and critical behavioral details like the mapping ID preservation requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining all three parameters: file_path (absolute path to process), depth (detection depth with enum values), and output_path (optional with default behavior). It provides crucial semantic information not in the schema, including default values and file naming conventions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('anonymizuje' - anonymizes) and resource ('soubor' - file) with supported formats listed (PDF, DOCX, MD, TXT). It distinguishes from sibling 'anonymize_text' by specifying file processing rather than text input, and from 'deanonymize' by being the forward operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (anonymizing files with PII) and implicitly distinguishes from 'anonymize_text' by specifying file input. However, it doesn't explicitly state when NOT to use it or mention all alternatives like 'deanonymize' for reverse operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anonymize_textA
Anonymizuje český text — nahradí PII pseudonymy jako [OSOBA_1], [IČO_1].
Args: text: Text k anonymizaci (smlouva, rozsudek, žaloba, ...). depth: Hloubka detekce. "thorough" — všechny vrstvy (regex + NameTag NER + BERT + slovník). Doporučeno. "quick" — pouze regex vzory (RČ, IČO, telefon, ...). Rychlé.
Returns: anonymized_text: Text s nahrazenými pseudonymy. mapping_id: UUID pro pozdější deanonymizaci. UCHOVEJTE pro deanonymizaci! entity_count: Celkový počet nalezených entit. entities_summary: Počty entit dle typu.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| depth | No | thorough |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it replaces PII with pseudonyms, generates a UUID for later deanonymization (with a strong warning to preserve it), and returns entity counts. It also explains the impact of the 'depth' parameter on detection methods. While it covers core functionality, it lacks details on error handling or performance characteristics like rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized, with a clear purpose statement followed by sections for Args and Returns. Each sentence adds value, such as explaining parameter options and emphasizing the importance of the mapping_id. It could be slightly more concise by integrating the 'depth' explanation more tightly, but overall it is efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (PII anonymization with multiple detection methods) and the presence of an output schema (which details return values like anonymized_text and mapping_id), the description is complete enough. It covers purpose, parameters, usage context, and key behaviors without redundancy. The output schema handles return value specifics, so the description appropriately focuses on operational guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully. It does so by explaining both parameters in detail: 'text' is described as the text to anonymize with examples (contract, judgment, complaint), and 'depth' is explained with clear semantics for 'thorough' (all layers: regex + NameTag NER + BERT + dictionary) and 'quick' (only regex patterns). This adds significant meaning beyond the basic schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs and resources: 'Anonymizuje český text — nahradí PII pseudonymy jako [OSOBA_1], [IČO_1]' (Anonymizes Czech text — replaces PII with pseudonyms like [PERSON_1], [ID_1]). It distinguishes itself from sibling tools like 'deanonymize' by focusing on the anonymization process rather than reversal or file handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: for anonymizing Czech text in documents like contracts, judgments, or complaints. It also offers guidance on the 'depth' parameter with recommendations ('thorough' is recommended). However, it does not explicitly state when not to use this tool or compare it to alternatives like 'anonymize_file' for file-based processing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deanonymizeA
Obnoví původní text nahrazením pseudonymů originálními hodnotami.
Používá se po zpracování anonymizovaného textu — vrátí výsledek s originálními údaji.
Args: text: Anonymizovaný text (nebo text zpracovaný Claudem) s pseudonymy jako [OSOBA_1]. mapping_id: UUID vrácené funkcí anonymize_text nebo anonymize_file.
Returns: original_text: Text s obnovenými originálními hodnotami. replacements_made: Počet provedených náhrad.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| mapping_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly describes the tool's behavior: it takes anonymized text with pseudonyms and a mapping_id, then returns text with original values and a count of replacements. It doesn't mention error conditions, rate limits, or authentication needs, but covers the core operation adequately for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a purpose statement, usage context, parameter explanations, and return values—all in four concise sentences. Every sentence adds value with no wasted words, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no annotations, but with output schema), the description is complete. It explains the purpose, usage context, parameter meanings, and return values. The output schema handles the return structure, so the description doesn't need to detail that further, making it well-rounded for the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It provides clear semantic meaning for both parameters: 'text: Anonymizovaný text (nebo text zpracovaný Claudem) s pseudonymy jako [OSOBA_1]' and 'mapping_id: UUID vrácené funkcí anonymize_text nebo anonymize_file'. This adds significant value beyond the bare schema, though it doesn't specify format details like UUID structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Obnoví původní text nahrazením pseudonymů originálními hodnotami' (Restores original text by replacing pseudonyms with original values). It specifies the verb (restore/replace), resource (text with pseudonyms), and distinguishes from siblings like anonymize_text and anonymize_file by being the inverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: 'Používá se po zpracování anonymizovaného textu' (Used after processing anonymized text). It also references specific alternatives by naming the functions that produce the required mapping_id: 'anonymize_text nebo anonymize_file' (anonymize_text or anonymize_file), providing clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusB
Vrátí informace o stavu Anonymix MCP serveru a dostupnosti modelů.
Returns: version: Verze anonymix-mcp. nametag_available: True pokud je NameTag NER dostupný. bert_available: True pokud je BERT NER dostupný. active_sessions: Počet uložených mapovacích tabulek. cache_dir: Cesta k cache adresáři. models: Detailní info o modelech.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what information is returned (server status, model availability, session counts, cache path), which is useful context. However, it doesn't mention whether this is a read-only operation (implied but not stated), potential rate limits, authentication requirements, or error conditions. The description adds some behavioral value but leaves gaps for a tool that queries server state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise and front-loaded: the first sentence clearly states the purpose, followed by a structured list of return values. The bilingual format (Czech and English) adds slight redundancy but doesn't significantly impact clarity. Every sentence earns its place by specifying what information is returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, but with an output schema implied by the 'Returns' section), the description is reasonably complete. It explains the purpose and details the return values, which compensates for the lack of annotations. Since an output schema exists (implied by the structured return description), the description doesn't need to explain return format further. However, it could better address behavioral aspects like error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description doesn't need to explain parameters, so it appropriately focuses on the return values. This meets the baseline of 4 for zero-parameter tools, as there's no parameter information to add beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Vrátí informace o stavu Anonymix MCP serveru a dostupnosti modelů' (Returns information about the status of the Anonymix MCP server and model availability). It specifies the verb ('returns') and resource ('server status and model availability'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'start_gui' which might also provide status information in a different context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, timing considerations, or comparisons with sibling tools like 'start_gui' (which might launch a GUI with status info) or other tools that might indirectly indicate server status. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_guiB
Spustí Streamlit GUI na localhostu pro vizuální revizi entit.
GUI umožňuje nahrát dokument, ručně upravit detekované entity, anonymizovat a deanonymizovat výsledek.
Args: port: Port pro Streamlit server (výchozí 8501).
Returns: url: URL na které běží GUI. pid: PID spuštěného procesu. message: Instrukce pro uživatele.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what the GUI enables (uploading documents, editing entities, anonymizing/deanonymizing), which adds useful context beyond basic launching. However, it doesn't cover critical behaviors like whether this is a blocking/non-blocking call, error handling, or resource implications (e.g., memory usage). The description doesn't contradict annotations (none exist), but it's incomplete for a tool that starts a GUI process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by GUI capabilities, and then parameter/return details in a structured format. Every sentence adds value, though the Args/Returns sections could be more integrated into the flow. It avoids redundancy and is efficiently written.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (launching a GUI with process management), the description is reasonably complete. It explains the purpose, GUI features, parameter semantics, and return values (with an output schema present, so return details aren't needed in the description). However, it lacks information on behavioral aspects like how to stop the GUI or interaction with sibling tools, preventing a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics for the single parameter: 'port: Port pro Streamlit server (výchozí 8501)' explains that 'port' is for the Streamlit server with a default value. Since schema description coverage is 0% (the schema only defines type and default without description), this compensates well. However, it doesn't detail port constraints (e.g., valid ranges) or conflicts, keeping it from a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Spustí Streamlit GUI na localhostu pro vizuální revizi entit' (Launches a Streamlit GUI on localhost for visual review of entities). It specifies the verb (launch), resource (Streamlit GUI), and high-level functionality (visual entity review). However, it doesn't explicitly differentiate from sibling tools like get_status, which might also provide status information about running processes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like anonymize_file or deanonymize, nor does it explain prerequisites (e.g., whether a document must be uploaded first) or typical workflows. The only implicit context is for 'vizuální revizi entit' (visual review of entities), but this lacks explicit when/when-not instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no overlap: anonymize_file handles file processing, anonymize_text processes raw text, deanonymize reverses the process, get_status provides server information, and start_gui launches a visual interface. The descriptions clearly differentiate between file vs text processing, anonymization vs deanonymization, and operational vs administrative functions.
All tools follow a consistent verb_noun pattern with clear, descriptive names: anonymize_file, anonymize_text, deanonymize, get_status, start_gui. The naming convention is uniform throughout, using snake_case consistently and clearly indicating each tool's primary action and target.
Five tools is perfectly appropriate for this document anonymization server. The set covers the core workflow (anonymize files/text, deanonymize), provides operational visibility (get_status), and offers a user-friendly interface option (start_gui). Each tool has a clear purpose and contributes meaningfully to the server's functionality without redundancy.
The tool set covers the essential anonymization workflow comprehensively: input processing (both file and text), reversal capability, system status, and a GUI option. The only minor gap is the lack of batch processing capabilities or configuration management tools, but agents can work around this by iterating through individual files. The core lifecycle of anonymize → deanonymize is fully supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Slovak court decisions as MCP tools. 12,000+ decisions, GDPR-compliant, pseudonymized, SLA-backed.
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
Detect and redact Norwegian PII (fodselsnummer, names, health data) in text and PDFs.
Related MCP Servers
- AlicenseAqualityBmaintenanceAnonymize PII and redact text for GDPR using real NLP, not just regex. Czech-first, built on ÚFAL/LINDAT (MasKIT + NameTag NER) with 80+ PII patterns. Also multilingual NER across 35+ languages, morphology (UDPipe), machine translation, and spellcheck. 6 tools. Non-commercial use only. Install: pip install anonymize-mcp64MIT
- AlicenseAqualityDmaintenanceScans prompts for PII and masks or redacts sensitive data locally before sending to an LLM, supporting multiple anonymization modes.1MIT
- AlicenseAqualityBmaintenanceSanitizes text and files by removing PII, secrets, and custom patterns locally before sending to LLMs, with optional reverse-scrubbing.33272MIT
- AlicenseAqualityAmaintenanceLocal pseudonymisation MCP server that detects PII in text, replaces it with opaque tokens before sending to cloud LLMs, and restores tokens afterward.286MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dbuzek/anonymix-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server