Anonymix MCP
# 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+
- `uv` nebo `pip`
### Krok 1: Přidat MCP server do Claude Code
Přidejte do `~/.claude/settings.json`:
```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
---
## Alternativní instalace
### Přes pip
```bash
pip install anonymix-mcp
anonymix-mcp # spustí MCP server
```
### Pro vývoj
```bash
git clone https://github.com/dbuze/anonymix-mcp
cd anonymix-mcp
pip install -e ".[nametag,bert,gui]"
anonymix-mcp
```
### Ruční stažení modelů
```bash
python scripts/download_models.py
```
---
## Použ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í review
```
### Příklad workflow
1. Uložte citlivý dokument jako `smlouva.pdf`
2. V Claude Code: *"Anonymizuj mi smlouva.pdf"*
3. Claude zavolá `anonymize_file("smlouva.pdf")` → vrátí `smlouva_anonymized.txt` + `mapping_id`
4. Claude pracuje s anonymizovaným textem
5. *"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_id` je pouze UUID odkaz, ne samotná data
- Mapovací 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á | `[OSOBA_1]` |
| Organizace | Firma s.r.o., Ministerstvo | `[ORGANIZACE_1]` |
| Místo/adresa | Praha, ul. Mánesova 5 | `[MÍSTO_1]` |
| Rodné číslo | 850101/1234 | `[RČ_1]` |
| IČO | 12345678 | `[IČO_1]` |
| DIČ | CZ12345678 | `[DIČ_1]` |
| Bankovní účet | 123456789/0800 | `[ÚČET_1]` |
| Telefon | +420 777 123 456 | `[TEL_1]` |
| E-mail | jan@firma.cz | `[EMAIL_1]` |
| Datum | 15. 3. 2024 | `[DATUM_1]` |
| Částka | 50 000 Kč | `[ČÁSTKA_1]` |
| Spisová značka | 12 C 345/2020 | `[SPIS_ZN_1]` |
| Datová schránka | ab12cde | `[DS_1]` |
---
## GUI (volitelné)
Pro vizuální kontrolu a ruční úpravu entit:
```bash
pip install anonymix-mcp[gui]
streamlit run gui/app.py
```
Nebo 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)
TDQS
Scored across 5 tools
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.