33
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacBook で AIデータベース体験: MCPサーバーをインストールして 対話型AI Claude で Oracle Database に自然言語で質問してみてみた

Last updated at Posted at 2025-08-19

Oracle Database に保存されている エンタープライズ データに対して エージェントアプリケーションを企業が構築できるようにするために、Model Context Protocol (MCP) Server を発表しました。
Oracle MCPサーバーは Oracleのコア開発ツールに統合されており、MCP をサポートするあらゆるプラットフォームで Oracle Database をすぐに利用できるようになります。この統合は、Oracle Database への新しいコマンドラインである Oracle SQLcl を介して実現されます。

SQLcl MCPサーバーは、AIアプリケーションとOracleデータベースの連携を強化するツールセットを提供します。これらのツールは、様々なデータベース操作に使用されるSQLclコマンドを抽象化することで、AIモデルが自律的にデータベースを管理できるようにします。これにより、手動のコマンドライン操作ではなく、戦略的な目標に集中できるようになります。
さらに、これらのツールは自然言語インターフェースを通じて高度なワークフローを実現し、AIシステムによるデータベースのデモ実行、大規模なデータ移行の管理、複雑な分析クエリの実行、管理タスクの自動化を可能にします。最終的に、SQLcl MCP Serverは直接的な手動入力の必要性を排除し、AIアプリケーションが高度な専門知識と労力を必要としていた複雑なデータベース操作を独自に実行できるようにします。
現在、SQLcl MCP サーバーは次のツールを提供しています。

  list-connections:マシンに保存されているすべての Oracle データベース接続を検出し、一覧表示します。
  connect:指定した名前付き接続の 1 つへの接続を確立します。
  切断:現在アクティブな Oracle データベース接続を終了します。
  run-sql:接続されたデータベースに対して標準の SQL クエリと PL/SQL コード ブロックを実行します。
  run-sqlcl: SQLcl 固有のコマンドと拡張機能を実行します。

image.png

企業のデータにAIをより効率的に活用する新しい方法を模索している開発者であれば、モデル・コンテキスト・プロトコル(MCP)が最近なぜ注目されているのか、すでにご存知でしょう。MCPは、大規模言語モデル(LLM)とAIツールを統合するためのUSB-Cのような位置づけとなっています。 そして今、Oracle SQLcl 経由でアクセスできるOracle Database向けモデル・コンテキスト・プロトコル・サーバー(MCPサーバー)の登場により、AIツールやLLMごとにカスタム統合を構築することなく、AIアシスタントやLLMをOracle Databaseに安全に接続できるようになります。つまり、MCPをサポートするあらゆるプラットフォームからOracle Databaseにアクセスできるようになるのです。

ということで、MacBook へ SQLcl MCP Server と Anthropic社が開発した高性能な対話型AI Claude Desktop をインストールして Oracle Databse へ自然言語で問い合わせて ER図やグラフ、ダッシュボード作成もお願いしてみてみます。

■ 構成イメージ

MacBook へ SQLcl MCP Server と 対話方 AI Claude をインストールして Oracle Database と接続します。
構成.png
事前に構成図のように Oracle Cloud Infrastructure (OCI) へ Oracle Database を構築して MacBook と SQL 通信できるように設定しておきます。
また、Oracle Database には サンプルスキーマをインストールしそのデータを使用した問合せをできるようにしておきます。

注意
大規模言語モデル(LLM)にデータベースへのアクセスを許可すると、重大なセキュリティリスクが生じます。LLMは入力されたデータを使用してレスポンスを生成するため、意図しないテーブルや機密情報が誤って公開される可能性があります。

