Skip to main content
Glama
luqni

Shifr Shield

by luqni

πŸ›‘οΈ Shifr Shield β€” Managed MCP Data Gateway Platform

Zero-Trust Data Firewall & Security Gateway for AI Assistants & LLMs

Laravel PostgreSQL TypeScript Model Context Protocol Tabler UI License


πŸ“Œ Executive Summary & Problem Statement

Menghubungkan AI Assistant (seperti Claude Desktop, Cursor, Copilot, atau Agen LLM) langsung ke database operasional perusahaan menimbulkan risiko keamanan dan kepatuhan yang sangat kritis:

  1. Risiko Destruktif (Halusinasi AI): AI dapat tanpa sengaja menghasilkan query mutasi data (UPDATE, DELETE, DROP TABLE, TRUNCATE).

  2. Kebocoran Data Sensitif (PII & Finansial): LLM menyerap nomor kartu kredit, hash password, atau informasi gaji ke dalam konteks memorinya.

  3. Database Crash (DoS / Memory Exhaustion): AI menjalankan query SELECT * jutaan baris tanpa klausa LIMIT.

  4. Blind Spot Kepatuhan: Tidak adanya jejak audit (audit trail) query apa saja yang dieksekusi oleh AI ke database internal.

Shifr Shield hadir sebagai Managed MCP Data Gateway yang berfungsi sebagai Firewall Data & Proksi Cerdas. Shifr Shield berdiri di antara AI Assistant dan database, memastikan setiap query diperiksa, dibatasi, disanitasi, disensor (data masking), dan dicatat secara real-time.


Related MCP server: MCP DB Gateway

πŸ—οΈ Architecture Overview

               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚    Client Layer: Claude Desktop / Cursor / CLI Agent   β”‚
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                           β”‚ MCP Protocol over SSE
                                           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Shifr Shield Data Plane (/mcp-gateway) β€” Node.js & TypeScript               β”‚
β”‚                                                                                         β”‚
β”‚  - Endpoint: GET /sse & POST /messages                                                   β”‚
β”‚  - Autentikasi: Bearer Token dinamis terhadap tabel api_keys (SHA-256 Hash)            β”‚
β”‚  - Tools Terdaftar: get_schema_metadata, run_readonly_query                              β”‚
β”‚  - Security & Enforcement Engine:                                                       β”‚
β”‚      * Read-Only Enforcer (Memblokir INSERT, UPDATE, DELETE, DROP, ALTER, TRUNCATE)     β”‚
β”‚      * Whitelist Tables Guard (Hanya tabel diizinkan yang dapat dibaca)                 β”‚
β”‚      * Automatic LIMIT Injection (Menyisipkan batas baris otomatis)                     β”‚
β”‚      * Dynamic Data Masking Engine (Full Redact [REDACTED] & Partial Masking)           β”‚
β”‚      * Direct Audit Logger (Streaming catatan audit langsung ke PostgreSQL)             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ Read-Only SQL                    β”‚ Writes Audit Logs
                            β–Ό                                  β–Ό
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚ Guarded Database Target β”‚        β”‚   Control Plane DB      β”‚
               β”‚   (Remote/Local PG)     β”‚        β”‚   (PostgreSQL:          β”‚
               β”‚                         β”‚        β”‚    shifr_shield)        β”‚
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                              β”‚
                                                  Eloquent ORMβ”‚ Management
                                                              β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          Shifr Shield Web Admin & Control Plane β€” Laravel 12 + Tabler UI                β”‚
β”‚                                                                                         β”‚
β”‚  - Dashboard (/dashboard): Metrik queries, latency, connection status (.card-sm)        β”‚
β”‚  - Database Sources (/databases): Tambah koneksi & AJAX ping test connection             β”‚
β”‚  - Security Policies (/databases/{id}/policies): Whitelist tabel & repeater masking formβ”‚
β”‚  - API Keys (/api-keys): One-time key display & snippet claude_desktop_config.json      β”‚
β”‚  - Audit Logs (/audit-logs): Tabler pagination & inspeksi Query Mentah vs Sanitasi      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🌟 Fitur Utama

