Lab pengantar ini memberikan gambaran menyeluruh tentang cara membangun server Model Context Protocol (MCP) dengan integrasi database. Anda akan memahami kasus bisnis, arsitektur teknis, dan aplikasi dunia nyata melalui studi kasus analitik Zava Retail di https://github.com/microsoft/MCP-Server-and-PostgreSQL-Sample-Retail.
Model Context Protocol (MCP) memungkinkan asisten AI untuk mengakses dan berinteraksi dengan sumber data eksternal secara aman dan real-time. Ketika digabungkan dengan integrasi database, MCP membuka kemampuan yang kuat untuk aplikasi AI berbasis data.
Jalur pembelajaran ini mengajarkan Anda cara membangun server MCP siap produksi yang menghubungkan asisten AI ke data penjualan ritel melalui PostgreSQL, dengan menerapkan pola perusahaan seperti Row Level Security, pencarian semantik, dan akses data multi-tenant.
Pada akhir lab ini, Anda akan dapat:
- Mendefinisikan Model Context Protocol dan manfaat utamanya untuk integrasi database
- Mengidentifikasi komponen utama arsitektur server MCP dengan database
- Memahami studi kasus Zava Retail dan kebutuhan bisnisnya
- Mengenali pola perusahaan untuk akses database yang aman dan skalabel
- Mendaftar alat dan teknologi yang digunakan sepanjang jalur pembelajaran ini
Asisten AI modern sangat kuat tetapi menghadapi keterbatasan signifikan saat bekerja dengan data bisnis dunia nyata:
| Tantangan | Deskripsi | Dampak Bisnis |
|---|---|---|
| Pengetahuan Statis | Model AI yang dilatih pada dataset tetap tidak dapat mengakses data bisnis terkini | Wawasan usang, peluang terlewatkan |
| Silo Data | Informasi terkunci dalam database, API, dan sistem yang tidak dapat dijangkau AI | Analisis tidak lengkap, alur kerja terfragmentasi |
| Kendala Keamanan | Akses langsung ke database meningkatkan risiko keamanan dan kepatuhan | Penerapan terbatas, persiapan data manual |
| Kueri Kompleks | Pengguna bisnis membutuhkan pengetahuan teknis untuk mendapatkan wawasan data | Adopsi berkurang, proses tidak efisien |
Model Context Protocol mengatasi tantangan ini dengan menyediakan:
- Akses Data Real-time: Asisten AI dapat melakukan kueri ke database dan API secara langsung
- Integrasi Aman: Akses terkontrol dengan autentikasi dan izin
- Antarmuka Bahasa Alami: Pengguna bisnis dapat bertanya dengan bahasa sehari-hari
- Protokol Standar: Dapat digunakan di berbagai platform dan alat AI
🏪 Kenali Zava Retail: Studi Kasus Pembelajaran Kita https://github.com/microsoft/MCP-Server-and-PostgreSQL-Sample-Retail
Sepanjang jalur pembelajaran ini, kita akan membangun server MCP untuk Zava Retail, sebuah rantai ritel DIY fiktif dengan beberapa lokasi toko. Skenario realistis ini menunjukkan implementasi MCP tingkat perusahaan.
Zava Retail mengoperasikan:
- 8 toko fisik di negara bagian Washington (Seattle, Bellevue, Tacoma, Spokane, Everett, Redmond, Kirkland)
- 1 toko online untuk penjualan e-commerce
- Katalog produk beragam termasuk alat, perangkat keras, perlengkapan taman, dan bahan bangunan
- Manajemen multi-level dengan manajer toko, manajer regional, dan eksekutif
Manajer toko dan eksekutif membutuhkan analitik berbasis AI untuk:
- Menganalisis kinerja penjualan di berbagai toko dan periode waktu
- Melacak tingkat inventaris dan mengidentifikasi kebutuhan restocking
- Memahami perilaku pelanggan dan pola pembelian
- Menemukan wawasan produk melalui pencarian semantik
- Menghasilkan laporan dengan kueri bahasa alami
- Menjaga keamanan data dengan kontrol akses berbasis peran
Server MCP harus menyediakan:
- Akses data multi-tenant di mana manajer toko hanya melihat data toko mereka
- Kueri fleksibel yang mendukung operasi SQL kompleks
- Pencarian semantik untuk penemuan produk dan rekomendasi
- Data real-time yang mencerminkan kondisi bisnis terkini
- Autentikasi aman dengan keamanan tingkat baris (Row Level Security)
- Arsitektur skalabel yang mendukung banyak pengguna secara bersamaan
Server MCP kita menerapkan arsitektur berlapis yang dioptimalkan untuk integrasi database:
┌─────────────────────────────────────────────────────────────┐
│ VS Code AI Client │
│ (Natural Language Queries) │
└─────────────────────┬───────────────────────────────────────┘
│ HTTP/SSE
▼
┌─────────────────────────────────────────────────────────────┐
│ MCP Server │
│ ┌─────────────────┐ ┌─────────────────┐ ┌───────────────┐ │
│ │ Tool Layer │ │ Security Layer │ │ Config Layer │ │
│ │ │ │ │ │ │ │
│ │ • Query Tools │ │ • RLS Context │ │ • Environment │ │
│ │ • Schema Tools │ │ • User Identity │ │ • Connections │ │
│ │ • Search Tools │ │ • Access Control│ │ • Validation │ │
│ └─────────────────┘ └─────────────────┘ └───────────────┘ │
└─────────────────────┬───────────────────────────────────────┘
│ asyncpg
▼
┌─────────────────────────────────────────────────────────────┐
│ PostgreSQL Database │
│ ┌─────────────────┐ ┌─────────────────┐ ┌───────────────┐ │
│ │ Retail Schema │ │ RLS Policies │ │ pgvector │ │
│ │ │ │ │ │ │ │
│ │ • Stores │ │ • Store-based │ │ • Embeddings │ │
│ │ • Customers │ │ Isolation │ │ • Similarity │ │
│ │ • Products │ │ • Role Control │ │ Search │ │
│ │ • Orders │ │ • Audit Logs │ │ │ │
│ └─────────────────┘ └─────────────────┘ └───────────────┘ │
└─────────────────────┬───────────────────────────────────────┘
│ REST API
▼
┌─────────────────────────────────────────────────────────────┐
│ Azure OpenAI │
│ (Text Embeddings) │
└─────────────────────────────────────────────────────────────┘
- FastMCP Framework: Implementasi server MCP modern dengan Python
- Pendaftaran Alat: Definisi alat deklaratif dengan keamanan tipe
- Konteks Permintaan: Manajemen identitas pengguna dan sesi
- Penanganan Kesalahan: Manajemen kesalahan dan logging yang kuat
- Connection Pooling: Manajemen koneksi asyncpg yang efisien
- Schema Provider: Penemuan skema tabel dinamis
- Query Executor: Eksekusi SQL yang aman dengan konteks RLS
- Manajemen Transaksi: Kepatuhan ACID dan penanganan rollback
- Row Level Security: PostgreSQL RLS untuk isolasi data multi-tenant
- Identitas Pengguna: Autentikasi dan otorisasi manajer toko
- Kontrol Akses: Izin yang terperinci dan jejak audit
- Validasi Input: Pencegahan injeksi SQL dan validasi kueri
- Pencarian Semantik: Embedding vektor untuk penemuan produk
- Integrasi Azure OpenAI: Pembuatan embedding teks
- Algoritma Kemiripan: Pencarian kemiripan cosine pgvector
- Optimasi Pencarian: Pengindeksan dan penyetelan kinerja
| Komponen | Teknologi | Tujuan |
|---|---|---|
| Framework MCP | FastMCP (Python) | Implementasi server MCP modern |
| Database | PostgreSQL 17 + pgvector | Data relasional dengan pencarian vektor |
| Layanan AI | Azure OpenAI | Embedding teks dan model bahasa |
| Kontainerisasi | Docker + Docker Compose | Lingkungan pengembangan |
| Platform Cloud | Microsoft Azure | Penerapan produksi |
| Integrasi IDE | VS Code | AI Chat dan alur kerja pengembangan |
| Alat | Tujuan |
|---|---|
| asyncpg | Driver PostgreSQL berkinerja tinggi |
| Pydantic | Validasi dan serialisasi data |
| Azure SDK | Integrasi layanan cloud |
| pytest | Kerangka kerja pengujian |
| Docker | Kontainerisasi dan penerapan |
| Layanan | Sumber Daya Azure | Tujuan |
|---|---|---|
| Database | Azure Database for PostgreSQL | Layanan database terkelola |
| Kontainer | Azure Container Apps | Hosting kontainer tanpa server |
| Layanan AI | Azure AI Foundry | Model OpenAI dan endpoint |
| Pemantauan | Application Insights | Observabilitas dan diagnostik |
| Keamanan | Azure Key Vault | Manajemen rahasia dan konfigurasi |
Mari kita eksplorasi bagaimana pengguna berinteraksi dengan server MCP kita:
Pengguna: Sarah, Manajer Toko Seattle
Tujuan: Menganalisis kinerja penjualan kuartal terakhir
Kueri Bahasa Alami:
"Tunjukkan 10 produk teratas berdasarkan pendapatan untuk toko saya di Q4 2024"
Apa yang Terjadi:
- VS Code AI Chat mengirimkan kueri ke server MCP
- Server MCP mengidentifikasi konteks toko Sarah (Seattle)
- Kebijakan RLS memfilter data hanya untuk toko Seattle
- Kueri SQL dibuat dan dijalankan
- Hasil diformat dan dikembalikan ke AI Chat
- AI memberikan analisis dan wawasan
Pengguna: Mike, Manajer Inventaris
Tujuan: Menemukan produk yang mirip dengan permintaan pelanggan
Kueri Bahasa Alami:
"Produk apa yang kita jual yang mirip dengan 'konektor listrik tahan air untuk penggunaan luar ruangan'?"
Apa yang Terjadi:
- Kueri diproses oleh alat pencarian semantik
- Azure OpenAI menghasilkan vektor embedding
- pgvector melakukan pencarian kemiripan
- Produk terkait diberi peringkat berdasarkan relevansi
- Hasil mencakup detail produk dan ketersediaan
- AI menyarankan alternatif dan peluang bundling
Pengguna: Jennifer, Manajer Regional
Tujuan: Membandingkan kinerja di semua toko
Kueri Bahasa Alami:
"Bandingkan penjualan berdasarkan kategori untuk semua toko dalam 6 bulan terakhir"
Apa yang Terjadi:
- Konteks RLS diatur untuk akses manajer regional
- Kueri multi-toko kompleks dibuat
- Data diaggregasi di seluruh lokasi toko
- Hasil mencakup tren dan perbandingan
- AI mengidentifikasi wawasan dan rekomendasi
Implementasi kita memprioritaskan keamanan tingkat perusahaan:
PostgreSQL RLS memastikan isolasi data:
-- Store managers see only their store's data
CREATE POLICY store_manager_policy ON retail.orders
FOR ALL TO store_managers
USING (store_id = get_current_user_store());
-- Regional managers see multiple stores
CREATE POLICY regional_manager_policy ON retail.orders
FOR ALL TO regional_managers
USING (store_id = ANY(get_user_store_list()));Setiap koneksi MCP mencakup:
- ID Manajer Toko: Pengidentifikasi unik untuk konteks RLS
- Penugasan Peran: Izin dan tingkat akses
- Manajemen Sesi: Token autentikasi yang aman
- Logging Audit: Riwayat akses lengkap
Lapisan keamanan yang beragam:
- Enkripsi Koneksi: TLS untuk semua koneksi database
- Pencegahan Injeksi SQL: Hanya kueri yang diparameterkan
- Validasi Input: Validasi permintaan yang komprehensif
- Penanganan Kesalahan: Tidak ada data sensitif dalam pesan kesalahan
Setelah menyelesaikan pengantar ini, Anda seharusnya memahami:
✅ Nilai MCP: Bagaimana MCP menjembatani asisten AI dan data dunia nyata
✅ Konteks Bisnis: Kebutuhan dan tantangan Zava Retail
✅ Gambaran Arsitektur: Komponen utama dan interaksinya
✅ Teknologi yang Digunakan: Alat dan kerangka kerja yang digunakan sepanjang jalur ini
✅ Model Keamanan: Akses data multi-tenant dan perlindungan
✅ Pola Penggunaan: Skenario kueri dunia nyata dan alur kerja
Siap untuk mendalami lebih jauh? Lanjutkan dengan:
Lab 01: Konsep Arsitektur Inti
Pelajari pola arsitektur server MCP, prinsip desain database, dan implementasi teknis mendetail yang mendukung solusi analitik ritel kita.
- Spesifikasi MCP - Dokumentasi resmi protokol
- MCP untuk Pemula - Panduan pembelajaran MCP yang komprehensif
- Dokumentasi FastMCP - Dokumentasi SDK Python
- Dokumentasi PostgreSQL - Referensi lengkap PostgreSQL
- Panduan pgvector - Dokumentasi ekstensi vektor
- Row Level Security - Panduan RLS PostgreSQL
- Dokumentasi Azure OpenAI - Integrasi layanan AI
- Azure Database for PostgreSQL - Layanan database terkelola
- Azure Container Apps - Kontainer tanpa server
Disclaimer: Ini adalah latihan pembelajaran menggunakan data ritel fiktif. Selalu ikuti kebijakan tata kelola dan keamanan data organisasi Anda saat menerapkan solusi serupa di lingkungan produksi.
Penafian:
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI Co-op Translator. Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis dapat mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau interpretasi yang keliru yang timbul dari penggunaan terjemahan ini.