MCP DB Wizard
chính thứcMộ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_nextvalmà 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_pkbảng — một hàng theo khóa chính, dưới dạng đối tượng JSONsynuser_activity_log_insertbảng — với _update và _delete, từ cùng một lựa chọnsynuser_js_admin_getadmintoolinfoquy trình PL/SQL — bản ghi, tập hợp và mọi tham số OUTsynuser_job_id_nextvalchuỗ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?

Cấu hình quyết định những gì được tạo ra; proxy quyết định ai có thể gọi nó.
- 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.
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.
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.
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. - 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 - 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.