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_getadmintoolinfo PL/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 — пропускается целиком, и в логе указано, что именно и почему.

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

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

  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.4
    
  3. 03

    Подключите MCP-клиент к прокси

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

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