MCP DB Wizard
официальныйMCP-сервер для Oracle, с которым вас не уволят. Сервер MCP не предоставляет SQL-подсказки и не может рассказать, как войти в Oracle. Доступны только выбранные объекты и SQL-запросы.
Что можно делать с DB Wizard MCP?
- Вызов курируемых PL/SQL-процедур — Попросите ассистента выполнить проверенную процедуру пакета, например
synuser_js_admin_getadmintoolinfo, возвращающую записи, коллекции и все OUT-параметры. - Получение одной строки таблицы — Запросите строку по первичному ключу через
synuser_activity_log_get_by_pkи получите её в виде JSON-объекта. - Вставка, обновление или удаление данных таблицы — Поручите ассистенту изменить строки с помощью сгенерированного инструмента
synuser_activity_log_insert(включая его варианты_updateи_delete). - Получение следующего значения последовательности — Запросите следующее число из
synuser_job_id_nextval, не раскрывая другие операции с последовательностями. - Выполнение предварительно одобренных SQL-запросов — Позвольте ассистенту выполнить именованный, протестированный SQL-файл с типизированными параметрами привязки, никогда не составляя произвольный текст запроса.
Документация
MCP-сервер для Oracle, из-за которого вас не уволят
Конфигурация — это и есть вся модель безопасности
Доступно агенту
synuser_activity_log_get_by_pkтаблица — одна строка по первичному ключу, в виде JSON-объектаsynuser_activity_log_insertтаблица — с _update и _delete, из той же выборкиsynuser_js_admin_getadmintoolinfoPL/SQL-процедура — записи, коллекции и каждый OUT-параметрsynuser_job_id_nextvalпоследовательность — следующее значение, и ничего больше
Недоступно по построению
- SQL-текст от вызывающего — аргументы являются значениями привязки
- DDL — create, alter, drop
- Любой объект, который вы не выбрали
- Любая схема, не указанная в конфигурации
- Пароль Oracle — он хранится в переменных окружения
Агент, умеющий писать SQL, может написать DROP TABLE. Агент, владеющий инструментом под названием check_flight_availability, может проверить наличие мест на рейсе, потому что весь код перед ним делает только это.
Курирование происходит до появления кода
Минимальные привилегии легко декларировать и трудно проверить. Здесь конфигурация решает, что будет сгенерировано: у объекта, который никто не выбрал, нет ни инструмента, ни метода, ни класса. Он отсутствует в бинарном файле, а не защищён работающим процессом, поэтому ни один промпт не сможет до него добраться.
Ваши бизнес-правила уже в PL/SQL
Десятилетия валидации, референциальной логики и аудиторского поведения живут внутри пакетов. MCPDBWizard вызывает эти процедуры как есть — записи, коллекции, курсорные ссылки и каждый OUT-параметр возвращаются — вместо того чтобы просить языковую модель заново изобретать правила в SELECT.
Каждый вызов — это именованный инструмент, а не запрос
Запросы поступают как synuser_activity_log_get_by_pk(entry_id) против строгой схемы — опечатка в аргументе отклоняется до обращения к базе данных. Гораздо проще логировать, ограничивать по частоте, проверять постфактум и объяснять аудитору.
Две аудитории, две записи
Прокси записывает, кто вызывал какой инструмент и было ли это разрешено; каждый сервер записывает, что сделал инструмент и чем это закончилось. Имена аргументов — всегда; значения — только если вы это включили, потому что их выбирала модель.
Oracle 12c — 26ai
Включая типы, добавленные с тех пор: нативные JSON, BOOLEAN и VECTOR, а также CRUD над документами через JSON-реляционные duality-представления. Всё, что нельзя честно передать через JSON — SDO_GEOMETRY, BFILE — пропускается целиком, и в логе указано, что именно и почему.
Учётные записи, токены и матрица прав
Много учётных записей, много конфигураций, один флажок на право доступа. Двум командам, которым нужны разные инструменты над одной схемой, нужны две конфигурации, а не одна конфигурация с правилом — это сохраняет гарантию из первого блока.
- 01
Выберите объекты
Подключите страницы Design к Oracle и отметьте PL/SQL-пакеты, которые вы готовы открыть, а также любые SQL-выражения, которые вы написали и протестировали сами, плюс таблицы и последовательности, к которым нужен прямой доступ. Эта выборка сохраняется как файл конфигурации — properties или JSON, версионируемый и не содержащий пароля.
Сначала PL/SQL, потому что в этом суть: отметьте пакеты и процедуры, которые вы готовы открыть, и каждая станет одним инструментом с типизированными параметрами.
Затем ваши собственные SQL-выражения — операторы, которые вы написали и протестировали, с типизированными bind-параметрами прямо в тексте. Агент выполняет их; он не составляет свои собственные.
Наконец, таблицы, курируемые по операции, а не по таблице — новая выбранная таблица доступна только для чтения, а create, update и delete вы отмечаете сами. - 02
Сгенерируйте, скомпилируйте, запустите
Страница Runtime генерирует Java-код ровно для этих объектов, компилирует его и запускает как отдельный сервер на loopback. Всё, что вы не выбрали, не имеет ни инструмента, ни метода, ни класса — оно отсутствует в бинарном файле, а не просто отклоняется.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
Подключите MCP-клиент к прокси
Агенты подключаются на порту 8080 через Streamable HTTP с токеном, выданным их учётной записи. Прокси — единственный компонент, который знает, кто вызывает: он проверяет учётную запись, право доступа и лимит частоты, затем пересылает запрос.{ "mcpServers": { "payroll": { "url": "http://localhost:8080/mcp/alice/payroll", "headers": { "Authorization": "Bearer <id>.<secret>" } } } }
В кратком руководстве описан весь путь, включая выдачу токена и предоставление прав через конфигурацию.