MCP DB Wizard

offiziell

Ein MCP-Server für Oracle, mit dem Sie nicht gefeuert werden. Der MCP-Server stellt keine SQL-Eingabeaufforderung bereit und kann Ihnen nicht sagen, wie Sie sich bei Oracle anmelden. Nur die ausgewählten Objekte und SQL-Anweisungen sind nutzbar.

Was kann man mit DB Wizard MCP machen?

  • Aufruf kuratierter PL/SQL-Routinen — Bitten Sie den Assistenten, eine geprüfte Paketprozedur wie synuser_js_admin_getadmintoolinfo aufzurufen, die Datensätze, Sammlungen und alle OUT-Parameter zurückgibt.
  • Einzelne Tabellenzeile abrufen — Fordern Sie eine Zeile über den Primärschlüssel mit synuser_activity_log_get_by_pk an und erhalten Sie sie als JSON-Objekt zurück.
  • Tabellendaten einfügen, aktualisieren oder löschen — Weisen Sie den Assistenten an, Zeilen über das generierte synuser_activity_log_insert-Tool (mit seinen _update- und _delete-Varianten) zu ändern.
  • Nächsten Sequenzwert abrufen — Fragen Sie nach der nächsten Nummer von synuser_job_id_nextval, ohne andere Sequenzoperationen offenzulegen.
  • Vorab genehmigte SQL-Anweisungen ausführen — Lassen Sie den Assistenten eine benannte, getestete SQL-Datei mit typisierten Bind-Parametern ausführen, ohne ad-hoc Abfragetexte zu erstellen.

Dokumentation

Ein MCP-Server für Oracle, der Sie nicht den Job kostet

Die Konfiguration ist das gesamte Sicherheitsmodell

Für den Agenten erreichbar

  • synuser_activity_log_get_by_pk Tabelle — eine Zeile per Primärschlüssel, als JSON-Objekt
  • synuser_activity_log_insert Tabelle — mit _update und _delete, aus derselben Auswahl
  • synuser_js_admin_getadmintoolinfo PL/SQL-Routine — Records, Collections und jeder OUT-Parameter
  • synuser_job_id_nextval Sequenz — der nächste Wert, und sonst nichts

Nicht erreichbar, konstruktionsbedingt

  • SQL-Text vom Aufrufer — Argumente sind Bind-Werte
  • DDL — create, alter, drop
  • Jedes Objekt, das Sie nicht ausgewählt haben
  • Jedes Schema, das die Konfiguration nicht nennt
  • Das Oracle-Passwort — es lebt in der Umgebung

Ein Agent, der SQL schreiben kann, kann DROP TABLE schreiben. Ein Agent, der ein Tool namens check_flight_availability hält, kann die Verfügbarkeit eines Fluges prüfen, weil das der gesamte Code davor ist.

Kuratierung geschieht, bevor der Code existiert

Least Privilege ist leicht zu behaupten und schwer zu verifizieren. Hier entscheidet die Konfiguration, was emittiert wird: Ein Objekt, das niemand ausgewählt hat, hat kein Tool, keine Methode und keine Klasse. Es fehlt im Binary, anstatt von einem laufenden Prozess bewacht zu werden, sodass kein Prompt es erreichen kann.

Ihre Geschäftsregeln sind bereits in PL/SQL

Jahrzehnte der Validierung, referenzieller Logik und Audit-Verhaltens leben in Packages. MCPDBWizard ruft diese Routinen so auf, wie sie sind — Records, Collections, Ref Cursor und jeder OUT-Parameter wird zurückgegeben — anstatt ein Sprachmodell zu bitten, die Regeln in einem SELECT neu zu erfinden.

Jeder Aufruf ist ein benanntes Tool, keine Abfrage

Anfragen kommen als synuser_activity_log_get_by_pk(entry_id) gegen ein striktes Schema an — ein falsch geschriebenes Argument wird abgelehnt, bevor die Datenbank berührt wird. Viel einfacher zu protokollieren, zu ratenbegrenzen, nachträglich zu prüfen und einem Auditor zu erklären.

Zwei Zielgruppen, zwei Aufzeichnungen

Der Proxy schreibt, wer welches Tool aufgerufen hat und ob es erlaubt war; jeder Server schreibt, was das Tool getan hat und wie es endete. Argument-Namen immer; Werte nur, wenn Sie das aktiviert haben, weil ein Modell sie gewählt hat.

Oracle 12c bis 26ai

Einschließlich der seitdem hinzugefügten Typen: native JSON, BOOLEAN und VECTOR, sowie Dokument-CRUD über JSON-relationale Duality-Views. Alles, was JSON nicht ehrlich überqueren kann — SDO_GEOMETRY, BFILE — wird komplett übersprungen, und das Log sagt, welche und warum.

Konten, Tokens und eine Grant-Matrix

Viele Konten, viele Konfigurationen, ein Tick pro Grant. Zwei Teams, die unterschiedliche Tools über dasselbe Schema benötigen, sind zwei Konfigurationen, nicht eine Konfiguration und eine Regel — was die Garantie im ersten Panel intakt hält.

  1. 01

    Objekte auswählen

    Verbinden Sie die Design-Seiten mit Oracle und ticken Sie die PL/SQL-Packages, die Sie bereit sind freizugeben, plus alle SQL-Anweisungen, die Sie selbst geschrieben und getestet haben, plus die Tabellen und Sequenzen, die Sie direkt erreichbar machen möchten. Diese Auswahl wird als Konfigurationsdatei gespeichert — Properties oder JSON, versionierbar und ohne Passwort. The Design Procedures tab listing PL/SQL packages and procedures with tick boxes PL/SQL zuerst, weil es der Punkt ist: Tick die Packages und Prozeduren, die Sie freigeben möchten, und jede wird ein Tool mit typisierten Parametern. The Design SQL Statements tab, editing a named .sql file with typed bind parameters Dann Ihr eigenes SQL — Anweisungen, die Sie geschrieben und getestet haben, mit Bind-Parametern inline typisiert. Der Agent führt diese aus; er komponiert keine eigenen. The Design Tables tab, with each table ticked and separate MCP read, create, update and delete boxes Schließlich Tabellen, kuratiert pro Operation statt pro Tabelle — eine neu ausgewählte ist schreibgeschützt, und create, update und delete sind Ihre zum Ticken.
  2. 02

    Generieren, kompilieren, ausführen

    Die Runtime-Seite emittiert Java für genau diese Objekte, kompiliert es und startet es als eigenen Server auf Loopback. Alles, was Sie nicht ausgewählt haben, hat kein Tool, keine Methode und keine Klasse — es fehlt im Binary, anstatt nur verweigert zu werden.
    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

    Richten Sie Ihren MCP-Client auf den Proxy

    Agenten verbinden sich auf 8080, über Streamable HTTP, mit einem Token, das ihrem Konto ausgestellt wurde. Der Proxy ist die einzige Komponente, die weiß, wer aufruft — er prüft das Konto, den Grant und das Rate-Limit und leitet dann weiter.
    {
      "mcpServers": {
        "payroll": {
          "url": "http://localhost:8080/mcp/alice/payroll",
          "headers": {
            "Authorization": "Bearer <id>.<secret>"
          }
        }
      }
    }
    

Der Quickstart enthält den gesamten Pfad, einschließlich der Ausstellung des Tokens und der Gewährung der Konfiguration.