Skip to main content
Glama
tibero-mcp

tibero-mcp

by jdk1021

tibero-mcp is a Model Context Protocol server that lets AI agents such as Claude Code, Codex and Cursor explore and query a Tibero database. It is built for the way agents actually work on enterprise and public-sector schemas: find the right table from a Korean comment, understand its keys, write a query, check the plan, and never change data by accident.

Why tibero-mcp

Safe by default. Tibero ignores the JDBC read-only flag and has no SET TRANSACTION READ ONLY, so the server enforces it itself. Only SELECT and WITH run, one statement per call, SELECT … FOR UPDATE is refused, and every read is rolled back. The tool that writes does not even exist unless you turn writes on.

Schema discovery that reads comments. In many Tibero schemas the comments are the only documentation. Search tables and columns by comment (주문, 납기), and get columns, primary, unique and foreign keys and indexes for a table in one call.

Results an agent can use. Typed JSON (numbers stay numbers, dates are ISO strings, LOBs are clipped), a hard row cap with a truncated flag and a next_offset to continue from, statement timeouts, execution plans as a readable tree, and errors that say what to try next.

No driver hunting. The official TmaxTibero JDBC driver (com.tmaxtibero:tbjdbc8, GPG-signed on Maven Central) is downloaded on first run, checked against a pinned SHA-1 and cached. No proprietary jar in this repository, no CLASSPATH to set.

Ready to run alongside other agents. stdio or Streamable HTTP, a connection that reconnects by itself, and a process that exits cleanly when the client goes away.

Verified against Tibero 6 using the 7.2.6 driver.

Related MCP server: Oracle DB MCP Server

Quick start

You need Python 3.12+, uv, Java 8+ and network access to Maven Central on first run.

  1. Clone and configure

    git clone https://github.com/jdk1021/tibero-mcp.git
    cd tibero-mcp
    cp env.example .env    # host, dbname, user, password
    uv sync
  2. Register with your client. Claude Code:

    claude mcp add -s user tibero -- uv --directory /path/to/tibero-mcp run tibero-mcp

    Claude Desktop, Cursor and other JSON-configured clients, passing settings as env instead of .env:

    {
      "mcpServers": {
        "tibero": {
          "command": "uv",
          "args": ["--directory", "/path/to/tibero-mcp", "run", "tibero-mcp"],
          "env": {
            "TIBERO_HOST": "db.example.com",
            "TIBERO_PORT": "8629",
            "TIBERO_DBNAME": "tibero",
            "TIBERO_USER": "app_reader",
            "TIBERO_PASSWORD": "…"
          }
        }
      }
    }
  3. Ask your agent something like "Which tables hold order dates? Show the structure of the sales order table."

To share one server between several agents, run it over HTTP and point clients at http://127.0.0.1:8000/mcp:

uv run tibero-mcp --transport streamable-http --port 8000

The HTTP transport has no authentication and binds to 127.0.0.1 by default. Keep it there, or put it behind something that authenticates.

Tools

Tool

What it does

list_schemas

Schemas with table and view counts; system schemas only on request

list_tables

Tables and views with comments and row estimates, filtered by text in the name or comment; paged

describe_table

Columns (type, nullability, default, comment), primary, unique and foreign keys, indexes

search_columns

Columns across a schema matched by name or comment, with full types such as VARCHAR(20); narrow by table, paged

query

One SELECT/WITH with ? bind parameters, a row cap and paging

explain

Execution plan as an indented tree, plus per-step cost, cardinality and predicates

execute

DML, DDL or a PL/SQL block, committed on success. Registered only when TIBERO_READ_ONLY=false

Configuration

Variable

Default

Notes

TIBERO_HOST

required

TIBERO_PORT

8629

TIBERO_DBNAME

required; database name (SID)

TIBERO_USER, TIBERO_PASSWORD

required

TIBERO_READ_ONLY

true

false registers the execute tool

TIBERO_MAX_ROWS

500

upper bound per call

TIBERO_QUERY_TIMEOUT

30

seconds; 0 disables

TIBERO_JDBC_JAR

use a driver jar you already have instead of downloading

JAVA_HOME

pick a specific JDK or JRE

Environment variables win over .env in the working directory. The driver is cached in $XDG_CACHE_HOME/tibero-mcp (default ~/.cache/tibero-mcp).

How read-only is enforced

Layer

What it stops

Tool surface

No execute tool unless TIBERO_READ_ONLY=false

Statement check

Anything but SELECT/WITH; scripts with more than one statement; FOR UPDATE

Transaction

Every read ends in a rollback

Your account

Everything else. A function called from a SELECT can still write through an autonomous transaction, so connect with an account that only has SELECT grants

Development

uv sync
uv run ruff check . && uv run ruff format --check .
uv run pytest

Unit tests need neither a database nor a JVM. See CONTRIBUTING.md.

License

MIT for this project. The Tibero JDBC driver is distributed by TmaxTibero under its own license and is not included here. This project is not affiliated with or endorsed by TmaxTibero; Tibero is a trademark of TmaxTibero Co., Ltd.

Available Tools

6 tools
describe_tableB
Read-only

Show a table's columns (type, nullability, default, comment), keys, foreign keys and indexes.

Inputs: table (required), schema. Returns: object

explainA
Read-only

Show the optimizer's execution plan as an indented tree, plus per-step cost, cardinality and access/filter predicates exactly as Tibero reports them.

Inputs: sql (required). Returns: object

list_schemasA
Read-only

List schemas that own tables or views visible to the connected user, with object counts.

Inputs: include_system. Returns: object

list_tablesB
Read-only

List tables (and views) in a schema with their comments and approximate row counts.

Inputs: offset, schema, search, include_views. Returns: object

queryA
Read-only

Run a read-only query and return columns and rows. truncated is true when more rows exist.

Inputs: sql (required), offset, params, max_rows. Returns: object

search_columnsA
Read-only

Find columns across a schema by name or comment, e.g. '주문' or 'ORDER_DT'. Results are paged.

Inputs: keyword (required), offset, schema, max_rows, +1 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool targets a distinct step in database exploration: schema listing, table listing, table description, column search, querying, and plan explanation. The only near-overlap (describe_table vs search_columns) is clearly separated by scope: one table's structure versus schema-wide column lookup.

    Naming Consistency4/5

    Four tools follow a clean verb_noun pattern (list_schemas, list_tables, describe_table, search_columns), but query and explain are bare verbs without a noun. The deviation is minor and the names remain unambiguous.

    Tool Count5/5

    Six tools is well-scoped for a read-only database exploration server, with no redundant or filler tools. Each tool maps to a clear workflow stage from discovery to query execution.

    Completeness4/5

    The surface covers a full discovery-to-execution lifecycle: schemas, tables, columns, search, query, and explain plan. Minor gaps exist, such as standalone index/constraint exploration or procedure/function listing, but agents can work around these via describe_table and query.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides access to database schema information generated by tbls and enables secure SQL query execution on MySQL and SQLite databases. Allows users to explore database structures, table relationships, and execute SELECT queries through natural language interactions.
      ISC
    • A
      license
      A
      quality
      D
      maintenance
      Enables AI tools to interact with Oracle databases through query execution, schema browsing, stored procedure calls, and transaction management. Supports multiple database connections with safety features like read-only mode and dangerous query detection.
      16
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to interact with relational databases such as MySQL, PostgreSQL, SQLite, SQL Server, and Oracle. Provides tools for querying, data inspection, and schema analysis with optional read-only mode.
      13 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables safe schema exploration and read-only SQL querying of Tibero databases, with policy-enforced SELECT queries and table metadata inspection.
      6 npm
      MIT