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?

  • Gọi các quy trình PL/SQL đã được chọn lọc — Yêu cầu trợ lý gọi một quy trình gói đã được kiểm duyệt như synuser_js_admin_getadmintoolinfo, trả về các bản ghi, tập hợp và tất cả các tham số OUT.
  • Lấy một hàng dữ liệu từ bảng — Yêu cầu một hàng theo khóa chính qua synuser_activity_log_get_by_pk và nhận lại dưới dạng đối tượng JSON.
  • Chèn, cập nhật hoặc xóa dữ liệu bảng — Hướng dẫn trợ lý sửa đổi các hàng thông qua công cụ synuser_activity_log_insert đã được tạo (cùng với các biến thể _update_delete của nó).
  • Lấy giá trị chuỗi tiếp theo — Yêu cầu số tiếp theo từ synuser_job_id_nextval mà không để lộ bất kỳ thao tác chuỗi nào khác.
  • Chạy các câu lệnh SQL đã được phê duyệt trước — Yêu cầu trợ lý thực thi một tệp SQL đã đặt tên, đã được kiểm thử với các tham số ràng buộc có kiểu, không bao giờ soạn văn bản 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 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 thì 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, nên không lời nhắc nào có thể chạm tới nó.

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 đó nguyên trạng — bản ghi, tập hợp, con trỏ tham chiếu, 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.

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 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 log, giới hạn tốc độ, rà soát sau đó, và giải trình với kiểm toán viên.

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.

Oracle 12c đến 26ai

Bao gồm các kiểu được bổ sung từ đó: JSON gốc, BOOLEANVECTOR, và CRUD tài liệu qua các khung nhìn lưỡng cực JSON-quan hệ. Bất kỳ thứ gì không thể vượt qua JSON một cách trung thực — SDO_GEOMETRY, BFILE — sẽ bị bỏ qua toàn bộ, và log ghi rõ cái nào và lý do.

Tài khoản, token và 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 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 ở bảng đầu tiê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 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 ngay trong dòng. 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 sẽ ở chế độ chỉ đọc, và create, update, delete là tùy bạn đánh dấu.
  2. 02

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

    Trang Runtime phát sinh 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 kỳ 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.4
    
  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, quyền và giới hạn tốc độ, rồi 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 cấp token và cấp quyền cho cấu hình.