mcpField
J
JDBC-MCP - Database Access for AI Assistants

JDBC-MCP - Database Access for AI Assistants

Local
github.com/guanghuangDatabases0Updated 33w ago

About JDBC-MCP - Database Access for AI Assistants

JDBC-MCP lets AI assistants inspect and query databases through JDBC, with support for creating or modifying data as well. Based on Quarkus MCP JDBC Server, it adds Docker deployment and disables write SQL by default.

Key features

  1. 01Access databases through JDBC
  2. 02Support MCP SSE and STDIO
  3. 03Deploy in Docker containers
  4. 04Disable write SQL by default

Use cases

  1. 01Let an AI assistant inspect database structure
  2. 02Use natural language to help query data
  3. 03Deploy a database MCP service in a container
  4. 04Explicitly enable data modifications when needed

MCP support

This MCP server connects to databases through JDBC and exposes database inspection, querying, creation, and modification to AI clients; INSERT, UPDATE, and DELETE are disabled by default. It can be used over MCP SSE or STDIO.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"jdbc": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"\\"
]
}
}
}
Run commanddocker run -i --rm '\'

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
oci\

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

JDBC-MCP - Database Access for AI Assistants

Docker Hub GitHub License

This is a fork of the Quarkus MCP JDBC Server with added features:

  • Docker deployment - Easily run the MCP SSE or MCP STDIO as a containerized application
  • Enhanced security - Write queries (INSERT, UPDATE, DELETE) are disabled by default and need to be explicitly enabled

The Model Context Protocol (MCP) server enables AI assistants to interact with databases through JDBC connections, making it possible for LLMs to inspect, query, create, and modify database content.

New Features

Docker Deployment

You can now run the JDBC-MCP server in a Docker container.

MCP SSE
Simple usage
docker run -d --name jdbc-mcp \
  -p 8080:8080 \
  -e enable.write.sql=false \
  -e jdbc.user=db_user \
  -e jdbc.password=db_password \
  -e jdbc.url=jdbc:postgresql://host:port/database \
  guang1/jdbc-mcp:latest
Using an Environment File

Create a .env file:

enable.write.sql=false
jdbc.user=db_user
jdbc.password=db_password
jdbc.url=jdbc:postgresql://host:port/database

Then run:

docker run -d --name jdbc-mcp \
  -p 8080:8080 \
  --env-file .env \
  guang1/jdbc-mcp:latest
Docker Compose for SSE
Basic Example
services:
  jdbc-mcp:
    container_name: jdbc-mcp
    ports:
      - 8080:8080
    environment:
      - enable.write.sql=false
      - jdbc.user=db_user
      - jdbc.password=db_password
      - jdbc.url=jdbc:postgresql://host:port/database
    restart: always
    image: guang1/jdbc-mcp:latest
With Environment File
services:
  jdbc-mcp:
    container_name: jdbc-mcp
    ports:
      - 8080:8080
    env_file:
      - .env
    restart: always
    image: guang1/jdbc-mcp:latest
MCP SSE URL

http://localhost:8080/mcp/sse

MCP STDIO

Must pass quarkus.mcp.server.stdio.enabled=true, quarkus.log.console.enable=false and quarkus.log.console.stderr=false environment variables with -i interactive option.

Simple usage
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 \  
  guang1/jdbc-mcp:latest
Using an Environment File
docker run --rm 
  --env-file .env \
   -e quarkus.mcp.server.stdio.enabled=true \
   -e quarkus.log.console.enable=false \
   -e quarkus.log.console.stderr=false \  
  guang1/jdbc-mcp:latest
Claude Desktop Configuration (STDIO)

To use the Docker version with Claude Desktop, add this to your claude_desktop_config.json or server_config.json file:

Simple usage
{
  "mcpServers": {
    "jdbc": {
      "command": "docker",
      "args": [
        "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"
      ]
    }
  }
}
Using an Environment File
{
  "mcpServers": {
    "jdbc": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "--env-file",
        ".env",
        "-e",
        "quarkus.mcp.server.stdio.enabled=true",
        "-e",
        "quarkus.log.console.enable=false",
        "-e",
        "quarkus.log.console.stderr=false",
        "-i",
        "guang1/jdbc-mcp:latest"
      ]
    }
  }
}

Configuration

Environment Variables
VariableDescriptionDefault
jdbc.urlJDBC connection URL (required)-
jdbc.userDatabase username-
jdbc.passwordDatabase password-
enable.write.sqlEnable SQL operations that modify datafalse
Supported Database Types

This MCP server supports multiple database types through JDBC. For detailed information on supported JDBC variants, please see the quarkus-mcp-servers/jdbc documentation.

Security Considerations

⚠️ Warning: When enable.write.sql is set to true, the MCP server can execute SQL statements that modify data. Use with caution in production environments.

Consider these best practices:

  • Use read-only database users when possible
  • Implement network-level access controls
  • Run in an isolated network environment

Using with LLMs

This MCP server provides a standardized API that Large Language Models can use to interact with your database. To connect your LLM:

  1. Configure the LLM to use the MCP server endpoint
  2. Define the capabilities you want to allow (read-only vs. read-write)
  3. Ensure your database schema is accessible to the MCP server
Write Query Security

By default, write operations (INSERT, UPDATE, DELETE) are disabled for security. To enable them:

  • When using Docker: add -e enable.write.sql=true as shown above

Original Documentation

For all other features, including supported databases, general usage, example databases, MCP components, and troubleshooting, please refer to the original repository documentation:

Quarkus MCP JDBC Server Documentation

License

This project is licensed under the Apache License 2.0.

Acknowledgments

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.