1. Control Plane & Web Admin Panel (Laravel 12 + Tabler UI)

  • 100% Tabler UI Design System: Menggunakan murni class HTML bawaan Tabler Core (.page, .page-wrapper, .card, .card-sm, .table-vcenter, .badge.bg-success-lt, .status-dot-animated) tanpa inline CSS baru.

  • Dashboard Overview (/dashboard): Menampilkan metrik real-time: Total Queries, Blocked Queries, Active DB Connections, dan Average Latency (ms), serta 5 riwayat query audit terbaru.

  • Database Sources (/databases): Manajemen koneksi PostgreSQL. Dilengkapi tombol "Test Connection" interaktif (AJAX ping langsung) yang memperbarui badge status seketika tanpa reload halaman.

  • Security & Policy Rules (/databases/{id}/policies):

    • Table Whitelist: Memilih tabel mana yang diizinkan untuk diakses AI. Query ke tabel lain otomatis diblokir.

    • Column Data Masking Repeater (Alpine.js): Konfigurasi masking kolom sensitif:

      • Full Redact: Nilai kolom diubah 100% menjadi [REDACTED].

      • Partial Mask: Sensor sebagian (contoh: b***o@enterprise.id atau 41β€’β€’β€’β€’β€’β€’β€’β€’4444).

    • Max Query Limit: Batas maksimum hasil baris (default: 50).

  • API Keys & MCP Setup (/api-keys): Generate token gateway dengan format prefix aman (shifr_live_β€’β€’β€’β€’). Dilengkapi modal One-Time Display dan snippet konfigurasi claude_desktop_config.json siap salin.

  • Audit Logs (/audit-logs): Jejak audit menyeluruh dengan filter pencarian dan modal detail untuk membandingkan Query Mentah (Input AI) vs Query Hasil Sanitasi (Guarded Output).

2. Data Plane Engine (Node.js + TypeScript MCP Gateway)

  • SSE Transport Server: Mendengarkan koneksi Server-Sent Events pada http://localhost:3000/sse sesuai spesifikasi @modelcontextprotocol/sdk.

  • Bearer Token Authentication: Memvalidasi token header Authorization: Bearer shifr_live_*** secara langsung terhadap tabel api_keys di PostgreSQL.

  • Exposed MCP Tools:

    • get_schema_metadata: Memberikan daftar tabel dan tipe kolom yang hanya diizinkan oleh whitelist policy.

    • run_readonly_query: Menjalankan query SQL dengan guardrail ketat.

  • Strict Read-Only Enforcement: Memblokir seketika kata kunci mutasi (INSERT, UPDATE, DELETE, DROP, ALTER, TRUNCATE, CREATE, REPLACE, GRANT, REVOKE, dll.) dan stacked queries (pemisah ;).

  • Automatic Limit Injection: Jika AI tidak menyertakan LIMIT, gateway menyisipkan batasan aman secara otomatis.

  • Zero-Trust Password Decryption: Password database target didekripsi secara aman di memori menggunakan APP_KEY Laravel (AES-256-CBC).

3. Natural Language Testing Agent CLI (npm run ask)

Memungkinkan pengguna menguji eksekusi query menggunakan Bahasa Indonesia / bahasa manusia non-teknis langsung dari terminal tanpa harus meng-install Claude Desktop.


πŸ“ Struktur Direktori Proyek

riset-mcp/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ Http/Controllers/
β”‚   β”‚   β”œβ”€β”€ ApiKeyController.php          # Manajemen token gateway & snippet Claude
β”‚   β”‚   β”œβ”€β”€ AuditLogController.php         # Riwayat query & inspeksi sanitasi
β”‚   β”‚   β”œβ”€β”€ DashboardController.php        # Ringkasan metrik gateway
β”‚   β”‚   β”œβ”€β”€ DatabaseSourceController.php   # Manajemen koneksi PG & test connection
β”‚   β”‚   └── SecurityPolicyController.php   # Whitelist tabel & aturan masking
β”‚   └── Models/
β”‚       β”œβ”€β”€ ApiKey.php                     # Model token gateway (SHA-256 hash)
β”‚       β”œβ”€β”€ DatabaseSource.php             # Model koneksi target (AES-256 password)
β”‚       β”œβ”€β”€ GatewayAuditLog.php            # Model catatan audit eksekusi
β”‚       └── SecurityPolicy.php             # Model aturan whitelist & masking
β”œβ”€β”€ database/
β”‚   β”œβ”€β”€ migrations/
β”‚   β”‚   └── 2026_10_14_000001_create_shifr_shield_tables.php
β”‚   └── seeders/
β”‚       └── DatabaseSeeder.php             # Seeder data demo & tabel demo_customers
β”œβ”€β”€ resources/
β”‚   β”œβ”€β”€ css/app.css                        # Import Tabler Core CSS
β”‚   β”œβ”€β”€ js/app.js                          # Import Tabler Core JS & Alpine.js
β”‚   └── views/
β”‚       β”œβ”€β”€ api-keys/index.blade.php       # Halaman API Keys & MCP instruction
β”‚       β”œβ”€β”€ audit-logs/index.blade.php     # Halaman Audit Logs & detail modal
β”‚       β”œβ”€β”€ components/
β”‚       β”‚   β”œβ”€β”€ tabler-badge.blade.php     # Komponen Tabler badge dinamis
β”‚       β”‚   └── tabler-card.blade.php      # Komponen Tabler card standar
β”‚       β”œβ”€β”€ dashboard/index.blade.php      # Halaman Dashboard utama
β”‚       β”œβ”€β”€ databases/index.blade.php      # Halaman daftar koneksi database
β”‚       β”œβ”€β”€ layouts/app.blade.php          # Layout utama Tabler UI
β”‚       β”œβ”€β”€ partials/pagination.blade.php  # Pagination Blade berbasis Tabler
β”‚       └── policies/edit.blade.php        # Form whitelist tabel & masking repeater
β”œβ”€β”€ routes/
β”‚   └── web.php                            # Rute aplikasi web
β”œβ”€β”€ tests/
β”‚   └── Feature/ExampleTest.php            # Unit & Feature Test suite (100% Passed)
β”‚
└── mcp-gateway/                           # πŸ›‘οΈ Data Plane Engine (TypeScript)
    β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ crypto.ts                      # SHA-256 hashing & Laravel AES-256 decrypter
    β”‚   β”œβ”€β”€ db.ts                          # PG connection pooling & audit log recorder
    β”‚   β”œβ”€β”€ index.ts                       # Express SSE server (/sse & /messages)
    β”‚   β”œβ”€β”€ mcp-server.ts                  # MCP Tools: get_schema_metadata, run_readonly_query
    β”‚   └── policy.ts                      # Query validator, auto-limit, data masking engine
    β”œβ”€β”€ ask-cli.ts                         # Natural language query tester (Bahasa Indonesia)
    β”œβ”€β”€ query-cli.ts                       # Direct SQL query tester
    β”œβ”€β”€ test-gateway.ts                    # Automated integration test suite
    β”œβ”€β”€ package.json
    └── tsconfig.json

