MCP DB Wizard
आधिकारिकOracle के लिए एक MCP सर्वर जो आपको नौकरी से नहीं निकलवाएगा। यह MCP सर्वर SQL प्रॉम्प्ट उजागर नहीं करता, और आपको Oracle में लॉग इन करने का तरीका नहीं बता सकता। केवल चयनित ऑब्जेक्ट और SQL स्टेटमेंट ही उपयोग योग्य हैं।
DB Wizard MCP के साथ आप क्या कर सकते हैं?
- क्यूरेटेड PL/SQL रूटीन को कॉल करें — सहायक से किसी सत्यापित पैकेज प्रक्रिया जैसे
synuser_js_admin_getadmintoolinfoको आमंत्रित करने के लिए कहें, जो रिकॉर्ड, संग्रह और सभी OUT पैरामीटर लौटाती है। - एकल टेबल पंक्ति प्राप्त करें —
synuser_activity_log_get_by_pkके माध्यम से प्राथमिक कुंजी द्वारा एक पंक्ति का अनुरोध करें और इसे JSON ऑब्जेक्ट के रूप में वापस पाएं। - टेबल डेटा डालें, अपडेट करें या हटाएं — सहायक को जनरेट किए गए
synuser_activity_log_insertटूल (इसके_updateऔर_deleteवेरिएंट के साथ) के माध्यम से पंक्तियों को संशोधित करने का निर्देश दें। - अगला अनुक्रम मान प्राप्त करें — किसी अन्य अनुक्रम संचालन को उजागर किए बिना
synuser_job_id_nextvalसे अगला नंबर पूछें। - पूर्व-अनुमोदित SQL स्टेटमेंट चलाएं — सहायक से टाइप किए गए बाइंड पैरामीटर के साथ एक नामित, परीक्षण किया हुआ SQL फ़ाइल निष्पादित करवाएं, कभी भी तदर्थ क्वेरी टेक्स्ट न बनाएं।
दस्तावेज़
एक MCP सर्वर Oracle के लिए जो आपको नौकरी से नहीं निकलवाएगा
कॉन्फ़िगरेशन ही पूरा सुरक्षा मॉडल है
एजेंट के लिए सुलभ
synuser_activity_log_get_by_pkतालिका — प्राथमिक कुंजी द्वारा एक पंक्ति, JSON ऑब्जेक्ट के रूप मेंsynuser_activity_log_insertतालिका — _update और _delete के साथ, उसी चयन सेsynuser_js_admin_getadmintoolinfoPL/SQL रूटीन — रिकॉर्ड, कलेक्शन और हर OUT पैरामीटरsynuser_job_id_nextvalअनुक्रम — अगला मान, और कुछ नहीं
सुलभ नहीं, संरचना द्वारा
- कॉलर से SQL टेक्स्ट — तर्क बाइंड मान हैं
- DDL — create, alter, drop
- कोई भी ऑब्जेक्ट जिसे आपने चुना नहीं
- कोई भी स्कीमा जिसका नाम कॉन्फ़िगरेशन नहीं लेता
- Oracle पासवर्ड — यह पर्यावरण में रहता है
एक एजेंट जो SQL लिख सकता है, वह DROP TABLE लिख सकता है। एक एजेंट जिसके पास check_flight_availability नामक टूल है, वह उड़ान पर उपलब्धता जांच सकता है, क्योंकि उसके सामने बस इतना ही कोड है।
क्यूरेशन कोड के अस्तित्व में आने से पहले होता है
न्यूनतम विशेषाधिकार का दावा करना आसान है और सत्यापित करना कठिन। यहाँ कॉन्फ़िगरेशन तय करता है कि क्या उत्सर्जित होता है: जिस ऑब्जेक्ट को किसी ने चुना नहीं, उसके पास कोई टूल, कोई विधि और कोई क्लास नहीं है। यह बाइनरी से अनुपस्थित है, न कि चल रही प्रक्रिया द्वारा संरक्षित, इसलिए कोई प्रॉम्प्ट उस तक नहीं पहुँच सकता।
आपके व्यावसायिक नियम पहले से ही PL/SQL में हैं
दशकों का सत्यापन, संदर्भात्मक तर्क और ऑडिट व्यवहार पैकेजों के अंदर रहता है। MCPDBWizard उन रूटीनों को वैसे ही कॉल करता है जैसे वे हैं — रिकॉर्ड, कलेक्शन, रेफ कर्सर, और हर OUT पैरामीटर लौटाया गया — बजाय किसी भाषा मॉडल से SELECT में नियमों को फिर से आविष्कार करने के लिए कहने के।
हर कॉल एक नामित टूल है, क्वेरी नहीं
अनुरोध synuser_activity_log_get_by_pk(entry_id) के रूप में एक सख्त स्कीमा के विरुद्ध आते हैं — गलत वर्तनी वाला तर्क डेटाबेस को छूने से पहले अस्वीकार कर दिया जाता है। लॉग करना, दर-सीमित करना, बाद में समीक्षा करना और ऑडिटर को समझाना कहीं अधिक आसान है।
दो दर्शक, दो रिकॉर्ड
प्रॉक्सी लिखता है कि किसने कौन सा टूल कॉल किया और क्या इसकी अनुमति थी; प्रत्येक सर्वर लिखता है कि टूल ने क्या किया और यह कैसे समाप्त हुआ। तर्क नाम हमेशा; मान केवल तभी यदि आपने उसे चालू किया, क्योंकि एक मॉडल ने उन्हें चुना।
Oracle 12c से 26ai तक
तब से जोड़े गए प्रकारों सहित: मूल JSON, BOOLEAN और VECTOR, और JSON-संबंधी द्वैत दृश्यों पर दस्तावेज़ CRUD। जो कुछ भी JSON को ईमानदारी से पार नहीं कर सकता — SDO_GEOMETRY, BFILE — पूरी तरह से छोड़ दिया जाता है, और लॉग बताता है कि कौन सा और क्यों।
खाते, टोकन और एक अनुदान मैट्रिक्स
कई खाते, कई कॉन्फ़िगरेशन, प्रति अनुदान एक टिक। एक ही स्कीमा पर अलग-अलग टूल चाहने वाली दो टीमें दो कॉन्फ़िगरेशन हैं, एक कॉन्फ़िगरेशन और एक नियम नहीं — जो पहले पैनल में गारंटी को बरकरार रखता है।
- 01
ऑब्जेक्ट चुनें
डिज़ाइन पृष्ठों को Oracle से कनेक्ट करें और उन PL/SQL पैकेजों पर टिक करें जिन्हें आप उजागर करने को तैयार हैं, साथ ही कोई भी SQL स्टेटमेंट जो आपने स्वयं लिखे और परीक्षण किए हैं, साथ ही वे तालिकाएँ और अनुक्रम जिन्हें आप सीधे सुलभ बनाना चाहते हैं। वह चयन एक कॉन्फ़िगरेशन फ़ाइल के रूप में सहेजा जाता है — properties या JSON, संस्करण-योग्य, और बिना किसी पासवर्ड के।
पहले PL/SQL, क्योंकि यही मुद्दा है: उन पैकेजों और प्रक्रियाओं पर टिक करें जिन्हें आप उजागर करने को तैयार हैं, और प्रत्येक एक टूल बन जाता है जिसके पैरामीटर टाइप किए गए हैं।
फिर आपका अपना SQL — वे स्टेटमेंट जो आपने लिखे और परीक्षण किए, इनलाइन टाइप किए गए बाइंड पैरामीटर के साथ। एजेंट इन्हें चलाता है; यह अपना खुद का रचना नहीं करता।
अंत में तालिकाएँ, प्रति तालिका के बजाय प्रति ऑपरेशन क्यूरेट की गईं — नई चुनी गई तालिका केवल-पढ़ने के लिए है, और create, update और delete आपके टिक करने के लिए हैं। - 02
जनरेट करें, संकलित करें, चलाएँ
रनटाइम पृष्ठ ठीक उन्हीं ऑब्जेक्ट्स के लिए Java उत्सर्जित करता है, इसे संकलित करता है, और इसे लूपबैक पर अपने स्वयं के सर्वर के रूप में लॉन्च करता है। जो कुछ भी आपने चुना नहीं, उसके पास कोई टूल, कोई विधि और कोई क्लास नहीं है — यह बाइनरी से अनुपस्थित है, न कि केवल अस्वीकृत।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 क्लाइंट को प्रॉक्सी की ओर इंगित करें
एजेंट 8080 पर, Streamable HTTP पर, अपने खाते को जारी किए गए टोकन के साथ कनेक्ट होते हैं। प्रॉक्सी एकमात्र घटक है जो जानता है कि कौन कॉल कर रहा है — यह खाता, अनुदान और दर सीमा की जाँच करता है, फिर आगे भेजता है।{ "mcpServers": { "payroll": { "url": "http://localhost:8080/mcp/alice/payroll", "headers": { "Authorization": "Bearer <id>.<secret>" } } } }
क्विकस्टार्ट में पूरा मार्ग है, जिसमें टोकन जारी करना और कॉन्फ़िगरेशन अनुदान देना शामिल है।