MCP DB Wizard

chính thức

Một máy chủ MCP cho Oracle mà sẽ không khiến bạn bị sa thải. Máy chủ MCP không hiển thị dấu nhắc SQL và không thể cho bạn biết cách đăng nhập vào Oracle. Chỉ các đối tượng và câu lệnh SQL đã chọn mới có thể sử dụng được.

Bạn có thể làm gì với DB Wizard MCP?

  • Lấy một dòng theo khóa chính — Yêu cầu một mục nhật ký hoạt động cụ thể và nhận lại dưới dạng đối tượng JSON qua synuser_activity_log_get_by_pk.
  • Chèn vào nhật ký hoạt động — Yêu cầu trợ lý thêm một bản ghi nhật ký mới, với các thao tác cập nhật và xóa có sẵn từ cùng một bảng đã được quản lý qua synuser_activity_log_insert.
  • Gọi một quy trình PL/SQL — Gọi synuser_js_admin_getadmintoolinfo để chạy một quy trình nghiệp vụ và nhận bản ghi, bộ sưu tập, cùng tất cả các tham số OUT.
  • Lấy giá trị chuỗi tiếp theo — Yêu cầu ID tiếp theo từ synuser_job_id_nextval mà không tiết lộ bất kỳ dữ liệu chuỗi nào khác.
  • Chỉ chạy SQL đã được phê duyệt trước — Thực thi một câu lệnh SQL đã được kiểm tra, có kiểu dữ liệu mà bạn đã chọn, với các đối số là giá trị ràng buộc và không có cấu trúc truy vấn tùy ý.

Tài liệu

Một MCP server cho Oracle mà sẽ không khiến bạn bị sa thải

Cấu hình chính là toàn bộ mô hình bảo mật

Có thể truy cập bởi agent

  • synuser_activity_log_get_by_pk bảng — một hàng theo khóa chính, dưới dạng đối tượng JSON
  • synuser_activity_log_insert bảng — với _update và _delete, từ cùng một lựa chọn
  • synuser_js_admin_getadmintoolinfo quy trình PL/SQL — bản ghi, tập hợp và mọi tham số OUT
  • synuser_job_id_nextval chuỗi — giá trị tiếp theo, và không gì khác

Không thể truy cập, do thiết kế

  • Văn bản SQL từ người gọi — các tham số là giá trị bind
  • DDL — create, alter, drop
  • Bất kỳ đối tượng nào bạn không chọn
  • Bất kỳ schema nào mà cấu hình không nêu tên
  • Mật khẩu Oracle — nó nằm trong biến môi trường

Một agent có thể viết SQL có thể viết DROP TABLE. Một agent giữ một công cụ gọi là check_flight_availability có thể kiểm tra tình trạng còn chỗ trên chuyến bay, vì đó là tất cả những gì mã phía trước nó làm.

Việc tuyển chọn diễn ra trước khi mã tồn tại

Đặc quyền tối thiểu thì dễ tuyên bố nhưng khó kiểm chứng. Ở đây cấu hình quyết định những gì được phát sinh: một đối tượng không ai chọn thì không có công cụ, không có phương thức và không có lớp. Nó vắng mặt trong tệp nhị phân thay vì được bảo vệ bởi một tiến trình đang chạy, vì vậy không có lời nhắc nào có thể chạm tới nó.

Những gì một MCP server không có công cụ run-sql thay đổi

Các quy tắc nghiệp vụ của bạn đã nằm trong PL/SQL

Hàng thập kỷ xác thực, logic tham chiếu và hành vi kiểm toán nằm bên trong các package. MCPDBWizard gọi các quy trình đó như chúng vốn có — bản ghi, tập hợp, con trỏ ref, và mọi tham số OUT được trả về — thay vì yêu cầu một mô hình ngôn ngữ phát minh lại các quy tắc trong một câu SELECT.

Những gì agent thấy khi PL/SQL của bạn trở thành công cụ

Mỗi lần gọi là một công cụ có tên, không phải một truy vấn

Các yêu cầu đến dưới dạng synuser_activity_log_get_by_pk(entry_id) theo một schema nghiêm ngặt — một tham số viết sai chính tả sẽ bị từ chối trước khi chạm vào cơ sở dữ liệu. Dễ dàng hơn nhiều để ghi nhật ký, giới hạn tốc độ, xem xét lại sau đó, và giải thích cho kiểm toán viên.