これらのリスクを軽減するには、次の安全対策を実施してください。

  • 最小限の権限を割り当てる: LLMが使用するデータベースユーザーアカウントに、タスクに必要な最小限の権限を設定します。このアプローチにより、LLMがアクセスできる範囲が制限されます。
  • 本番データベースへのアクセスを避ける: LLMに本番データベースへの直接アクセスを許可しないでください。代わりに、サニタイズされた読み取り専用のレプリカまたは専用のデータサブセットを使用する必要があります。
  • LLMアクティビティの監査: LLMによって実行されるクエリを定期的に監査します。これにより、異常や制限されたデータへのアクセス試行を検出できます。監査作業をサポートするために、SQLcl MCPサーバーには以下の組み込み監視機能が用意されています。
    • セッション トラッキング: 使用中の MCP クライアントが VSESSION.MODULE に入力され、LLM の名前が V$SESSION.ACTION に入力されます。
    • アクティビティ ログ: DBTOOLS$MCP_LOGすべてのインタラクションと SQL 実行を記録する という 名前のテーブルを作成します。
    • クエリ識別: SQLcl MCP サーバーのツールを通じて LLM によって生成されたすべてのクエリには、ログで簡単に識別できるように次のコメントが含まれます /* LLM in use ... */。

監視の詳細については、Monitoring the SQLcl MCP Serverを参照してください。

■ 環境の準備

● 必要なソフトウェアのインストール

SQLcl MCP サーバーを使用するには、システムに次のソフトウェアをインストールする必要があります。

・ Oracle SQLcl、バージョン 25.2.0 以上
・ Java ランタイム環境 (JRE) バージョン 17 以上

1) SQLcl と JRE/JDK インストール
次を参考に SQLcl と JRE をインストール
・参考: MacBook へ SQLcl と JRE/JDK インストール

2) SQLcl インストール確認
SQLcl コマンド実行できることを確認

shirok@macbook~ % sql /nolog

  Warning: ORACLE_HOME must be database version 23 or later
          or must be a 23c compatible instant client
          Thick driver unavailable for use.



  SQLcl: 月 8月 04 20:29:56 2025のリリース25.2 Production

  Copyright (c) 1982, 2025, Oracle.  All rights reserved.

SQL>

3) JRE インストール確認
java の Version 確認

shirok@macbook~ % java -version
  java version "22" 2024-03-19
  Java(TM) SE Runtime Environment (build 22+36-2370)
  Java HotSpot(TM) 64-Bit Server VM (build 22+36-2370, mixed mode, sharing)

● データベース接続の構成

SQLcl MCPサーバーは、ディレクトリ内の接続ストアに保存された事前構成済みの接続に依存します。これらの接続は、 ~/.dbtools を使用して管理できます。
MCP 互換の保存済み接続を作成するには、次の例のようなコマンドを実行します。

1) SQLcl 接続

shirok@macbook~ % sql /nolog

Warning: ORACLE_HOME must be database version 23 or later
         or must be a 23c compatible instant client
         Thick driver unavailable for use.



SQLcl: 火 7月 29 19:23:06 2025のリリース25.2 Production

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

SQL>

2) MCP 互換の保存済み接続を作成
次のコマンドを使用して、Oracle Databaseへ接続します。

SQL> conn -save Claude_mcp -savepwd HR/Password@//10.10.1.185:1521/PDB.clientsubnet.vcnexatokyo.oraclevcn.com
  名前: Claude_mcp
  接続文字列: //10.10.1.185:1521/PDB.clientsubnet.vcnexatokyo.oraclevcn.com
  ユーザー: HR
  パスワード: ******
  接続しました.

SQL> exit
  Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
  Version 19.24.0.0.0から切断されました

3) ~/.dbtools ディレクトリ確認
SQLcl MCPサーバーは、~/.dbtoolsディレクトリ内の接続ストアに保存され、dbtools.propertiesファイルへ設定した接続情報が作成されます。

shirok@macbook~ % ls -l ~/.dbtools
total 0
drwx------  3 shirok  staff  96 Jul 29 18:15 connections

shirok@macbook ~ % cat .dbtools/connections/0HRl7egbDJvBqNDvpYtVHA/dbtools.properties
    name=Claude_mcp
    type=ORACLE_DATABASE
    connectionString=//10.10.1.185\:1521/PDB.clientsubnet.vcnexatokyo.oraclevcn.com
    userName=HR

4)MCPサーバ起動確認
SQLcl MCP サーバーが正常に起動すると、起動タイムスタンプを含む確認メッセージが表示され、MCP クライアントからの接続を受け入れる準備ができていることを示します。
ターミナルでこのメッセージを確認することで、サーバーの準備状況を確認できます。

shirok@macbook~ % sql -mcp

Warning: ORACLE_HOME must be database version 23 or later
         or must be a 23c compatible instant client
         Thick driver unavailable for use.