βš™οΈ Prasyarat Sistem

  • PHP: >= 8.2 (ekstensi: pdo_pgsql, openssl, mbstring)

  • Composer: >= 2.x

  • Node.js: >= 20.x & npm >= 10.x

  • PostgreSQL: >= 14.x


πŸš€ Panduan Instalasi & Setup

1. Clone Repository & Konfigurasi Lingkungan

git clone <url-repo-anda> riset-mcp
cd riset-mcp

# Setup environment Laravel
cp .env.example .env

Pastikan konfigurasi PostgreSQL di .env sudah sesuai:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=shifr_shield
DB_USERNAME=postgres
DB_PASSWORD=your_postgres_password

MCP_GATEWAY_URL=http://localhost:3000

2. Install Dependensi & Migrasi Database

# Install paket PHP
composer install

# Generate App Key (kunci enkripsi AES-256)
php artisan key:generate

# Jalankan migrasi dan isi data demo (demo_customers, policy, dan API Key bawaan)
php artisan migrate --seed

# Install asset frontend Tabler & Alpine.js
npm install
npm run build

3. Setup MCP Gateway (Data Plane)

cd mcp-gateway
cp .env.example .env

Sesuaikan file mcp-gateway/.env (pastikan APP_KEY sama persis dengan APP_KEY pada file root .env):

PORT=3000
SHIFR_DB_HOST=127.0.0.1
SHIFR_DB_PORT=5432
SHIFR_DB_NAME=shifr_shield
SHIFR_DB_USER=postgres
SHIFR_DB_PASSWORD=your_postgres_password
APP_KEY=base64:UL/uXWWYcM13SsElMcSamVtGD4RYboJMBhpPGN03I1Q=

Install dependensi TypeScript MCP Gateway:

npm install
npm run build

πŸƒ Cara Menjalankan Layanan

Buka 2 tab terminal:

Terminal 1 β€” Jalankan Web Admin Laravel

cd riset-mcp
php artisan serve --port=8000

Akses di browser: http://localhost:8000

Terminal 2 β€” Jalankan MCP Data Gateway

cd riset-mcp/mcp-gateway
npm start

Gateway akan aktif pada:

  • SSE Transport Endpoint: http://localhost:3000/sse

  • Health Check: http://localhost:3000/health


πŸ§ͺ Panduan Pengujian & Demo Fitur

Anda memiliki 4 opsi mudah untuk menguji Shifr Shield:

Opsi A: Natural Language CLI Tester (Bahasa Indonesia) πŸ—£οΈ

Anda bisa menguji kemampuan gateway dengan bahasa manusia langsung di terminal:

cd mcp-gateway

# Query data pelanggan aktif
npm run ask "tampilkan semua pelanggan aktif"

# Menghitung agregasi data
npm run ask "berapa total jumlah pelanggan kita?"

