MCP DB Wizard
ทางการเซิร์ฟเวอร์ MCP สำหรับ Oracle ที่จะไม่ทำให้คุณถูกไล่ออก เซิร์ฟเวอร์ MCP นี้ไม่เปิดเผยพรอมต์ SQL และไม่สามารถบอกวิธีเข้าสู่ระบบ Oracle ได้ เฉพาะออบเจ็กต์และคำสั่ง SQL ที่เลือกไว้เท่านั้นที่ใช้งานได้
คุณทำอะไรได้บ้างด้วย DB Wizard MCP?
- Fetch a row by primary key — ขอรายการบันทึกกิจกรรมเฉพาะและรับกลับมาเป็นวัตถุ JSON ผ่าน
synuser_activity_log_get_by_pk - Insert into the activity log — ให้ผู้ช่วยเพิ่มบันทึกใหม่ โดยมีการดำเนินการอัปเดตและลบจากตารางที่ดูแลเดียวกันผ่าน
synuser_activity_log_insert - Call a PL/SQL routine — เรียกใช้
synuser_js_admin_getadmintoolinfoเพื่อรันโพรซีเยอร์ทางธุรกิจและรับเรกคอร์ด คอลเลกชัน และพารามิเตอร์ OUT ทั้งหมด - Get the next sequence value — ขอ ID ถัดไปจาก
synuser_job_id_nextvalโดยไม่เปิดเผยข้อมูลลำดับอื่นใด - Run only pre-approved SQL — รันคำสั่ง SQL ที่ผ่านการทดสอบและระบุชนิดแล้วซึ่งคุณเลือก โดยมีอาร์กิวเมนต์เป็นค่า bind และไม่มีการประกอบคำสั่งเฉพาะกิจ
เอกสาร
MCP server สำหรับ Oracle ที่จะไม่ทำให้คุณถูกไล่ออก
การกำหนดค่านี้คือโมเดลความปลอดภัยทั้งหมด
เข้าถึงได้โดย agent
synuser_activity_log_get_by_pkตาราง — หนึ่งแถวโดย primary key เป็น JSON objectsynuser_activity_log_insertตาราง — พร้อม _update และ _delete จากการเลือกเดียวกันsynuser_js_admin_getadmintoolinforoutine PL/SQL — records, collections และทุก OUT parametersynuser_job_id_nextvalsequence — ค่าถัดไป และไม่มีอย่างอื่น
เข้าถึงไม่ได้ โดยการออกแบบ
- ข้อความ SQL จากผู้เรียก — อาร์กิวเมนต์เป็น bind values
- DDL — create, alter, drop
- วัตถุใดก็ตามที่คุณไม่ได้เลือก
- schema ใดก็ตามที่การกำหนดค่าไม่ได้ระบุชื่อ
- รหัสผ่าน Oracle — อยู่ใน environment
Agent ที่สามารถเขียน SQL ได้สามารถเขียน DROP TABLE ได้ Agent ที่ถือเครื่องมือที่เรียกว่า check_flight_availability สามารถตรวจสอบความพร้อมของเที่ยวบินได้ เพราะนั่นคือทั้งหมดที่โค้ดที่อยู่ตรงหน้ามันทำ
การคัดกรองเกิดขึ้นก่อนที่โค้ดจะถูกสร้าง
สิทธิ์น้อยที่สุดนั้นง่ายที่จะอ้างแต่ยากที่จะตรวจสอบ ที่นี่การกำหนดค่าเป็นตัวตัดสินใจว่าสิ่งใดจะถูก สร้างออกมา: วัตถุที่ไม่มีใครเลือกจะไม่มี tool ไม่มี method และไม่มี class มันหายไปจาก binary แทนที่จะถูกป้องกันโดยกระบวนการที่กำลังทำงาน ดังนั้นไม่มี prompt ใดสามารถเข้าถึงมันได้
สิ่งที่ MCP server ที่ไม่มีเครื่องมือ run-sql เปลี่ยนแปลง
กฎธุรกิจของคุณอยู่ใน PL/SQL อยู่แล้ว
ทศวรรษของการตรวจสอบความถูกต้อง ตรรกะอ้างอิง และพฤติกรรมการตรวจสอบอาศัยอยู่ใน packages MCPDBWizard เรียก routine เหล่านั้นตามที่เป็นอยู่ — records, collections, ref cursors และทุก OUT parameter ที่ถูกส่งคืน — แทนที่จะขอให้ language model คิดค้นกฎขึ้นใหม่ใน SELECT
สิ่งที่ agent เห็นเมื่อ PL/SQL ของคุณกลายเป็น tools
ทุกการเรียกคือ named tool ไม่ใช่ query
คำขอมาถึงเป็น synuser_activity_log_get_by_pk(entry_id) ตาม schema ที่เข้มงวด — อาร์กิวเมนต์ที่สะกดผิดจะถูกปฏิเสธก่อนที่จะแตะต้องฐานข้อมูล ง่ายกว่ามากในการบันทึก จำกัดอัตรา ตรวจสอบภายหลัง และอธิบายให้ผู้ตรวจสอบฟัง
Curated MCP tools และ SQL prompt วางเคียงข้างกัน
ผู้ชมสองกลุ่ม บันทึกสองชุด
Proxy เขียนว่าใครเรียก tool ใดและได้รับอนุญาตหรือไม่ แต่ละ server เขียนว่า tool ทำอะไรและจบลงอย่างไร ชื่ออาร์กิวเมนต์ เสมอ; ค่าต่างๆ เฉพาะเมื่อคุณเปิดใช้งาน เพราะโมเดลเป็นผู้เลือกมัน
ตำแหน่งที่บันทึกของ MCP server ควรไป
Oracle 12c ถึง 26ai
รวมถึงประเภทที่เพิ่มเข้ามาตั้งแต่นั้น: native JSON, BOOLEAN และ VECTOR และ document CRUD ผ่าน JSON-relational duality views สิ่งใดก็ตามที่ไม่สามารถข้าม JSON ได้อย่างตรงไปตรงมา — SDO_GEOMETRY, BFILE — จะถูกข้ามทั้งหมด และบันทึกจะระบุว่าอะไรและเพราะเหตุใด
บัญชี โทเค็น และ grant matrix
หลายบัญชี หลายการกำหนดค่า หนึ่ง tick ต่อ grant สองทีมที่ต้องการ tools ที่แตกต่างกันบน schema เดียวกันคือสองการกำหนดค่า ไม่ใช่หนึ่งการกำหนดค่าและหนึ่งกฎ — ซึ่งรักษาการรับประกันในแผงแรกให้คงอยู่
Role-based access สำหรับ MCP server
กำลังชั่งน้ำหนักกับเส้นทางของ Oracle เองหรือไม่? อ่าน ทางเลือกแทน MCP server ของ Oracle, ทางเลือก SQLcl MCP server เมื่อ ad-hoc SQL ถูกตัดออก หรือเริ่มจากคำถามที่คนส่วนใหญ่ถามจริงๆ: ฉันสามารถให้ AI agent คิวรีฐานข้อมูล production ของฉันได้ไหม?

