Priva-MCP adalah proxy MCP man-in-the-middle yang menyensor PII โ CIF, nomor rekening, PAN kartu debit, saldo, email, telepon โ di level field, dan memblokir respons apa pun yang membawa rahasia terlarang.
Arsitektur
Claude tidak pernah bicara langsung ke internal API Anda. Setiap hasil tool dicegat, disensor, diaudit โ dan diblokir bila membawa rahasia keras.
Kenapa Priva-MCP
Lapis 1 menyensor berdasarkan nama key field (presisi); Lapis 2 cadangan regex global untuk teks bebas. NIK 16 digit tak lagi salah dikira kartu kredit.
Penanganan kelas satu untuk cifNumber, accountNumber, pan, phoneNumber dan lainnya โ case-insensitive, anti-tabrakan.
Saldo dan nominal tetap bertipe number JSON agar AI bisa berhitung. Pada mode ketat di-nol-kan, tidak pernah dirusak jadi "X".
Bocornya password, pin, cvv atau secret memblokir seluruh respons. Claude dapat error aman; nilai rahasia tak pernah dicatat.
Setiap panggilan dicatat ke audit.log (JSON Lines). Pelanggaran berat memunculkan insiden gaya ECS ke stderr untuk diserap ELK / Logstash.
TypeScript ketat, tanpa any, traversal rekursif atas JSON tak tepercaya, dan 28 unit test lewat runner bawaan node:test.
Penyensoran level field
Yang dikembalikan internal API vs. yang benar-benar diterima Claude (mode ketat).
Zero-trust
Jika sumber tak sengaja menyertakan pin, seluruh payload dibuang.
{
"content": [{
"type": "text",
"text": "Error: respons diblokir oleh
kebijakan privasi & kepatuhan."
}],
"isError": true
}
{
"@timestamp": "...",
"log.level": "error",
"event.action":
"compliance.critical_violation",
"event.outcome": "blocked",
"violations": [
{ "path": "$.pin", "key": "pin" }
]
}
Insiden mencatat key, path, dan alasan โ bukan nilai rahasianya.
Privasi & data
Data mentah tetap di mesinmu. Hanya hasil tersensor yang menyeberang batas ke model.
Output tool yang tersensor (mis. REDACTED-CIF, XXXX-โฆ-1111) plus prompt yang kamu ketik โ model butuh itu untuk menjawab.
PII mentah (cuma di RAM lokal), field terlarang yang diblokir, dan log audit / insiden โ semua tetap di mesinmu.
Masker sebagian (4 digit akhir) tetap keluar, dan teks chat-mu sendiri tidak disensor โ hanya output tool.
Implementasi
git clone https://github.com/adhidevara/priva-mcp.git cd priva-mcp npm install
npm run build npm test # 28 lulus npm start # jalan via stdio
Tambahkan ini ke claude_desktop_config.json (pakai path absolut ke dist/server.js), lalu restart Claude Desktop.
{
"mcpServers": {
"priva-mcp": {
"command": "node",
"args": ["/path/absolut/ke/priva-mcp/dist/server.js"],
"env": {
"COMPLIANCE_STRICT": "true",
"AUDIT_LOG_PATH": "/path/absolut/ke/priva-mcp/audit.log"
}
}
}
}
Dua tool tersedia langsung. CIF mock: CIF-7782001, CIF-7782002.
// di Claude: get_customer_profile { cifNumber: "CIF-7782001" } get_financial_report { cifNumber: "CIF-7782001" } // โ mengembalikan payload yang sudah disensor & diaudit