MCP DB Wizard
officielUn 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_pket 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_updateet_delete). - Obtenir la prochaine valeur de séquence — Demandez le prochain numéro de
synuser_job_id_nextvalsans 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_pktable — une ligne par clé primaire, sous forme d'objet JSONsynuser_activity_log_inserttable — avec _update et _delete, à partir de la même sélectionsynuser_js_admin_getadmintoolinforoutine PL/SQL — enregistrements, collections et chaque paramètre OUTsynuser_job_id_nextvalsé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.
- 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.
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.
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.
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. - 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 - 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.