Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

JDBC MCP Server

by igorolvversion 0.2.0i★ –iRuns on your computer
Registry nameio.github.igorolv/jdbc-mcp-server

Install

Overview

Description from the maker (original English)

Read-only SQL, plans, schema for AI agents: PostgreSQL, Oracle, SQL Server, Firebird, SQLite, JDBC

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Databases & datasets

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • You fill in yourself: JDBC_MCP_RESOURCES_ENABLED

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "jdbc": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "JDBC_MCP_RESOURCES_ENABLED",
        "ghcr.io/igorolv/jdbc-mcp-server:0.2.0"
      ],
      "env": {
        "JDBC_MCP_RESOURCES_ENABLED": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add jdbc --env JDBC_MCP_RESOURCES_ENABLED=your-value -- docker run -i --rm -e JDBC_MCP_RESOURCES_ENABLED ghcr.io/igorolv/jdbc-mcp-server:0.2.0

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "jdbc": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "JDBC_MCP_RESOURCES_ENABLED",
        "ghcr.io/igorolv/jdbc-mcp-server:0.2.0"
      ],
      "env": {
        "JDBC_MCP_RESOURCES_ENABLED": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "jdbc": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "JDBC_MCP_RESOURCES_ENABLED",
        "ghcr.io/igorolv/jdbc-mcp-server:0.2.0"
      ],
      "env": {
        "JDBC_MCP_RESOURCES_ENABLED": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • JDBC_MCP_RESOURCES_ENABLED env
    Also expose catalog-qualified MCP resources for table and column metadata

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account igorolv, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Databases & datasetsi

  • More stars than 0% of the other 952 servers in this category
  • Published to the registry more recently than 43% of the other 952 servers in this category
  • Basic checks equal to or better than 100% of the other 952 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is JDBC MCP Server safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.2.0) reached the registry 42 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.

What can I use instead?

In the same category: Supabase, MongoDB MCP Server, Elasticsearch MCP Server

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Supabase

by supabase

Supabase’s official server lets AI create tables, query data and review project settings in your Supabase database.

Computer or cloud★ 2,993Apache-2.0Updated today
Install

MongoDB MCP Server

by mongodb-js

MongoDB Model Context Protocol Server

Runs on your computer★ 1,157Apache-2.0Updated 2 days ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

JDBC MCP Server

MCP server (stdio) that exposes read-only access to relational databases over JDBC: schema metadata, SELECT execution, execution plans, statistics and index analysis. Built-in dialects for PostgreSQL, Oracle, SQL Server, Firebird and SQLite (drivers bundled); other databases are served through DatabaseMetaData with an external driver.

Contents: Features · Typical Scenarios · Quickstart · Architecture · MCP Tools · MCP Resources · Read-only Protection · Server Environment Variables · Build · Stack · Troubleshooting · License

Features

  • Engines: PostgreSQL 11+, Oracle 12c+, SQL Server 2012+, Firebird 3+, SQLite; generic JDBC via driverPath. Capabilities per engine: Supported Databases.
  • Write protection: JSqlParser AST guard (single SELECT / WITH / EXPLAIN), plus session-, transaction- or file-level read-only mode where the engine supports it. Details: Read-only Protection.
  • Connections: any number of databases in one connections.json; every tool takes a connection argument; pools are created on first use. Credentials are not read from the environment.
  • Tools: 49, in 11 groups that can be disabled individually: metadata, query execution, plan analysis, column distribution and selectivity, table and index statistics, schema context, benchmarks, usage catalog. Reference: MCP Tools.
  • Local catalog: per-connection SQLite file with a persistent structure snapshot and an index of known application queries (usage catalog).
  • Clients: any MCP client with stdio transport; configuration examples for Claude Code, Codex CLI, OpenCode, VS Code, Copilot CLI, Cursor, Claude Desktop and Qwen Code in docs/clients.md.

Typical Scenarios

The agent picks the tools itself; these are the chains it usually follows. Every tool is described in MCP Tools.

ScenarioExample requestTools
Answer a data question"How many orders did each region ship last month?"queryContext or schemaBrief → describeTable → findJoinPaths → validateQuery → executeQuery
Explore an unfamiliar schema"What does the billing schema hold, and how are its tables related?"schemaBrief → tableContext → sampleRows → schemaGraphDot
Check a query before running it"Is this report query correct, and which tables does it really read?"inspectQuery → queryLint → resolveQueryLineage → analyzePlan
Speed up a slow query"Why is this query slow, and which index would help?"analyzePlan → tableStats, indexStats → estimateSelectivity, columnDistribution, joinCardinality → benchmarkQuery
Audit indexes and schema"Find missing and redundant indexes in the orders schema."fkIndexCoverage, redundantIndexes, unusedIndexes, schemaLint
Learn from existing application SQL"How does the application usually join customers and invoices?"findQueriesByTable, findQueriesByColumn, observedRelationships

Quickstart

1. Get the jar — download jdbc-mcp-server.jar from the latest release (JDK 21+ required; all JDBC drivers are bundled), or build it yourself:

./gradlew bootJar   # → build/libs/jdbc-mcp-server.jar

No local JDK? Use the Docker image ghcr.io/igorolv/jdbc-mcp-server instead — see Docker.

2. Describe your databases in ~/.jdbc-mcp-server/connections.json (%USERPROFILE%\.jdbc-mcp-server\connections.json on Windows, /data/connections.json in the Docker image) — one entry per database, keyed by the connection name:

