mcpField
J
Java based Model Context Procotol (MCP) Server for JDBC

Java based Model Context Procotol (MCP) Server for JDBC

ローカル
github.com/OpenLinkSoftwareデータベース1766 週間前に更新

Java based Model Context Procotol (MCP) Server for JDBC について

OpenLink MCP Server for JDBC は、JDBC 対応データベースを利用する MCP クライアント向けの Java サーバーです。スキーマやテーブルの確認、SQL クエリに加え、Virtuoso 固有の SPARQL、SPASQL、ストアドプロシージャ、AI 支援ツールを提供します。

主な機能

  1. 01スキーマとテーブルの一覧表示
  2. 02列とキー関係の確認
  3. 03部分一致によるテーブル名検索
  4. 04JSONL または Markdown 形式の SQL 実行結果
  5. 05Virtuoso 固有の SPARQL、SPASQL、ストアドプロシージャ

活用シーン

  1. 01クエリ前のデータベーススキーマ確認
  2. 02名前によるテーブル検索
  3. 03SQL 実行と構造化結果の確認

MCP 対応

データベースのメタデータ確認とクエリ操作を MCP クライアント向けのツールとして公開します。一般的な JDBC 機能と Virtuoso 固有の操作を利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"jdbc-server": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
起動コマンドnpx -y @modelcontextprotocol/inspector

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@modelcontextprotocol/inspector

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細


JDBC 用 OpenLink MCP Server

Quarkus で構築された、JDBC 用の軽量な Java ベース MCP(Model Context Protocol)サーバーです。 このサーバーは Virtuoso DBMS、および JDBC ドライバーを備えたほかのあらゆる DBMS バックエンドと互換性があります。

mcp-client-and-servers|648x499


機能

  • スキーマの取得:接続先データベースからすべてのスキーマ名を取得して一覧表示します。
  • テーブルの取得:指定したスキーマまたはすべてのスキーマのテーブル情報を取得します。
  • テーブルの説明:次の情報を含む、テーブル構造の詳細な説明を生成します。
    • 列名とデータ型
    • 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_databaseSQL クエリを実行し、結果を JSONL 形式で返します。
jdbc_execute_querySQL クエリを実行し、結果を JSONL 形式で返します。
jdbc_execute_query_mdSQL クエリを実行し、結果を Markdown テーブル形式で返します。
jdbc_spasql_queryVirtuoso 固有の機能です! SPASQL クエリを実行して結果を返します。
jdbc_sparql_queryVirtuoso 固有の機能です! SPARQL クエリを実行して結果を返します。
jdbc_virtuoso_support_aiVirtuoso 固有の機能です! 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 を使用します。

  1. MCP Inspector をインストールします。

    npm install -g @modelcontextprotocol/inspector
    
  2. 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 を使用します。

  1. JDBC ドライバーをインストールし、JAR ファイルが $CLASSPATH を介してホスト OS の Java 仮想マシン(JVM)に登録されていることを確認します。例:

    export CLASSPATH=$CLASSPATH:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jar
    
  2. 次のコマンドライン引数を使用して 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 ドライバーを使用した例
  1. 次の JDBC ドライバー情報を前提とします。

    • Oracle JDBC ドライバー URL テンプレート

      jdbc:oracle:thin:@<hostname>:[port]:<SERVICEID>
      
    • Informix JDBC ドライバー URL テンプレート

      jdbc:informix-sqli://<hostname>:<port>/<database></database>:<INFORMIXSERVER>=<SERVICEID>
      
  2. 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
    
  3. 次のコマンドライン引数を使用して 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
    
  4. Inspector が返す URL にアクセスし、次の入力フィールドテンプレートに実際の値を入力して、jdbc_execute_query 操作で対象のデータベースにクエリを実行します。

    • JDBC URL
    • ユーザー
    • パスワード
    • クエリ

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。