LabscoMCP early access ↗
guanghuangMCP SERVER

JDBC-MCP

The Quarkus JDBC MCP server as a container, with write SQL turned off unless you explicitly ask for it — point it at a JDBC URL and let an assistant inspect and query the database.

by guanghuang ↗Relational SQL DatabasesCommunity

LABSCO SUMMARY

Writes are off until you turn them on.

That default is the reason to prefer this over the upstream image, and it pairs naturally with a read-only database user — belt and braces on the same connection. The one setup detail that catches people is stdio mode: without the console-logging switches, Quarkus writes to the same stream the protocol uses.

What it is

A fork of the Quarkus MCP JDBC server that adds two things: a published Docker image so you do not build anything, and a safety default where INSERT, UPDATE and DELETE are disabled until you switch them on.

What you get

  • Database access over JDBC for an assistant — inspecting, querying, and, when enabled, modifying content
  • Any database with a JDBC driver the upstream project supports, selected purely by the connection URL
  • Write operations off by default behind a single enable.write.sql setting
  • Two transports from the same image: an SSE endpoint at /mcp/sse, or stdio for local clients
  • Configuration entirely through environment variables, so credentials come from an env file rather than a config file in the repo
  • Docker Compose examples for both the SSE service and the stdio client setup

Requirements

Docker, and a reachable database with its JDBC connection URL. Set jdbc.url, and jdbc.user and jdbc.password where the database needs them; leave enable.write.sql false unless you mean it. For SSE, publish port 8080 and connect to /mcp/sse. For stdio you must also pass quarkus.mcp.server.stdio.enabled=true together with the two console-logging settings that silence stdout, and run the container with -i — otherwise log output corrupts the protocol stream. Apache licensed.

Setup effort

One command plus credentials — docker run --rm -e enable.write.sql=false -e jdbc.user=db_user -e jdbc.password=db_password -e jdbc.url=jdbc:postgresql://host:port/database -e quarkus.mcp.server.stdio.enabled=true -e quarkus.log.console.enable=false -e quarkus.log.console.stderr=false -i guang1/jdbc-mcp:latest, then supply credentials