Các công cụ MCP được tuyển chọn và một lời nhắc SQL, đặt cạnh nhau

Hai đối tượng, hai bản ghi

Proxy ghi ai đã gọi công cụ nào và liệu nó có được phép hay không; mỗi server ghi công cụ đã làm gì và kết thúc ra sao. Tên tham số luôn luôn; giá trị chỉ khi bạn bật tùy chọn đó, vì một mô hình đã chọn chúng.

Nhật ký của một MCP server nên được đặt ở đâu

Oracle 12c đến 26ai

Bao gồm các kiểu được thêm vào từ đó: JSON gốc, BOOLEAN và VECTOR, và CRUD tài liệu qua các khung nhìn đối ngẫu JSON-quan hệ. Bất cứ thứ gì không thể truyền qua JSON một cách trung thực — SDO_GEOMETRY, BFILE — được bỏ qua toàn bộ, và nhật ký ghi rõ cái nào và tại sao.

Tài khoản, token và một ma trận cấp quyền

Nhiều tài khoản, nhiều cấu hình, một lần đánh dấu cho mỗi cấp quyền. Hai nhóm cần các công cụ khác nhau trên cùng một schema là hai cấu hình, không phải một cấu hình và một quy tắc — điều này giữ nguyên cam kết trong bảng đầu tiên.

Kiểm soát truy cập dựa trên vai trò cho một MCP server

Cân nhắc nó với các tuyến đường của riêng Oracle? Đọc một giải pháp thay thế cho MCP server của Oracle, các giải pháp thay thế MCP server SQLcl khi SQL đặc biệt bị loại trừ, hoặc bắt đầu từ câu hỏi mà hầu hết mọi người thực sự hỏi: tôi có thể cho một agent AI truy vấn cơ sở dữ liệu sản xuất của mình không?

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.

Cấu hình quyết định những gì được tạo ra; proxy quyết định ai có thể gọi nó.

  1. 01

    Chọn các đối tượng

    Kết nối các trang Design với Oracle và đánh dấu các package PL/SQL bạn sẵn sàng phơi bày, cộng với bất kỳ câu lệnh SQL nào bạn đã tự viết và kiểm thử, cộng với các bảng và chuỗi bạn muốn truy cập trực tiếp. Lựa chọn đó được lưu dưới dạng một tệp cấu hình — properties hoặc JSON, có thể quản lý phiên bản, và không chứa mật khẩu. The Design Procedures tab listing PL/SQL packages and procedures with tick boxes PL/SQL trước tiên, vì đó là điểm chính: đánh dấu các package và quy trình bạn sẵn sàng phơi bày, và mỗi cái trở thành một công cụ với các tham số được định kiểu. The Design SQL Statements tab, editing a named .sql file with typed bind parameters Sau đó là SQL của riêng bạn — các câu lệnh bạn đã viết và kiểm thử, với các tham số bind được định kiểu nội tuyến. Agent chạy các câu lệnh này; nó không tự soạn câu lệnh của riêng mình. The Design Tables tab, with each table ticked and separate MCP read, create, update and delete boxes Cuối cùng là các bảng, được tuyển chọn theo từng thao tác thay vì theo từng bảng — một bảng mới được chọn chỉ đọc, và create, update và delete là của bạn để đánh dấu.
  2. 02

    Tạo, biên dịch, chạy

    Trang Runtime phát sinh mã Java cho chính xác các đối tượng đó, biên dịch nó, và khởi chạy nó như một server riêng trên loopback. Bất cứ thứ gì bạn không chọn thì không có công cụ, không có phương thức và không có lớp — nó vắng mặt trong tệp nhị phân thay vì chỉ bị từ chối.
    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

    Trỏ MCP client của bạn vào proxy

    Các agent kết nối trên cổng 8080, qua Streamable HTTP, với một token được cấp cho tài khoản của họ. Proxy là thành phần duy nhất biết ai đang gọi — nó kiểm tra tài khoản, cấp quyền và giới hạn tốc độ, sau đó chuyển tiếp.
    {
      "mcpServers": {
        "payroll": {
          "url": "http://localhost:8080/mcp/alice/payroll",
          "headers": {
            "Authorization": "Bearer <id>.<secret>"
          }
        }
      }
    }
    

Khởi động nhanh có toàn bộ lộ trình, bao gồm việc cấp token và cấp quyền cho cấu hình.