MCP DB Wizard

officiel

Un serveur MCP pour Oracle qui ne vous fera pas virer. Le serveur MCP n'expose pas d'invite SQL et ne peut pas vous dire comment vous connecter à Oracle. Seuls les objets sélectionnés et les instructions SQL sont utilisables.

Que pouvez-vous faire avec DB Wizard MCP ?

  • Appeler des routines PL/SQL organisées — Demandez à l'assistant d'invoquer une procédure de package validée comme synuser_js_admin_getadmintoolinfo, renvoyant des enregistrements, des collections et tous les paramètres OUT.
  • Récupérer une seule ligne de table — Demandez une ligne par clé primaire via synuser_activity_log_get_by_pk et recevez-la sous forme d'objet JSON.
  • Insérer, mettre à jour ou supprimer des données de table — Demandez à l'assistant de modifier des lignes via l'outil généré synuser_activity_log_insert (avec ses variantes _update et _delete).
  • Obtenir la prochaine valeur de séquence — Demandez le prochain numéro de synuser_job_id_nextval sans exposer d'autres opérations de séquence.
  • Exécuter des instructions SQL pré-approuvées — Faites exécuter à l'assistant un fichier SQL nommé et testé avec des paramètres de liaison typés, sans jamais composer de texte de requête ad hoc.

Documentation

Un serveur MCP pour Oracle qui ne vous fera pas virer

La configuration constitue l'intégralité du modèle de sécurité

Accessible par l'agent

  • synuser_activity_log_get_by_pk table — une ligne par clé primaire, sous forme d'objet JSON
  • synuser_activity_log_insert table — avec _update et _delete, à partir de la même sélection
  • synuser_js_admin_getadmintoolinfo routine PL/SQL — enregistrements, collections et chaque paramètre OUT
  • synuser_job_id_nextval séquence — la valeur suivante, et rien d'autre

Inaccessible, par construction

  • Texte SQL provenant de l'appelant — les arguments sont des valeurs de liaison
  • DDL — create, alter, drop
  • Tout objet que vous n'avez pas sélectionné
  • Tout schéma que la configuration ne nomme pas
  • Le mot de passe Oracle — il vit dans l'environnement

Un agent capable d'écrire du SQL peut écrire DROP TABLE. Un agent détenant un outil appelé check_flight_availability peut vérifier la disponibilité d'un vol, car c'est tout ce que fait le code qui lui fait face.

La curation a lieu avant que le code n'existe

Le moindre privilège est facile à revendiquer et difficile à vérifier. Ici, la configuration décide de ce qui est émis : un objet que personne n'a sélectionné n'a ni outil, ni méthode, ni classe. Il est absent du binaire plutôt que protégé par un processus en cours d'exécution, donc aucun prompt ne peut l'atteindre.

Vos règles métier sont déjà en PL/SQL

Des décennies de validation, de logique référentielle et de comportement d'audit vivent dans des packages. MCPDBWizard appelle ces routines telles qu'elles sont — enregistrements, collections, curseurs de référence et chaque paramètre OUT retourné — au lieu de demander à un modèle de langage de réinventer les règles dans un SELECT.

Chaque appel est un outil nommé, pas une requête

Les requêtes arrivent sous forme de synuser_activity_log_get_by_pk(entry_id) contre un schéma strict — un argument mal orthographié est rejeté avant que la base de données ne soit touchée. Beaucoup plus facile à journaliser, à limiter en débit, à examiner après coup et à expliquer à un auditeur.

Deux publics, deux enregistrements

Le proxy écrit qui a appelé quel outil et si cela a été autorisé ; chaque serveur écrit ce que l'outil a fait et comment il s'est terminé. Les noms des arguments toujours ; les valeurs uniquement si vous avez activé cette option, car un modèle les a choisies.

Oracle 12c à 26ai

Y compris les types ajoutés depuis : JSON, BOOLEAN et VECTOR natifs, et le CRUD documentaire sur les vues de dualité JSON-relationnelle. Tout ce qui ne peut pas traverser JSON honnêtement — SDO_GEOMETRY, BFILE — est entièrement ignoré, et le journal indique quoi et pourquoi.

Comptes, jetons et une matrice d'octroi

De nombreux comptes, de nombreuses configurations, un tick par octroi. Deux équipes ayant besoin d'outils différents sur le même schéma correspondent à deux configurations, pas à une configuration et une règle — ce qui préserve la garantie du premier panneau.

  1. 01

    Sélectionnez les objets

    Connectez les pages Design à Oracle et cochez les packages PL/SQL que vous êtes prêt à exposer, ainsi que toute instruction SQL que vous avez écrite et testée vous-même, plus les tables et séquences que vous souhaitez rendre accessibles directement. Cette sélection est enregistrée dans un fichier de configuration — propriétés ou JSON, versionnable et ne contenant aucun mot de passe. The Design Procedures tab listing PL/SQL packages and procedures with tick boxes PL/SQL d'abord, car c'est le point central : cochez les packages et procédures que vous êtes prêt à exposer, et chacun devient un outil avec ses paramètres typés. The Design SQL Statements tab, editing a named .sql file with typed bind parameters Ensuite, votre propre SQL — des instructions que vous avez écrites et testées, avec des paramètres de liaison typés en ligne. L'agent exécute celles-ci ; il ne compose pas les siennes. The Design Tables tab, with each table ticked and separate MCP read, create, update and delete boxes Enfin, les tables, organisées par opération plutôt que par table — une table nouvellement sélectionnée est en lecture seule, et create, update et delete sont à vous de cocher.
  2. 02

    Générez, compilez, exécutez

    La page Runtime émet du Java pour exactement ces objets, le compile et le lance comme son propre serveur sur loopback. Tout ce que vous n'avez pas sélectionné n'a ni outil, ni méthode, ni classe — il est absent du binaire plutôt que simplement refusé.
    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

    Pointez votre client MCP vers le proxy

    Les agents se connectent sur le port 8080, via Streamable HTTP, avec un jeton émis pour leur compte. Le proxy est le seul composant qui sait qui appelle — il vérifie le compte, l'octroi et la limite de débit, puis transmet.
    {
      "mcpServers": {
        "payroll": {
          "url": "http://localhost:8080/mcp/alice/payroll",
          "headers": {
            "Authorization": "Bearer <id>.<secret>"
          }
        }
      }
    }
    

Le quickstart contient tout le parcours, y compris l'émission du jeton et l'octroi de la configuration.