MCP DB Wizard

официальный

MCP-сервер для Oracle, с которым вас не уволят. Сервер MCP не предоставляет SQL-подсказки и не может рассказать, как войти в Oracle. Доступны только выбранные объекты и SQL-запросы.

Что можно делать с DB Wizard MCP?

  • Fetch a row by primary key — Запросить конкретную запись журнала активности и получить её в виде JSON-объекта через synuser_activity_log_get_by_pk.
  • Insert into the activity log — Позволить ассистенту добавить новую запись журнала, с возможностью обновления и удаления из той же курируемой таблицы через synuser_activity_log_insert.
  • Call a PL/SQL routine — Вызвать synuser_js_admin_getadmintoolinfo для выполнения бизнес-процедуры и получения записей, коллекций и всех OUT-параметров.
  • Get the next sequence value — Запросить следующий ID из synuser_job_id_nextval без раскрытия других данных последовательности.
  • Run only pre-approved SQL — Выполнить протестированный, типизированный SQL-запрос, который вы выбрали, с аргументами в качестве связанных значений и без составления ad-hoc запросов.

Документация

MCP-сервер для Oracle, из-за которого вас не уволят

Конфигурация — это и есть вся модель безопасности

Доступно агенту

  • synuser_activity_log_get_by_pk таблица — одна строка по первичному ключу, в виде JSON-объекта
  • synuser_activity_log_insert таблица — с _update и _delete, из той же выборки
  • synuser_js_admin_getadmintoolinfo PL/SQL-процедура — записи, коллекции и каждый OUT-параметр
  • synuser_job_id_nextval последовательность — следующее значение, и ничего больше

Недоступно по построению

  • SQL-текст от вызывающей стороны — аргументы являются bind-значениями
  • DDL — create, alter, drop
  • Любой объект, который вы не выбрали
  • Любая схема, не указанная в конфигурации
  • Пароль Oracle — он хранится в окружении

Агент, умеющий писать SQL, может написать DROP TABLE. Агент, держащий инструмент под названием check_flight_availability, может проверить наличие мест на рейсе, потому что весь код перед ним делает только это.

Курирование происходит до появления кода

Минимальные привилегии легко декларировать и сложно проверить. Здесь конфигурация решает, что генерируется: у объекта, который никто не выбрал, нет ни инструмента, ни метода, ни класса. Он отсутствует в бинарнике, а не защищён работающим процессом, поэтому ни один промпт не может до него добраться.

Что меняет MCP-сервер без инструмента run-sql

Ваши бизнес-правила уже в PL/SQL

Десятилетия валидации, референциальной логики и аудита живут внутри пакетов. MCPDBWizard вызывает эти процедуры как есть — записи, коллекции, ref-курсоры и каждый OUT-параметр возвращаются — вместо того чтобы просить языковую модель заново изобретать правила в SELECT.

Что видит агент, когда ваш PL/SQL становится инструментами

Каждый вызов — это именованный инструмент, а не запрос

Запросы приходят как synuser_activity_log_get_by_pk(entry_id) против строгой схемы — опечатка в аргументе отклоняется до обращения к базе данных. Гораздо проще логировать, ограничивать по частоте, проверять постфактум и объяснять аудитору.

Курируемые MCP-инструменты и SQL-промпт бок о бок

Две аудитории, две записи

Прокси записывает, кто вызвал какой инструмент и было ли это разрешено; каждый сервер записывает, что сделал инструмент и чем это закончилось. Имена аргументов — всегда; значения — только если вы это включили, потому что их выбрала модель.

Куда должны идти логи MCP-сервера

Oracle 12c — 26ai

Включая типы, добавленные с тех пор: нативные JSON, BOOLEAN и VECTOR, а также CRUD над документами через JSON-реляционные duality-представления. Всё, что нельзя честно перенести через JSON — SDO_GEOMETRY, BFILE — пропускается целиком, и в логе указано, что и почему.

Учётные записи, токены и матрица грантов

Много учётных записей, много конфигураций, один тик на грант. Двум командам, которым нужны разные инструменты над одной схемой, нужны две конфигурации, а не одна конфигурация и правило — это сохраняет гарантию из первой панели.

Ролевой доступ для MCP-сервера

Сравниваете с собственными маршрутами Oracle? Прочитайте альтернативу MCP-серверу Oracle, альтернативы SQLcl MCP-серверу, когда ad-hoc SQL исключён, или начните с вопроса, который задают чаще всего: можно ли позволить ИИ-агенту запрашивать мою production-базу данных?

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.

Конфигурация решает, что генерируется; прокси решает, кому разрешено вызывать.

  1. 01

    Выберите объекты

    Подключите страницы Design к Oracle и отметьте PL/SQL-пакеты, которые вы готовы открыть, а также любые SQL-операторы, которые вы написали и протестировали сами, плюс таблицы и последовательности, к которым нужен прямой доступ. Эта выборка сохраняется как файл конфигурации — properties или JSON, версионируемый и не содержащий пароля. The Design Procedures tab listing PL/SQL packages and procedures with tick boxes PL/SQL в первую очередь, потому что в этом суть: отметьте пакеты и процедуры, которые вы готовы открыть, и каждый станет одним инструментом с типизированными параметрами. The Design SQL Statements tab, editing a named .sql file with typed bind parameters Затем ваш собственный SQL — операторы, которые вы написали и протестировали, с bind-параметрами, типизированными инлайн. Агент выполняет их; он не составляет свои собственные. The Design Tables tab, with each table ticked and separate MCP read, create, update and delete boxes Наконец, таблицы, курируемые по операции, а не по таблице — новая выбранная таблица доступна только для чтения, а create, update и delete вы отмечаете сами.
  2. 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.32
    
  3. 03

    Направьте ваш MCP-клиент на прокси

    Агенты подключаются на порту 8080 через Streamable HTTP с токеном, выданным для их учётной записи. Прокси — единственный компонент, который знает, кто вызывает: он проверяет учётную запись, грант и лимит частоты, затем пересылает.
    {
      "mcpServers": {
        "payroll": {
          "url": "http://localhost:8080/mcp/alice/payroll",
          "headers": {
            "Authorization": "Bearer <id>.<secret>"
          }
        }
      }
    }
    

В кратком руководстве описан весь путь, включая выдачу токена и предоставление конфигурации.