DSGVO.pro — German Digital-Law Compliance
Search 26 German/EU statutes free — then scan any website against 33 compliance modules.
Should I use this
Quality & Safety
Findings (9)
- HIGH
- MEDIUMin check-compliance
- MEDIUMin get-scan-status
- LOWin search-law
- LOWin get-article
- LOWin list-laws
- LOWin check-compliance
- LOWin get-scan-status
- LOWin get-scan-result
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"dsgvo-pro": {
"url": "https://dsgvo.pro/api/mcp"
}
}
}Remote endpoints
https://dsgvo.pro/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢search-law(query, law)
Search across all 26 German/EU statutes (DSGVO, KI-VO, BDSG, TDDDG, DDG, BFSG, UWG, BGB, PAngV, VSBG, UrhG, VerpackG, VerpackDG, ElektroG, JuSchG, GewO, MaBV, GEG, BRAO, FinVermV, HwO, IfSG, KosmetikVO, HWG, HOAI, MiLoG). Accepts paragraph references ("356a", "§ 312k", "Art. 42") for direct lookup AND free-text keywords ("Cookie", "Widerrufsbutton", "Einwilligung"). Returns matching articles/paragraphs with excerpts. Covers data protection, telecom & digital-services law, AI regulation, accessibility, unfair-competition (UWG), consumer and sector-specific law.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query text"
},
"law": {
"type": "string",
"enum": [
"dsgvo",
"ki-vo",
"bdsg",
"tdddg",
"ddg",
"bfsg",
"uwg",
"bgb",
"pangv",
"vsbg",
"urhg",
"verpackg",
"verpackdg",
"elektrog",
"juschg",
"gewo",
"mabv",
"geg",
"brao",
"finvermv",
"hwo",
"ifsg",
"kosmkv",
"hwg",
"hoai",
"milog"
],
"description": "Optional: limit search to a specific law"
}
},
"required": [
"query"
]
}Output Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"description": "Matching articles/paragraphs, max 20",
"items": {
"type": "object",
"properties": {
"law": {
"type": "string",
"description": "Law identifier, e.g. \"bgb\""
},
"num": {
"type": "number",
"description": "Article/paragraph number"
},
"suffix": {
"type": "string",
"description": "Letter suffix, e.g. \"a\" in §356a"
},
"title": {
"type": "string"
},
"excerpt": {
"type": "string",
"description": "Text excerpt around the match"
}
}
}
},
"totalMatches": {
"type": "number",
"description": "Total hits before the 20-item cap"
}
}
}🟢get-article(law, article)
Get the full German text of a specific article or paragraph from a law. Returns full text and metadata.
Input Schema
{
"type": "object",
"properties": {
"law": {
"type": "string",
"enum": [
"dsgvo",
"ki-vo",
"bdsg",
"tdddg",
"ddg",
"bfsg",
"uwg",
"bgb",
"pangv",
"vsbg",
"urhg",
"verpackg",
"verpackdg",
"elektrog",
"juschg",
"gewo",
"mabv",
"geg",
"brao",
"finvermv",
"hwo",
"ifsg",
"kosmkv",
"hwg",
"hoai",
"milog"
],
"description": "The law identifier"
},
"article": {
"type": [
"string",
"number"
],
"description": "The article or paragraph number. Letter suffixes are supported and required for norms like \"356a\" (§356a BGB Widerrufsbutton), \"312k\", \"312j\"."
}
},
"required": [
"law",
"article"
]
}Output Schema
{
"type": "object",
"properties": {
"law": {
"type": "string"
},
"lawName": {
"type": "string",
"description": "Full German name of the statute"
},
"num": {
"type": "string",
"description": "Article/paragraph incl. suffix, e.g. \"356a\""
},
"unit": {
"type": "string",
"description": "\"Artikel\" (EU regulations) or \"Paragraf\" (German statutes)"
},
"title": {
"type": "string"
},
"metadata": {
"type": "object",
"properties": {
"chapter": {
"type": [
"string",
"number",
"null"
]
},
"chapterTitle": {
"type": [
"string",
"null"
]
},
"scannerRelevant": {
"type": [
"array",
"null"
],
"description": "Scanner module ids this norm feeds, e.g. [\"widerruf_button\"]",
"items": {
"type": "string"
}
}
}
},
"text": {
"type": "string",
"description": "Full German text of the norm"
},
"error": {
"type": "string",
"description": "Set instead of the fields above when the norm was not found"
}
}
}🟢list-laws
List all available German/EU digital-law statutes with article/paragraph counts.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"laws": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifier to pass to search-law / get-article"
},
"name": {
"type": "string",
"description": "Short name, e.g. \"BDSG\""
},
"fullName": {
"type": "string"
},
"articleCount": {
"type": "number"
},
"unit": {
"type": "string",
"description": "\"Artikel\" or \"Paragraf\""
}
}
}
}
}
}🟢check-compliance(url)
🔑 Requires API key (Bearer header in MCP client config). Free tier: 3 scans/month — get a key at https://dsgvo.pro/api-keys. Start a compliance scan against up to 33 German digital law modules. Standard tier covers 20 modules across DSGVO, TDDDG, DDG, BFSG, UWG, BGB, PAngV including Schrems II hosting-location verification with SCC declaration audit, §312k BGB Kündigungsbutton, BFSG accessibility (active 28.06.2025). Pro/Agency tier (13 exclusive modules): §356a BGB Widerrufsbutton (active 19.06.2026 — currently the only EU compliance-scanner with this check), KI-VO transparency and data-processing requirements (Article 13/14 + Article 50 AI Act), advanced security audit (Art. 32 DSGVO — TLS protocol, mixed content, CMS-version CVE detection), tech-stack staleness (CMS/framework versions vs NVD CVE database), plus 8 industry-specific compliance modules — lawyer (BORA/BRAO), real-estate broker (§34c GewO + MaBV + §87 GEG energy-pass disclosure in listings), physician (BOÄ + HWG + Art. 9 GDPR sensitive-data), financial intermediary (§34d/f/h/i GewO + FinVermV), gastronomy (LMIV allergen labeling + PAngV + IfSG hygiene), cosmetics studio (KosmetikVO + HWG before/after imagery), construction (§34c GewO Bauträger-Erlaubnis + HwO + MiLoG/SOKA), hotel (BMG registration + PAngV tourist-tax inclusive pricing + GEG). Industry detection runs from page content — only triggers relevant checks. ⚠️ IMPORTANT: This tool returns only a scanId — NOT the results. The scan takes 60–120 seconds. After calling this, wait 60–90 seconds, then call get-scan-result with the scanId. Use get-scan-status to check progress without waiting for completion.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The website URL to scan (e.g. https://example.com)"
}
},
"required": [
"url"
]
}Output Schema
{
"type": "object",
"properties": {
"scanId": {
"type": "string",
"description": "Pass this to get-scan-status / get-scan-result"
},
"url": {
"type": "string",
"description": "Normalized URL that is being scanned"
},
"status": {
"type": "string",
"description": "\"pending\" right after the scan is queued"
},
"message": {
"type": "string"
},
"nextStep": {
"type": "string"
},
"hint": {
"type": "string"
},
"error": {
"type": "string",
"description": "Set instead of scanId when the scan could not be started"
},
"details": {
"type": "string"
}
}
}🟢get-scan-status(scanId)
Lightweight progress check for an in-progress compliance scan. Returns current status (pending/crawling/scanning/completed/failed) and how many modules have finished (20 Standard or up to 33 with Pro/Agency tier including Hosting-Standort (Schrems II) (Art. 13 lit. f DSGVO), Widerrufsbutton (§356a BGB), KI-Transparenz (Art. 50 KI-VO), Tech-Stack-Aktualität (Art. 32 DSGVO), Anwaltsspezifische Prüfung (BORA / BRAO), Maklerspezifische Prüfung (§34c GewO + MaBV + GEG), Arztspezifische Prüfung (BOÄ + HWG + Art. 9 DSGVO), Finanzvermittler-Prüfung (§34d/f/h/i GewO + FinVermV), Gastronomie-Prüfung (LMIV + PAngV + IfSG), Kosmetik-Prüfung (KosmetikVO + HWG + UWG), Bau-/Sanierung-Prüfung (§34c GewO + HwO + MiLoG), Hotel-/Beherbergung-Prüfung (BMG + PAngV + GEG + DSGVO)). Use this to poll progress. When status is 'completed', call get-scan-result for the full report.
Input Schema
{
"type": "object",
"properties": {
"scanId": {
"type": "string",
"description": "The scan ID returned by check-compliance"
}
},
"required": [
"scanId"
]
}Output Schema
{
"type": "object",
"properties": {
"scanId": {
"type": "string"
},
"url": {
"type": "string"
},
"status": {
"type": "string",
"description": "initializing | pending | crawling | scanning | completed | failed"
},
"modulesCompleted": {
"type": "number"
},
"modulesRunning": {
"type": "number"
},
"modulesTotal": {
"type": "number"
},
"startedAt": {
"type": "string",
"description": "ISO timestamp"
},
"ready": {
"type": "boolean",
"description": "true once the scan is completed or failed"
},
"message": {
"type": "string"
},
"error": {
"type": "string"
}
}
}🟢get-scan-result(scanId)
Get the full compliance report for a completed scan. Returns score (0–100), financial risk in EUR, per-module results, and all violations with law references, fine estimates, and fix instructions. ⚠️ Only call after the scan is complete — check status first with get-scan-status. If called while scan is still running, returns current progress instead of an error.
Input Schema
{
"type": "object",
"properties": {
"scanId": {
"type": "string",
"description": "The scan ID returned by check-compliance"
}
},
"required": [
"scanId"
]
}Output Schema
{
"type": "object",
"properties": {
"scanId": {
"type": "string"
},
"url": {
"type": "string"
},
"status": {
"type": "string",
"description": "initializing | pending | crawling | scanning | completed | failed"
},
"score": {
"type": "number",
"description": "Compliance score 0–100 (completed scans only)"
},
"riskLevel": {
"type": "string"
},
"modules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"module": {
"type": "string"
},
"score": {
"type": "number"
},
"maxScore": {
"type": "number"
},
"violationsCount": {
"type": "number"
},
"status": {
"type": "string"
}
}
}
},
"violations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"module": {
"type": "string"
},
"title": {
"type": "string"
},
"severity": {
"type": "string"
},
"law": {
"type": "string",
"description": "Law and paragraph, e.g. \"BGB §356a\""
},
"bussgeldrahmen": {
"type": [
"object",
"null"
],
"properties": {
"amountEur": {
"type": "number"
},
"paragraph": {
"type": "string"
},
"currency": {
"type": "string"
}
}
},
"noBussgeldReason": {
"type": [
"string",
"null"
],
"description": "Why no fine range applies, when bussgeldrahmen is null"
},
"fixSummary": {
"type": "string"
},
"fixSteps": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"modulesCompleted": {
"type": "number"
},
"modulesTotal": {
"type": "number"
},
"startedAt": {
"type": "string",
"description": "ISO timestamp"
},
"completedAt": {
"type": "string",
"description": "ISO timestamp"
},
"scanReportUrl": {
"type": "string",
"description": "Human-readable report on dsgvo.pro"
},
"message": {
"type": "string"
},
"error": {
"type": "string"
}
}
}Community
Evidence