MCPDBWizard

Documentation  ·  Getting started

Quickstart

MCPDBWizard is a generator. You point it at an Oracle schema, select the objects you are willing to expose, and it emits Java for exactly those — then compiles it and runs it as an MCP server. An object you did not select has no tool, no method and no class, so the curation is enforced by absence from the binary rather than by a rule at request time.

One container holds both halves: the web console on 8080 (Design, Runtime, Users, and the MCP proxy) and the servers it generates on 8090–8109, each its own JVM, bound to loopback and reached through the proxy.

What you need

1. Run the container

docker run -d --name mcpdbwizard \
  -p 8080:8080 \
  -v mcpdbwizard-demo:/data \
  -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 \
  mcpdbwizard-web

A leading / on the SID selects the service-name form. Your configs, accounts, access grants and each runtime’s workspace live on the /data volume, so replacing the image keeps them. Full reference: Launching on Docker and Docker parameters.

Open http://localhost:8080 and sign in as admin / password. You are forced to replace that before the generator will run.

2. Select the objects

On the Design pages, pick the tables, PL/SQL packages and routines and sequences to expose, and add any SQL statements you have written and tested yourself. Note that you use formatted comments to assign names and data types to parameters in SQL statements. Then save.

That is the whole security model, and it is a file you can review and put through a change process. The server uses an Oracle account with limited privs, and in turn generates tools that have a 1:1 relationship with Oracle objects or curated SQL statements.

Because a lot of object and table names are not descriptive enough for an LLM, you can also add a description field to stop your LLM going ‘off piste’. See Creating configs.

3. Generate and run it

On the Runtime page, pick the config and start it. The generator emits the Java, compiles it, and launches the server on the next free loopback port. Several configs run at once, each its own process. You can opt to have generators automatically run when the container is re-started.

4. Issue a token and grant the config

A browser signs in with a form; an MCP client cannot. On the Users page, create a user and then issue it an an API token — shown exactly once, since only a BCrypt hash is stored — and tick that config on the Access grid. A token alone is not access: a new account starts with no grants. See Creating application users.

5. Connect a client

Point the client at the proxy, not at the generated server. The proxy is the only component that knows who is calling.

{
  "mcpServers": {
    "payroll": {
      "url": "http://localhost:8080/mcp/payroll",
      "headers": { "Authorization": "Bearer <id>.<secret>" }
    }
  }
}

Transport is Streamable HTTP. Responses come back as plain JSON or as an SSE frame, so a hand-rolled client must handle both. Ask the agent what it can do and it will list the tools back to you — a quick way to confirm the config generated as you intended.

Where to go next