การกำหนดค่าตัดสินใจว่าสิ่งใดจะถูกสร้าง; proxy ตัดสินใจว่าใครสามารถเรียกมันได้
- 01
เลือกวัตถุ
เชื่อมต่อหน้า Design กับ Oracle และ tick PL/SQL packages ที่คุณยินดีจะเปิดเผย รวมถึง SQL statements ที่คุณเขียนและทดสอบด้วยตัวเอง รวมถึงตารางและ sequences ที่คุณต้องการให้เข้าถึงได้โดยตรง การเลือกนั้นถูกบันทึกเป็นไฟล์การกำหนดค่า — properties หรือ JSON, versionable และไม่มีรหัสผ่าน
PL/SQL ก่อน เพราะมันคือประเด็น: tick packages และ procedures ที่คุณยินดีจะเปิดเผย และแต่ละอันจะกลายเป็นหนึ่ง tool ที่มีพารามิเตอร์ระบุประเภท
จากนั้น SQL ของคุณเอง — statements ที่คุณเขียนและทดสอบ โดยมี bind parameters ระบุประเภทแบบ inline Agent รันสิ่งเหล่านี้; มันไม่ได้ประกอบ SQL ของตัวเอง
สุดท้ายตาราง คัดกรองต่อการดำเนินการแทนที่จะต่อตาราง — ตารางที่เลือกใหม่เป็นแบบอ่านอย่างเดียว และ create, update และ delete เป็นสิทธิ์ของคุณที่จะ tick - 02
สร้าง คอมไพล์ รัน
หน้า Runtime สร้าง Java สำหรับวัตถุเหล่านั้นอย่างแม่นยำ คอมไพล์มัน และเปิดใช้งานเป็น server ของตัวเองบน loopback สิ่งใดก็ตามที่คุณไม่ได้เลือกจะไม่มี tool ไม่มี method และไม่มี class — มันหายไปจาก binary แทนที่จะถูกปฏิเสธเท่านั้น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.32 - 03
ชี้ MCP client ของคุณไปที่ proxy
Agents เชื่อมต่อบน 8080 ผ่าน Streamable HTTP ด้วยโทเค็นที่ออกให้กับบัญชีของพวกเขา Proxy เป็นเพียงองค์ประกอบเดียวที่รู้ว่าใครกำลังเรียก — มันตรวจสอบบัญชี grant และอัตราจำกัด จากนั้นส่งต่อ{ "mcpServers": { "payroll": { "url": "http://localhost:8080/mcp/alice/payroll", "headers": { "Authorization": "Bearer <id>.<secret>" } } } }
Quickstart มีเส้นทางทั้งหมด รวมถึงการออกโทเค็นและการให้สิทธิ์การกำหนดค่า