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?
- 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_pkvà 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ể_updatevà_deletecủa nó). - Lấy giá trị chuỗi tiếp theo — Yêu cầu số tiếp theo từ
synuser_job_id_nextvalmà 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_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 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 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, BOOLEAN và VECTOR, 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.
- 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.
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 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.
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. - 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 - 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.