---------- MCP SERVER STARTUP ----------
MCP Server started successfully on Tue Jul 29 18:20:28 JST 2025
Press Ctrl+C to stop the server
----------------------------------------

■ SQLcl MCPサーバーの起動

SQLcl MCP サーバーは、MCP クライアント アプリケーションを通じて自動的に起動および管理されるように設計されています。
Claude DesktopやClineなどのお好みのクライアントを設定して、必要に応じてサーバーを起動します。設定が完了すると、MCPクライアントはサーバーの起動、ライフサイクルの管理、セッション完了時のクリーンな終了を自律的に処理し、自然な対話を通じてOracleデータベース操作を可能にします。
MCPクライアントを設定するには、クライアントでサーバーの場所を指定する必要があります。以下のトピックでは、一般的なMCPクライアントのClaudeデスクトップを構成を設定するための具体的な手順を説明します。

● Claudeデスクトップの設定

Claude DesktopをSQLcl MCP Server用に設定するには、以下の手順に従ってください。設定後、Claude DesktopはSQLcl MCP Serverを自動的に管理し、Claudeとの対話を通じてOracle Databaseの操作を実行できるようになります。
Claude Desktop をインストールします。Claude for Desktop のインストールを参照して作成します。

● システム要件

macOS: macOS 11 (Big Sur) 以上
Windows: Windows 10以降

● インストール手順

Claude のダウンロード・ページにアクセスしてください。
ご使用のオペレーティング システムに適したバージョンを選択してください。
Macユーザーの場合:「macOS」をクリックします
11_ClaudeDesktopインストール01.jpg

1) ファイルを開いてインストールを完了します。
11_ClaudeDesktopインストール02.jpg

11_ClaudeDesktopインストール03.jpg

2) アプリケーション フォルダー (Mac) またはスタート メニュー (Windows) から Claude を起動します。
11_ClaudeDesktopインストール04.jpg

3) 開始するには、アカウントでサインインしてください。
アカウントを新規作成する場合、[メールで続ける]をクリックしてアカウントを作成してログインします。
11_ClaudeDesktopインストール06.jpg

4) Claude インストール完了
11_ClaudeDesktopインストール08.jpg

● Claudeデスクトップの設定

Claude DesktopをSQLcl MCP Server用に設定するには、以下の手順に従ってください。設定後、Claude DesktopはSQLcl MCP Serverを自動的に管理し、Claudeとの対話を通じてOracle Databaseの操作を実行できるようになります。

1) 設定ファイルをダウンロードします。
Claude Desktop を開き、[メニュー]をクリックし、 [ファイル]を選択して、 [設定]をクリックします。
11_ClaudeDesktopインストール10.jpg

設定ウィンドウで、開発 タブをクリックします。
11_ClaudeDesktopインストール11.jpg

[設定の編集]をクリックして、設定ファイル ( claude_desktop_config.json) をコンピューターにダウンロードします。
11_ClaudeDesktopインストール12.jpg

2) 設定ファイルを編集します。
テキストエディタでファイルを開きclaude_desktop_config.json、以下の形式のJSON設定スニペットを追加します。SQLclPATH/bin/sqlインストールの絶対パスに置き換えて、設定ファイルを保存します。

claude_desktop_config.json 設定内容
shirok@macbook~ % cat Library/Application\ Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "sqlcl": {
      "command": "/Users/shirok/oracle/sqlcl/bin/sql",
      "args": ["-mcp"]
    }
  }
}

11_ClaudeDesktopインストール13.jpg

3) 構成を確認
プロンプトボックスで 「検索とツール」をクリックします。

11_ClaudeDesktopインストール14.jpg

SQLcl MCP Serverツールがリストされ、有効になっていることがわかります。必要に応じて、Claude Desktopを再起動して変更を有効にしてください。
11_ClaudeDesktopインストール15.jpg

■ ユースケースとプロンプトの例

では、MCPサーバ起動して自然言語で問い合わせしてみましょう。

● MCPサーバ起動ステータス確認

QLcl MCP サーバーが正常に起動すると、起動タイムスタンプを含む確認メッセージが表示され、MCP クライアントからの接続を受け入れる準備ができていることを示します。
ターミナルでこのメッセージを確認することで、サーバーの準備状況を確認できます。
停止する場合は、Ctrl+C です。