{

"connections": { "orders": { "url": "jdbc:postgresql://db.example.com:5432/orders", "username": "ai_readonly", "password": "secret", "defaultSchema": "public", "description": "Order service — customers, orders, shipments", "structureSnapshotSchemas": ["public", "nsi"] }, "billing": { "url": "jdbc:oracle:thin:@//oracle.example.com:1521/BILLING", "username": "AI_READONLY", "password": "${BILLING_DB_PASSWORD}", "defaultSchema": "BILLING_OWNER", "description": "Legacy billing (Oracle)" }, "crm": { "url": "jdbc:sqlserver://sql.example.com:1433;databaseName=crm;encrypt=true", "username": "ai_readonly", "password": "secret", "defaultSchema": "dbo", "description": "CRM (SQL Server)" }, "legacy": { "url": "jdbc:firebirdsql://fb.example.com:3050//var/lib/firebird/data/app.fdb", "username": "SYSDBA", "password": "secret", "description": "Pre-2010 warehouse app (Firebird)" }, "archive": { "url": "jdbc:firebirdsql:embedded:/srv/data/archive-copy.fdb?nativeLibraryPath=/opt/firebird/lib", "username": "SYSDBA", "password": "secret", "description": "Copy of the warehouse archive, opened in-process (Firebird embedded)" }, "analytics": { "url": "jdbc:sqlite:/srv/data/analytics.db", "description": "Nightly analytics extract (SQLite)" }, "shop": { "url": "jdbc:mysql://mysql.example.com:3306/shop", "username": "ai_readonly", "password": "secret", "driverPath": "drivers/mysql-connector-j-9.1.0.jar", "description": "Web shop (MySQL, generic JDBC)" } } }

  • url is the only required field; the engine is detected from its prefix. Any other URL needs a driverPath to a driver jar and is served as generic JDBC.
  • description is returned by listConnections, so an agent picks a database by meaning; name the stand and any restriction ("PRODUCTION — keep queries small").
  • archive opens a local Firebird file in-process: nativeLibraryPath is the directory holding libfbclient.so / fbclient.dll with its engine and plugins. Point it at a copy of the file — see Firebird.
  • Use a read-only database user: it is the only protection that does not depend on this server. Keep the file readable only by its owner.

Every field, naming rules, ${VAR} secrets and several stands of one service: docs/connections.md.

3. Register the server with your MCP client — with no database settings in the client config:

{

"command": "java", "args": ["-jar", " /jdbc-mcp-server.jar"], "env": {} }

For Claude Code and Codex CLI that is one command:

claude mcp add --scope user jdbc -- java -jar /path/to/jdbc-mcp-server.jar

codex mcp add jdbc -- java -jar /path/to/jdbc-mcp-server.jar

OpenCode, VS Code with Copilot, Copilot CLI, Cursor, Claude Desktop, Qwen Code, and tips that apply to every client: docs/clients.md.

4. Try it. Ask the agent in plain words:

  • *"Which databases can you reach?"* — it calls listConnections and lists the entries of your connections.json with their descriptions.
  • *"How many tables are there in orders?"* — it calls listTables on that connection and counts them.

If the first call against a database fails, see Checking a configuration.

Architecture

 MCP client (Claude Code, Codex, VS Code, Cursor, ...)

| JSON-RPC over stdin / stdout, no network port v +- jdbc-mcp-server: one JVM, started by the client ------------------------------+ | | | MCP layer 49 tools in switchable groups, optional resources | | | every call names its connection | | v | | Connection registry <-- connections.json, read once at startup | | | a connection is built on its first call, then reused | | v | | Per-connection context | | +- read-only guard (JSqlParser AST) -> SQL executor (row cap, timeout) | | +- dialect: PostgreSQL, Oracle, SQL Server, Firebird, SQLite, generic | | +- metadata, statistics, plan parser and analyzer | | +- local catalog / / .db (SQLite, WAL): | | | structure snapshot + usage index of known queries | | +- Hikari pool of read-only JDBC connections -----------------> database | +--------------------------------------------------------------------------------+

  • One process, many databases. The client starts the server as a child process and talks to it over stdio. The databases come from connections.json; a connection's pool, local catalog and services are created only when a tool call first names it, so a database that is down or misconfigured affects only the calls made against it.
  • The SQL path. Every statement goes through the read-only guard first, then runs on a read-only JDBC connection with the connection's row cap and timeout. Engine-level protections are described in Read-only Protection.
  • Dialects. Each engine has its own implementation of metadata queries, plans and statistics; any other database is served in generic mode through DatabaseMetaData and portable SQL — see Supported Databases.
  • Local catalog. Structural metadata is persisted per connection in a SQLite file with no expiry: describeTable, the schema context tools and searchObjects read covered schemas from it and fall back to the live database otherwise. The same file holds the usage index. Live statistics, samples and plans are never cached. See Persistent Structure Snapshot and Usage Catalog.
  • Execution model. Tool calls on one stdio session run sequentially. The MCP Java SDK 2.0.0 used by Spring AI 2.0.1 can lose responses when several concurrently executed tools finish at the same time, so the server keeps immediateExecution(true) until the SDK fixes this. A client's notifications/cancelled is not propagated to JDBC Statement.cancel(); the configured queryTimeoutSeconds (or a tool call's timeoutSeconds override) remains the server-side limit for a running SQL statement.

MCP Tools

The 49 tools are grouped below by purpose.

Every tool takes connection as its first, required argument, naming the database to run against — including installations that ser

Only the beginning is shown; read the rest in the repo

Ask PopNx