Java based Model Context Procotol (MCP) Server for JDBC について
OpenLink MCP Server for JDBC は、JDBC 対応データベースを利用する MCP クライアント向けの Java サーバーです。スキーマやテーブルの確認、SQL クエリに加え、Virtuoso 固有の SPARQL、SPASQL、ストアドプロシージャ、AI 支援ツールを提供します。
主な機能
- 01スキーマとテーブルの一覧表示
- 02列とキー関係の確認
- 03部分一致によるテーブル名検索
- 04JSONL または Markdown 形式の SQL 実行結果
- 05Virtuoso 固有の SPARQL、SPASQL、ストアドプロシージャ
活用シーン
- 01クエリ前のデータベーススキーマ確認
- 02名前によるテーブル検索
- 03SQL 実行と構造化結果の確認
MCP 対応
データベースのメタデータ確認とクエリ操作を MCP クライアント向けのツールとして公開します。一般的な JDBC 機能と Virtuoso 固有の操作を利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
JDBC 用 OpenLink MCP Server
Quarkus で構築された、JDBC 用の軽量な Java ベース MCP(Model Context Protocol)サーバーです。 このサーバーは Virtuoso DBMS、および JDBC ドライバーを備えたほかのあらゆる DBMS バックエンドと互換性があります。

機能
- スキーマの取得:接続先データベースからすべてのスキーマ名を取得して一覧表示します。
- テーブルの取得:指定したスキーマまたはすべてのスキーマのテーブル情報を取得します。
- テーブルの説明:次の情報を含む、テーブル構造の詳細な説明を生成します。
- 列名とデータ型
- NULL 許容属性
- 主キーと外部キー
- テーブルの検索:名前の部分文字列に基づいてテーブルを絞り込み、取得します。
- ストアドプロシージャの実行:Virtuoso 固有の機能です! ストアドプロシージャを実行して結果を取得します。
- クエリの実行:
- JSONL 形式の結果:構造化された応答に最適です。
- Markdown テーブル形式の結果:レポートや可視化に最適です。
前提条件
MCP サーバーには Java 21 以降が必要です。
インストール
このリポジトリをクローンします:
git clone https://github.com/OpenLinkSoftware/mcp-jdbc-server.git
cd mcp-jdbc-server
環境変数
既定値を次のように上書きして、.env をお好みに合わせて更新してください:
jdbc.url=jdbc:virtuoso://localhost:1111
jdbc.user=dba
jdbc.password=dba
jdbc.api_key=xxx
設定
Virtuoso とその JDBC ドライバーを使用する Claude Desktop ユーザーの場合:
claude_desktop_config.json に次の内容を追加します:
{
"mcpServers": {
"my_database": {
"command": "java",
"args": ["-jar", "/path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar"],
"env": {
"jdbc.url": "jdbc:virtuoso://localhost:1111",
"jdbc.user": "username",
"jdbc.password": "password",
"jdbc.api_key": "sk-xxx"
}
}
}
}
別の JDBC ドライバーまたは複数のドライバーを組み合わせて使用する Claude Desktop ユーザーの場合:
ローカル環境に合わせて編集した次の内容を claude_desktop_config.json に追加します:
"jdbc": {
"command": "java",
"args": [
"-cp",
"/path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar:/path/to/jdbc_driver1.jar:/path/to/jdbc_driverN.jar",
"io.quarkus.runner.GeneratedMain"
],
"env": {
"jdbc.url": "jdbc:virtuoso://localhost:1111",
"jdbc.user": "dba",
"jdbc.password": "dba"
}
}
使用方法
提供されるツール
インストールが正常に完了すると、次のツールを MCP クライアントアプリケーションで使用できるようになります。
概要
| 名前 | 説明 |
|---|---|
jdbc_get_schemas | 接続先のデータベース管理システム(DBMS)からアクセスできるデータベーススキーマを一覧表示します。 |
jdbc_get_tables | 選択したデータベーススキーマに関連付けられたテーブルを一覧表示します。 |
jdbc_describe_table | 指定したデータベーススキーマに関連付けられたテーブルの説明を返します。列名、データ型、NULL の処理、自動インクリメント、主キー、外部キーに関する情報が含まれます。 |
jdbc_filter_table_names | 入力フィールド q の部分文字列パターンに基づいて、選択したデータベーススキーマに関連付けられたテーブルを一覧表示します。 |
jdbc_query_database | SQL クエリを実行し、結果を JSONL 形式で返します。 |
jdbc_execute_query | SQL クエリを実行し、結果を JSONL 形式で返します。 |
jdbc_execute_query_md | SQL クエリを実行し、結果を Markdown テーブル形式で返します。 |
jdbc_spasql_query | Virtuoso 固有の機能です! SPASQL クエリを実行して結果を返します。 |
jdbc_sparql_query | Virtuoso 固有の機能です! SPARQL クエリを実行して結果を返します。 |
jdbc_virtuoso_support_ai | Virtuoso 固有の機能です! Virtuoso Support Assistant/Agent を通じて LLM と対話します。 |
詳細
-
jdbc_get_schemas- 接続先データベースからすべてのスキーマ名を取得し、一覧を返します。
- 入力パラメーター:
user(string、任意):データベースのユーザー名です。既定値は"demo"です。password(string、任意):データベースのパスワードです。既定値は"demo"です。url(string、任意):JDBC URL 接続文字列です。
- スキーマ名の JSON 文字列配列を返します。
-
jdbc_get_tables- 指定したスキーマ内のテーブル情報を含むリストを取得して返します。スキーマが指定されていない場合は、接続のデフォルトスキーマを使用します。
- 入力パラメーター:
schema(string, optional):テーブルを絞り込むデータベーススキーマです。デフォルトは接続のデフォルトスキーマです。user(string, optional):データベースのユーザー名です。デフォルトは"demo"です。password(string, optional):データベースのパスワードです。デフォルトは"demo"です。url(string, optional):JDBC URL 接続文字列です。
- テーブル情報(例:
TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE)を含む JSON 文字列を返します。
-
jdbc_filter_table_names- 名前に特定の部分文字列を含むテーブルの情報を絞り込んで返します。
- 入力パラメーター:
q(string, required):テーブル名から検索する部分文字列です。schema(string, optional):テーブルを絞り込むデータベーススキーマです。デフォルトは接続のデフォルトスキーマです。user(string, optional):データベースのユーザー名です。デフォルトは"demo"です。password(string, optional):データベースのパスワードです。デフォルトは"demo"です。url(string, optional):JDBC URL 接続文字列です。
- 条件に一致するテーブルの情報を含む JSON 文字列を返します。
-
jdbc_describe_table- 特定のテーブルの列に関する詳細情報を取得して返します。
- 入力パラメーター:
schema(string, required):テーブルを含むデータベーススキーマの名前です。table(string, required):説明するテーブルの名前です。user(string, optional):データベースのユーザー名です。デフォルトは"demo"です。password(string, optional):データベースのパスワードです。デフォルトは"demo"です。url(string, optional):JDBC URL 接続文字列です。
- テーブルの列を説明する JSON 文字列(例:
COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)を返します。
-
jdbc_query_database- 標準的な SQL クエリを実行し、結果を JSON 形式で返します。
- 入力パラメーター:
query(string, required):実行する SQL クエリ文字列です。user(string, optional):データベースのユーザー名です。デフォルトは"demo"です。password(string, optional):データベースのパスワードです。デフォルトは"demo"です。url(string, optional):JDBC URL 接続文字列です。
- クエリ結果を JSON 文字列として返します。
-
jdbc_query_database_md- 標準的な SQL クエリを実行し、結果を Markdown テーブル形式で返します。
- 入力パラメーター:
query(string, required):実行する SQL クエリ文字列です。user(string, optional):データベースのユーザー名です。デフォルトは"demo"です。password(string, optional):データベースのパスワードです。デフォルトは"demo"です。url(string, optional):JDBC URL 接続文字列です。
- クエリ結果を Markdown テーブル文字列として返します。
-
jdbc_query_database_jsonl- 標準的な SQL クエリを実行し、結果を JSON Lines (JSONL) 形式(1 行につき 1 つの JSON オブジェクト)で返します。
- 入力パラメーター:
query(string, required):実行する SQL クエリ文字列です。user(string, optional):データベースのユーザー名です。デフォルトは"demo"です。password(string, optional):データベースのパスワードです。デフォルトは"demo"です。url(string, optional):JDBC URL 接続文字列です。
- クエリ結果を JSONL 文字列として返します。
-
jdbc_spasql_query- Virtuoso 固有の機能です!
- SPASQL(SQL/SPARQL ハイブリッド)クエリを実行し、結果を返します。
- 入力パラメーター:
query(string, required):SPASQL クエリ文字列です。max_rows(number, optional):返す行の最大数です。デフォルトは20です。timeout(number, optional):クエリのタイムアウト時間(ミリ秒)です。デフォルトは30000(つまり 30 秒)です。user(string, optional):データベースのユーザー名です。デフォルトは"demo"です。password(string, optional):データベースのパスワードです。デフォルトは"demo"です。url(string, optional):JDBC URL 接続文字列です。
- 内部のストアドプロシージャ呼び出し(例:
Demo.demo.execute_spasql_query)からの結果を返します。
-
jdbc_sparql_query- Virtuoso 固有の機能です!
- SPARQL クエリを実行し、結果を返します。
- 入力パラメーター:
query(文字列、必須):SPARQL クエリ文字列。format(文字列、任意):希望する結果形式。デフォルトは'json'です。timeout(数値、任意):クエリのタイムアウト時間(ミリ秒)。デフォルトは30000(つまり 30 秒)です。user(文字列、任意):データベースのユーザー名。デフォルトは"demo"です。password(文字列、任意):データベースのパスワード。デフォルトは"demo"です。url(文字列、任意):JDBC URL 接続文字列。
- 基盤となる関数呼び出し(例:
"UB".dba."sparqlQuery")から結果を返します。
-
jdbc_virtuoso_support_ai- Virtuoso 固有の機能です!
- Virtuoso 固有の AI アシスタント機能を利用し、プロンプトと任意の API キーを渡します。
- 入力パラメーター:
prompt(文字列、必須):AI 機能に渡すプロンプトテキスト。api_key(文字列、任意):AI サービスの API キー。デフォルトは"none"です。user(文字列、任意):データベースのユーザー名。デフォルトは"demo"です。password(文字列、任意):データベースのパスワード。デフォルトは"demo"です。url(文字列、任意):JDBC URL 接続文字列。
- AI Support Assistant 関数呼び出し(例:
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI)から結果を返します。
基本的な使い方とトラブルシューティング
MCP Inspector で Virtuoso の ODBC ドライバーに接続する
基本的な MCP クライアントの使い方とトラブルシューティングには、次の手順で MCP Inspector を使用します。
-
MCP Inspector をインストールします。
npm install -g @modelcontextprotocol/inspector -
Inspector を起動します。
npx @modelcontextprotocol/inspector java -jar /path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar
Inspector が返す URL にアクセスして、MCP サーバーとのやり取りをトラブルシューティングします。
MCP Inspector で追加のドライバーに接続する
基本的な MCP クライアントの使い方とトラブルシューティングには、次の手順で MCP Inspector を使用します。
-
JDBC ドライバーをインストールし、JAR ファイルが
$CLASSPATHを介してホスト OS の Java 仮想マシン(JVM)に登録されていることを確認します。例:export CLASSPATH=$CLASSPATH:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jar -
次のコマンドライン引数を使用して Inspector を起動します。
npx @modelcontextprotocol/inspector java -cp MCPServer-1.0.0-runner.jar:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jar io.quarkus.runner.GeneratedMain
Oracle および Informix ドライバーを使用した例
-
次の JDBC ドライバー情報を前提とします。
-
Oracle JDBC ドライバー URL テンプレート
jdbc:oracle:thin:@<hostname>:[port]:<SERVICEID> -
Informix JDBC ドライバー URL テンプレート
jdbc:informix-sqli://<hostname>:<port>/<database></database>:<INFORMIXSERVER>=<SERVICEID>
-
-
Oracle(
ojdbc17.jar)および/または Informix(jdbc-15.0.0.1.1.jar)の JDBC ドライバーをインストールし、JAR ファイルが$CLASSPATHを介してホスト OS の Java 仮想マシン(JVM)に登録されていることを確認します。例:export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/jdbc-15.0.0.1.1.jar export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/ojdbc17.jar -
次のコマンドライン引数を使用して Inspector を起動します。
npx @modelcontextprotocol/inspector java -cp MCPServer-1.0.0-runner.jar:/path/to/Java/Extensions/ojdbc17.jar:/path/to/Java/Extensions/jdbc-15.0.0.1.1.jar io.quarkus.runner.GeneratedMain -
Inspector が返す URL にアクセスし、次の入力フィールドテンプレートに実際の値を入力して、
jdbc_execute_query操作で対象のデータベースにクエリを実行します。- JDBC URL
- ユーザー
- パスワード
- クエリ
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。