MCP DB Wizard
resmiOracle için sizi işten attırmayacak bir MCP sunucusu. MCP sunucusu bir SQL istemi sunmaz ve Oracle'a nasıl giriş yapılacağını söyleyemez. Yalnızca seçilen nesneler ve SQL ifadeleri kullanılabilir.
DB Wizard MCP ile neler yapabilirsiniz?
- Küratörlüğü yapılmış PL/SQL rutinlerini çağırın — Asistanın,
synuser_js_admin_getadmintoolinfogibi onaylanmış bir paket prosedürünü çağırmasını isteyin; kayıtları, koleksiyonları ve tüm OUT parametrelerini döndürür. - Tek bir tablo satırı getirin —
synuser_activity_log_get_by_pkaracılığıyla birincil anahtara göre bir satır isteyin ve JSON nesnesi olarak geri alın. - Tablo verilerini ekleyin, güncelleyin veya silin — Asistana, oluşturulan
synuser_activity_log_insertaracını (ve_updateile_deletevaryantlarını) kullanarak satırları değiştirmesini talimat verin. - Sonraki sıra değerini alın —
synuser_job_id_nextval'dan sonraki sayıyı isteyin; başka hiçbir sıra işlemini açığa çıkarmadan. - Önceden onaylanmış SQL ifadelerini çalıştırın — Asistanın, adlandırılmış ve test edilmiş bir SQL dosyasını tür belirtilmiş bağlama parametreleriyle yürütmesini sağlayın; asla anlık sorgu metni oluşturmayın.
Dokümantasyon
Sizi işten ettirmeyecek bir Oracle MCP sunucusu
Yapılandırma, güvenlik modelinin tamamıdır
Aracı tarafından erişilebilir
synuser_activity_log_get_by_pktablosu — birincil anahtara göre tek satır, JSON nesnesi olaraksynuser_activity_log_inserttablosu — _update ve _delete ile, aynı seçimdensynuser_js_admin_getadmintoolinfoPL/SQL rutini — kayıtlar, koleksiyonlar ve her OUT parametresisynuser_job_id_nextvaldizisi — sonraki değer, başka hiçbir şey
Tasarım gereği erişilemez
- Çağırandan gelen SQL metni — argümanlar bağlama değerleridir
- DDL — create, alter, drop
- Seçmediğiniz herhangi bir nesne
- Yapılandırmanın adlandırmadığı herhangi bir şema
- Oracle parolası — ortam değişkeninde yaşar
SQL yazabilen bir aracı, DROP TABLE yazabilir. check_flight_availability adlı bir araca sahip bir aracı, bir uçuşta müsaitlik kontrolü yapabilir, çünkü önündeki kodun yaptığı tek şey budur.
Kürasyon, kod var olmadan önce gerçekleşir
En az ayrıcalık iddia etmesi kolay, doğrulaması zordur. Burada yapılandırma neyin üretileceğine karar verir: kimsenin seçmediği bir nesnenin aracı, yöntemi ve sınıfı yoktur. Çalışan bir süreç tarafından korunmak yerine ikili dosyada yoktur, bu nedenle hiçbir istem ona ulaşamaz.
İş kurallarınız zaten PL/SQL'de
Onlarca yıllık doğrulama, referans mantığı ve denetim davranışı paketlerin içinde yaşar. MCPDBWizard bu rutinleri olduğu gibi çağırır — kayıtlar, koleksiyonlar, ref cursor'lar ve döndürülen her OUT parametresi — bir dil modelinden kuralları bir SELECT'te yeniden icat etmesini istemek yerine.
Her çağrı, sorgu değil, adlandırılmış bir araçtır
İstekler, katı bir şemaya karşı synuser_activity_log_get_by_pk(entry_id) olarak gelir — yanlış yazılmış bir argüman, veritabanına dokunulmadan önce reddedilir. Günlüğe kaydetmek, hız sınırlamak, sonradan incelemek ve bir denetçiye açıklamak çok daha kolaydır.
İki kitle, iki kayıt
Proxy, hangi aracın kim tarafından çağrıldığını ve buna izin verilip verilmediğini yazar; her sunucu, aracın ne yaptığını ve nasıl sonuçlandığını yazar. Argüman adları her zaman; değerler yalnızca bunu açtıysanız, çünkü onları bir model seçti.
Oracle 12c'den 26ai'ye
O zamandan beri eklenen türler dahil: yerel JSON, BOOLEAN ve VECTOR ve JSON-ilişkisel ikilik görünümleri üzerinden belge CRUD'u. JSON'u dürüstçe geçemeyen herhangi bir şey — SDO_GEOMETRY, BFILE — tamamen atlanır ve günlük hangisinin ve neden olduğunu söyler.
Hesaplar, belirteçler ve bir yetki matrisi
Birçok hesap, birçok yapılandırma, yetki başına bir işaret. Aynı şema üzerinde farklı araçlara ihtiyaç duyan iki ekip, bir yapılandırma ve bir kural değil, iki yapılandırmadır — bu da ilk paneldeki garantiyi bozulmadan tutar.
- 01
Nesneleri seçin
Tasarım sayfalarını Oracle'a bağlayın ve açığa çıkarmak istediğiniz PL/SQL paketlerini, ayrıca kendinizin yazıp test ettiği SQL ifadelerini ve doğrudan erişilebilir olmasını istediğiniz tabloları ve dizileri işaretleyin. Bu seçim, bir yapılandırma dosyası olarak kaydedilir — özellikler veya JSON, sürümlenebilir ve parola içermez.
Önce PL/SQL, çünkü asıl nokta budur: açığa çıkarmak istediğiniz paketleri ve prosedürleri işaretleyin ve her biri, parametreleri türlendirilmiş tek bir araç haline gelir.
Sonra kendi SQL'iniz — yazdığınız ve test ettiğiniz, bağlama parametreleri satır içinde türlendirilmiş ifadeler. Aracı bunları çalıştırır; kendi ifadelerini oluşturmaz.
Son olarak tablolar, tablo başına değil işlem başına kürasyonlanır — yeni seçilen bir tablo salt okunurdur ve create, update ve delete işlemlerini işaretlemek size kalmıştır. - 02
Üret, derle, çalıştır
Runtime sayfası, tam olarak bu nesneler için Java üretir, derler ve onu loopback üzerinde kendi sunucusu olarak başlatır. Seçmediğiniz herhangi bir şeyin aracı, yöntemi ve sınıfı yoktur — yalnızca reddedilmek yerine ikili dosyada yoktur.docker run -d --name mcpdbwizard \ -p 8080:8080 \ -e MCPDBWIZARD_ORACLE_HOST=db.example.com \ -e MCPDBWIZARD_ORACLE_PORT=1521 \ -e MCPDBWIZARD_ORACLE_SID=/PDB1 \ -e MCPDBWIZARD_ORACLE_USER=appuser \ -e DB_PASS_FILE=/run/secrets/oracle \ -v mcpdbwizard-demo:/data \ ghcr.io/srmadscience/mcpdbwizard:2.0.4 - 03
MCP istemcinizi proxy'ye yönlendirin
Aracılar, hesaplarına verilen bir belirteçle Streamable HTTP üzerinden 8080'e bağlanır. Proxy, kimin çağırdığını bilen tek bileşendir — hesabı, yetkiyi ve hız sınırını kontrol eder, sonra iletir.{ "mcpServers": { "payroll": { "url": "http://localhost:8080/mcp/alice/payroll", "headers": { "Authorization": "Bearer <id>.<secret>" } } } }
Hızlı başlangıç belirteci verme ve yapılandırmayı yetkilendirme dahil tüm yolu içerir.