# Menampilkan pelanggan pending
npm run ask "siapa saja pelanggan yang masih pending?"

# Menguji pencegahan mutasi berbahaya
npm run ask "tolong hapus data pelanggan yang suspended"

Opsi B: Direct SQL CLI Tester ⚑

Menjalankan SQL query langsung melalui gateway SSE:

cd mcp-gateway

# Test query read-only (akan di-masking otomatis)
npm run query "SELECT * FROM demo_customers"

# Test pembatalan mutasi
npm run query "DELETE FROM demo_customers WHERE id = 1"

# Test pembatalan tabel di luar whitelist
npm run query "SELECT * FROM pg_database"

Opsi C: Anthropic MCP Inspector (Browser GUI) 🌐

Uji antarmuka visual MCP tanpa Claude Desktop:

npx @modelcontextprotocol/inspector
  1. Masukkan URL: http://localhost:3000/sse

  2. Masukkan Header: Authorization: Bearer shifr_live_claudedesktoptestkey2026alpha

  3. Klik Connect dan jalankan tool run_readonly_query.

Opsi D: Menghubungkan ke Claude Desktop πŸ€–

Buka file claude_desktop_config.json di komputer Anda:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Tambahkan blok konfigurasi berikut:

{
  "mcpServers": {
    "shifr-shield": {
      "url": "http://localhost:3000/sse",
      "headers": {
        "Authorization": "Bearer shifr_live_claudedesktoptestkey2026alpha"
      }
    }
  }
}

Restart Claude Desktop. Claude kini memiliki akses aman ke PostgreSQL yang diawasi oleh Shifr Shield.


πŸ”’ Security Model & Guardrails

Guardrail

Aturan Penegakan

Contoh Respon Gateway

Query Mutasi

Memblokir INSERT, UPDATE, DELETE, DROP, ALTER, TRUNCATE, dll.

[SHIFR SHIELD SECURITY BLOCKED]: Blocked: Only read-only queries are permitted

Stacked Query

Memblokir query ganda dengan tanda titik koma (;).

[SHIFR SHIELD SECURITY BLOCKED]: Multiple stacked queries are strictly prohibited

Table Whitelist

Hanya tabel terdaftar di policy (demo_customers, users) yang dapat dibaca.

[SHIFR SHIELD SECURITY BLOCKED]: Table 'pg_database' is not in the whitelist

Limit Injection

Otomatis menambahkan atau meng-clamp klausa LIMIT ke nilai maksimum policy.

Query SELECT * FROM tbl otomatis diubah menjadi SELECT * FROM tbl LIMIT 25

Column Masking

Menyensor data sensitif sebelum dikirim ke AI.

credit_card &rarr; [REDACTED]email &rarr; b***o@enterprise.id

Audit Logging

Mencatat setiap query, durasi (ms), status, dan sanitasi query ke database.

Tercatat di tabel gateway_audit_logs & dapat diinspeksi di /audit-logs


πŸ“Š Hasil Pengujian Otomatis (Test Suite)

  1. Laravel Feature & Unit Tests:

    php artisan test

    Output: Tests: 7 passed (14 assertions) β€” 100% pengujian rute dashboard, databases, policies, API keys, dan audit logs lolos verifikasi.

  2. MCP Gateway Automated Integration Tests:

    cd mcp-gateway && npx tsx test-gateway.ts

    Output: πŸŽ‰ ALL MCP GATEWAY INTEGRATION TESTS PASSED PERFECTLY! β€” Menguji autentikasi 401, metadata skema, masking data, pencegahan mutasi DROP, dan penolakan tabel non-whitelist.


πŸ—ΊοΈ Roadmap Pengembangan (Next Milestones)

  • Multi-Database Support: Dukungan konektor MySQL, Microsoft SQL Server, dan Snowflake.

  • Role-Based Access Control (RBAC): Kebijakan policy per role pengguna AI.

  • Live Alerting: Webhook notifikasi Slack / Discord untuk percobaan mutasi berbahaya.

  • Redis Caching Layer: Caching hasil query baca yang identik untuk menghemat resource database.


πŸ“„ Lisensi

Shifr Shield dikembangkan di bawah lisensi MIT License.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Secure MCP server for safe, read-only DB access by AI agents, with SQL guardrails, table allowlists, PII masking, and audit logs
    6
    27 npm
    8
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides governed, read-only PostgreSQL access for AI agents via MCP. Enforces schema/table allowlists, query limits, and audit events.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only, guarded access to business databases via MCP. Enables natural language querying with built-in security barriers like table allowlists, PII masking, and audit logging.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides a secure, policy-driven read-only gateway that exposes multiple databases to AI tools via MCP, with governed select, search, and aggregate operations and no free-form SQL.
    Apache 2.0