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 object
  • synuser_activity_log_insert ตาราง — พร้อม _update และ _delete จากการเลือกเดียวกัน
  • synuser_js_admin_getadmintoolinfo routine PL/SQL — records, collections และทุก OUT parameter
  • synuser_job_id_nextval sequence — ค่าถัดไป และไม่มีอย่างอื่น

เข้าถึงไม่ได้ โดยการออกแบบ

  • ข้อความ 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 ของฉันได้ไหม?

Design time: the Design pages read Oracle's data dictionary, the selection is saved as a config file with no password, and Java is generated and compiled for the selected objects only. Run time: an MCP client calls the proxy on port 8080 with a bearer token; the proxy checks the token, the grant and the rate limit, then forwards to the generated MCP server, which binds the arguments and calls Oracle. The proxy and the server both write to the audit trail.

การกำหนดค่าตัดสินใจว่าสิ่งใดจะถูกสร้าง; proxy ตัดสินใจว่าใครสามารถเรียกมันได้

  1. 01

    เลือกวัตถุ

    เชื่อมต่อหน้า Design กับ Oracle และ tick PL/SQL packages ที่คุณยินดีจะเปิดเผย รวมถึง SQL statements ที่คุณเขียนและทดสอบด้วยตัวเอง รวมถึงตารางและ sequences ที่คุณต้องการให้เข้าถึงได้โดยตรง การเลือกนั้นถูกบันทึกเป็นไฟล์การกำหนดค่า — properties หรือ JSON, versionable และไม่มีรหัสผ่าน The Design Procedures tab listing PL/SQL packages and procedures with tick boxes PL/SQL ก่อน เพราะมันคือประเด็น: tick packages และ procedures ที่คุณยินดีจะเปิดเผย และแต่ละอันจะกลายเป็นหนึ่ง tool ที่มีพารามิเตอร์ระบุประเภท The Design SQL Statements tab, editing a named .sql file with typed bind parameters จากนั้น SQL ของคุณเอง — statements ที่คุณเขียนและทดสอบ โดยมี bind parameters ระบุประเภทแบบ inline Agent รันสิ่งเหล่านี้; มันไม่ได้ประกอบ SQL ของตัวเอง The Design Tables tab, with each table ticked and separate MCP read, create, update and delete boxes สุดท้ายตาราง คัดกรองต่อการดำเนินการแทนที่จะต่อตาราง — ตารางที่เลือกใหม่เป็นแบบอ่านอย่างเดียว และ create, update และ delete เป็นสิทธิ์ของคุณที่จะ tick
  2. 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
    
  3. 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 มีเส้นทางทั้งหมด รวมถึงการออกโทเค็นและการให้สิทธิ์การกำหนดค่า