Labsco
MCP SERVER

JDBC-MCP

by guanghuang

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.

Relational SQL Databases
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 a key — 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