SQLcl は、Oracle Database に接続して SQL を実行したり、スクリプトを操作したり、開発者向けに支援機能が強化されたコマンドラインツールですが、今月(2025年7月)にリリースされた Oracle SQLcl 25.2.1 でMCPサーバとして使用できるようになりました。
これにより、Oracle Database に対して自然言語で問い合わせができるようになるということで、実際に簡単に触ってみた内容を記事にしたいと思います。
環境・構成
MCPクライアントとして、Claude for Desktop (以降、Claude Desktop とします)を使用し、Claude Desktop だと Docker にMCPサーバをインストールするというのが最近のトレンドかと思いますが、今回は、WSL2上の Ubuntu にインストールしてみました。
(ちなみに、Windows上に SQLcl を直接インストールするのが、最も簡単な手法ではありますが、Windows上にJREをインストールしたくなかったのと、既にWindows上にインストールしてみたというブログが他にもあった為、WSL2にインストールして確認してみました。)
全体的な構成としては、以下のような感じで、SQLcl の接続先として OCI の Autonomous Database 23ai を使用しています。
前提条件
- Claude Desktop はインストール済みであること。
- WSL2 に、Ubuntu 22.04 がインストール済みであること。
- Autonomous Database は、ローカル環境からアクセス可能で、Walletファイルは Ubuntu 上に保存済みであること。
SQLcl のインストール
JRE のインストール
SQLcl の MCPサーバを使用するには、Java Runtime Environment (JRE) の バージョン 17 以上が必要となります。
詳細については、以下のリファレンスの 3.4.1 Installing the Required Software
をご確認下さい。
まずは、こちらを Ubuntu にインストールします。
1 |
$ sudo apt install openjdk-17-jdk |
SQLcl のダウンロード
以下のURLへアクセスし、ダウンロード画面から SQLcl をダウンロードします。
https://www.oracle.com/database/sqldeveloper/technologies/sqlcl/download/
ダウンロードした zip ファイルは、Ubuntu 上の /home/blog/oracle/
に保存します。
※ /home/blog
は、WSLのデフォルトのログオンユーザのホームディレクトリに沿って変更して下さい。これ以降のコマンドでも同様に置き換えて下さい。
デフォルトのログオンユーザは /etc/wsl.conf
で設定可能です。
合わせて、 Autonomous Database の Walletファイルも同ディレクトリに配置します。
SQLcl のセットアップ
Ubuntu にログオン後、 oracle
ディレクトリに移動し、ダウンロードしたファイルを解凍します。
1 2 3 4 |
~$ cd ~/oracle ~/oracle$ unzip sqlcl-25.2.1.195.1751.zip ~/oracle$ ls sqlcl sqlcl-25.2.1.195.1751.zip wallet.zip |
この状態で、Walletファイルを使用して、Autonomous Database へ接続します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ sqlcl/bin/sql -cloudconfig wallet.zip admin/{パスワード}@verification_high SQLcl: Release 25.2 Production on Thu Jul 17 18:03:09 2025 Copyright (c) 1982, 2025, Oracle. All rights reserved. Last Successful login time: Thu Jul 17 2025 18:03:10 +09:00 Connected to: Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems Version 23.8.0.25.06 SQL> |
正常に接続できれば、 conn -save
で接続情報を保存します。
以下では、接続名を my_mcp_wallet
として保存しています。
こちらについての詳細は、以下のリファレンスの 3.4.2 Configuring Database Connections
をご確認下さい。
1 2 3 4 5 6 7 8 9 10 |
SQL> conn -save my_mcp_wallet -savepwd -cloudconfig /home/blog/oracle/wallet.zip admin/{パスワード}@verification_high Name: my_mcp_wallet Connect String: verification_high User: admin Password: ****** oracle.net.wallet_location: (SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN}))) TNSNAMES.ORA: /home/blog/.dbtools/connections/udoZUE9rJd-c-uKtI8M7hw/tnsnames.ora TNS Descriptor: verification_high = (description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-osaka-1.oraclecloud.com))(connect_data=(service_name=g9fd1c19849ee2b_agetaroudb_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) Connected. SQL> quit |
実行後、ホームディレクトリの ~/.dbtools/connections
内に接続情報が保存されていることが分かります。
1 2 3 |
~/oracle$ ls ~/.dbtools/connections/udoZUE9rJd-c-uKtI8M7hw/ README cwallet.sso ewallet.p12 keystore.jks sqlnet.ora truststore.jks credentials.sso dbtools.properties ewallet.pem ojdbc.properties tnsnames.ora |
最後に、MCPサーバが起動することを確認しておきましょう。
1 2 3 4 5 |
~/oracle$ sqlcl/bin/sql -mcp ---------- MCP SERVER STARTUP ---------- MCP Server started successfully on Thu Jul 17 18:20:07 JST 2025 Press Ctrl+C to stop the server ---------------------------------------- |
テストデータの登録
続いて、テストデータを登録しておきます。
テストデータとして、以下を使用させて頂きました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
~$ cd ~/oracle ~/oracle$ curl -LO https://github.com/oracle-samples/db-sample-schemas/archive/refs/heads/main.zip % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 11.6M 0 11.6M 0 0 3611k 0 --:--:-- 0:00:03 --:--:-- 4041k ~/oracle$ unzip main.zip ~/oracle$ ls db-sample-schemas-main main.zip sqlcl sqlcl-25.2.1.195.1751.zip wallet.zip ~/oracle$ cd db-sample-schemas-main/human_resources ~/oracle/db-sample-schemas-main/human_resources$ /home/blog/oracle/sqlcl/bin/sql -cloudconfig /home/blog/oracle/wallet.zip admin/{パスワード}@verification_high SQLcl: Release 25.2 Production on Wed Jul 16 10:33:56 2025 Copyright (c) 1982, 2025, Oracle. All rights reserved. Last Successful login time: Wed Jul 16 2025 10:33:56 +09:00 Connected to: Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems Version 23.8.0.25.06 SQL> @hr_install.sql Thank you for installing the Oracle Human Resources Sample Schema. This installation script will automatically exit your database session at the end of the installation or if any error is encountered. The entire installation will be logged into the 'hr_install.log' log file. Enter a password for the user HR: *************** Enter a tablespace for HR [DATA]: Do you want to overwrite the schema, if it already exists? [YES|no]: ****** Creating REGIONS table .... Table REGIONS created. INDEX REG_ID_PK created. Table REGIONS altered. ****** Creating COUNTRIES table .... (省略) Installation verification ____________________________ Verification: Table provided actual ______________ ___________ _________ regions 5 5 countries 25 25 departments 27 27 locations 23 23 employees 107 107 jobs 19 19 job_history 10 10 Thank you! ___________________________________________________________ The installation of the sample schema is now finished. Please check the installation verification output above. You will now be disconnected from the database. Thank you for using Oracle Database! Disconnected from Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems Version 23.8.0.25.06 |
Claude Desktopの設定
claude_desktop_config.json
に以下のように設定を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "mcpServers": { (省略), "sqlcl": { "command": "wsl", "args": [ "bash", "-c", "cd /home/blog/oracle/sqlcl && bin/sql -mcp" ] } } } |
今回、個人的な都合で WSL2 でMCPサーバを起動させてますが、Windows上に SQLcl をインストールすれば、以下のように、よりシンプルに設定することができます。
設定追加後は、Claude Desktop を再起動させ、「検索とツール」から「sqlcl」が表示されるのを確認し、有効化します。
続いて表示されたメニュー「すべてのツールを有効化」を押します。
自然言語で問い合わせてみる
まずは、 HRスキーマにあるテーブルを教えて
と聞いてみました。
正確にテーブル一覧を返してくれました。
次は、 どの職種の従業員が一番多い?
としてみました。
これは、単一テーブルでなく、JOBS テーブルと、EMPLOYEES テーブルを結合しないと答えられないと思いますが、以下のようなSQLを実行して、しっかりと回答を返してくれてます。
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "sql": "SELECT /* LLM in use is claude-sonnet-4 */ j.job_title, j.job_id, COUNT(e.employee_id) as employee_count FROM hr.jobs j LEFT JOIN hr.employees e ON j.job_id = e.job_id GROUP BY j.job_title, j.job_id ORDER BY employee_count DESC", "model": "claude-sonnet-4", "mcp_client": "sqlcl" } |
まとめ
SQLcl のMCPサーバを使うことで、Oracle Database に対して、シンプルなセットアップで自然言語によるクエリ実行が可能になりました。
今回は、GitHub に公開されているサンプルデータベースであった為、もしかすると Claude が学習済みでうまくレスポンスが返ってきた可能性もあるかと思いますので、実際に業務で使用するようなデータベースで、どの程度、使用できるのかは引き続き検証してみようと思います。
実際に使ってみると、非エンジニアでもデータにアクセスできる未来が、もう未来でなくなっていることを実感しました。
Autonomous Database でいえば、Select AIがありますが、現時点では、Oracle Database では使えないので、Oracle Database をお使いの方は、是非、SQLcl のMCPサーバを使って検証してみて下さい。