shirok@macbook~ % sql -mcp

Warning: ORACLE_HOME must be database version 23 or later
         or must be a 23c compatible instant client
         Thick driver unavailable for use.

---------- MCP SERVER STARTUP ----------
MCP Server started successfully on Tue Jul 29 18:20:28 JST 2025
Press Ctrl+C to stop the server
------

● Claude 問合せ: LLM自己紹介

問合せ内容
現在しようされているLLMを教えてください

82_CLAUDE問合せ_LLM紹介.png

● Claude 問合せ: MCPサーバーとはなんでしょか?

OracleのMCPサーバーとはどのようなものでどんなことできるのでしょうか?

82_CLAUDE問合せ_WhatsMCP.png

● Claude 問合せ: HRとOEスキーマER図作成

ER図を作成してもらいましょう。Mermaid 記法で作成してくれます。
HRとOEスキーマは外部キーでリレーションされているので連なっていることが確認できます。

問合せ内容
databaseへ接続して、HRスキーマとOEスキーマのER図を作成してください

82_CLAUDE問合せ_HR-OEスキーマER図.png

● Claude 問合せ: SHスキーマ商品売上問合せ

この問い合わせは以前、OpenAI API を使用して自然言語で Select AI した内容です。
出力結果は同じであることが確認できます。

問合せ内容
SHスキーマのデータでは、各商品はどれだけ売れましたかしら?昇順で表示してちょ;

82_CLAUDE問合せ_SHスキーマ売上商品表示.png

● Claude 問合せ: 売上上位10の国別売上の集計とグラフ化

集計結果を表にするだけでなく、ダッシュボードとしてグラフを作成してくれます。

売上上位10の国別売上の集計を教えてください
集計結果をグラフ化してください

82_CLAUDE問合せ_SHスキーマ売上製品グラフ2.png

■ ログによるアクティビティの追跡

SQLcl MCP サーバーは、データベース操作を追跡および監視するための主な 2 つの方法、履歴監査証跡とリアルタイム セッション監視を提供します。

● 監査証跡の確認

サーバーは、すべてのリクエストの実行履歴をDBTOOLS\$MCP_LOGテーブルに自動的に記録します。このテーブルは、サーバーが実行するすべてのデータベース操作の完全な監査証跡を提供します。リクエストの詳細、実行時間、結果が記録されるため、分析やトラブルシューティングに役立ちます。
データベースのパフォーマンスを最適に保つには、 DBTOOLS$MCP_LOG定期的にテーブルを整理する必要があります。レコード数の上限(例:1000件)を設定し、ログの過剰な蓄積を防ぐための自動クリーンアップ手順を作成することを検討してください。

監査証跡を表示するには、次の例のようなクエリを実行します。

監査証跡表示
SQL> SET LONG 40
SQL> select * from DBTOOLS$MCP_LOG order by CREATED_BY;

   ID MCP_CLIENT    MODEL              END_POINT_TYPE    END_POINT_NAME      LOG_MESSAGE                                 CREATED_ON                     CREATED_BY    UPDATED_ON                     UPDATED_BY
_____ _____________ __________________ _________________ ___________________ ___________________________________________ ______________________________ _____________ ______________________________ _____________
    1 Claude        claude-sonnet-4    tool              connect             Connect to SYSTEM                           25-08-13 13:21:28.712564000    SYSTEM        25-08-13 13:21:28.712564000    SYSTEM
    2 Claude        claude-sonnet-4    tool              run-sql             SELECT /* LLM in use is claude-sonnet-4     25-08-13 13:21:33.558252000    SYSTEM        25-08-13 13:21:33.558252000    SYSTEM
    3 Claude        claude-sonnet-4    tool              run-sql             SELECT /* LLM in use is claude-sonnet-4     25-08-13 13:21:40.455659000    SYSTEM        25-08-13 13:21:40.455659000    SYSTEM
    4 Claude        claude-sonnet-4    tool              run-sql             SELECT /* LLM in use is claude-sonnet-4     25-08-13 13:21:46.968147000    SYSTEM        25-08-13 13:21:46.968147000    SYSTEM
    5 Claude        claude-sonnet-4    tool              run-sql             SELECT /* LLM in use is claude-sonnet-4     25-08-13 13:21:53.184501000    SYSTEM        25-08-13 13:21:53.184501000    SYSTEM
    6 Claude        claude-sonnet-4    tool              list-connections    Connect to SYSTEM                           25-08-13 13:34:17.928320000    SYSTEM        25-08-13 13:34:17.928320000    SYSTEM
    7 Claude        claude-sonnet-4    tool              connect             Connect to SYSTEM                           25-08-13 13:34:21.744155000    SYSTEM        25-08-13 13:34:21.744155000    SYSTEM
    8 Claude        claude-sonnet-4    tool              run-sql             SELECT /* LLM in use is claude-sonnet-4     25-08-13 13:34:26.123719000    SYSTEM        25-08-13 13:34:26.123719000    SYSTEM
    9 Claude        claude-sonnet-4    tool              list-connections    Connect to SYSTEM                           25-08-13 13:45:03.890344000    SYSTEM        25-08-13 13:45:03.890344000    SYSTEM
   10 Claude        claude-sonnet-4    tool              list-connections    Connect to SYSTEM                           25-08-13 13:45:07.876006000    SYSTEM        25-08-13 13:45:07.876006000    SYSTEM
   11 Claude        claude-sonnet-4    tool              connect             Connect to SYSTEM                           25-08-13 13:45:11.760044000    SYSTEM        25-08-13 13:45:11.760044000    SYSTEM
   12 Claude        claude-sonnet-4    tool              run-sql             SELECT /* LLM in use is claude-sonnet-4     25-08-13 13:45:17.277965000    SYSTEM        25-08-13 13:45:17.277965000    SYSTEM
   13 Claude        claude-sonnet-4    tool              run-sql             SELECT /* LLM in use is claude-sonnet-4     25-08-13 13:45:22.154956000    SYSTEM        25-08-13 13:45:22.154956000    SYSTEM
   14 Claude        claude-sonnet-4    tool              run-sql             SELECT /* LLM in use is claude-sonnet-4     25-08-13 13:45:26.031985000    SYSTEM        25-08-13 13:45:26.031985000    SYSTEM
   15 Claude        claude-sonnet-4    tool              run-sql             SELECT /* LLM in use is claude-sonnet-4     25-08-13 13:45:31.542981000    SYSTEM        25-08-13 13:45:31.542981000    SYSTEM

● ライブセッションの監視

データベース管理者(DBA)権限がある場合は、アクティブな MCP接続と操作をリアルタイムで監視できます。サーバーは Oracle の V$SESSION ビューと統合されているため、標準的な Oracle監視ツールを使用して、現在のセッション、リソース使用状況、パフォーマンスを追跡できます。MCPクライアント情報を確認するには、 V\$SESSION の MODULE との ACTION値を確認します。

select MODULE, ACTION from V$SESSION;

● クライアントを介した監視

MCP クライアントは、サーバーのアクティビティを監視するための最も直接的な方法を提供します。
たとえば、Claude Desktop のようなアプリケーションでは、ログ ファイルには次のようなサーバーの操作に関する詳細情報が記録されます。

・ 接続イベント
・ ツールの実行
・ クエリ結果
・ エラーメッセージ

問題をトラブルシューティングする必要がある場合は、必ず最初にクライアントのログを確認してください。

■ 参考

・ Claude
 - Claude
 - Claudeの紹介
 - よくある質問
 - Claude詳細

・ Oracle Documents
 - Oracle SQLcl
 - Using Oracle SQLcl
 - 3.5 SQLcl MCPサーバーの起動と管理

・ Blogs
 - Introducing MCP Server for Oracle Database
 - How can Developers and DBAs benefit from MCP Server for Oracle Database?
 - Oracle launches MCP server to power context-aware AI agents for enterprise data
 - Oracle adds MCP support to advance agentic AI development
 - Unleashing the Power of MCP for Oracle GenAI Agents

・ GitHub
 - MCP Server - Oracle DB Context
 - Oracle MCP Server Repository

・ Others
 - Mermaid Diagramming and charting tool

・ Logging Analytics
 - Logging Analytics概要

33
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?