2026年3月6日金曜日

MCPを話すOracle Databaseを作成する - ローカル・データベース編

更新:2026年4月1日 -  リポジトリmcp-appを使用するように更新

以下の記事で紹介したリモートMCPサーバーのフレームワークを使って、MCP Appsを実装します。
作業環境は、UC Local APEX Devで作成した手元のOracle Database FreeおよびORDSのコンテナを使用します。利用方法については、こちらの記事「United CodesのUC Local APEX Devを使ってOracle APEXのローカル開発環境を作成する」で紹介しています。

ローカル環境へは以下のURLでアクセスします。


以下のコマンドを実行してAPEXのワークスペースを作成します。以下の例ではワークスペースをapexdevとして作成しています。

local-26ai.sh create-user apexdev

APEXのワークスペースとしてapexdev、管理者ユーザーapexdev、それとデフォルト・パーシング・スキーマとなるスキーマAPEXDEVが作成されます。Autonomous AI Databaseでワークスペースを作成した場合は、スキーマWKSP_APEXDEVが作成されます。UC Local APEX Devではスキーマ名に接頭辞WKSP_は付きません。

管理者ユーザーのデフォルトのパスワードはWelcome_1です。

mcp-app % local-26ai.sh create-user apexdev

loaded .env file


SQLcl: 金 3月 06 16:36:42 2026のリリース25.4 Production


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


接続先:

Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0



USER    

_______ 

SYS     


[中略]


Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0から切断されました

>>>>

saved sqlcl connection

connect with 'sql -name local-26ai-apexdev'

mcp-app % 


作成されたスキーマにUC_AIをLogger付きで導入します。Loggerを個別にスキーマにインストールするためには、CREATE ANY CONTEXT権限が必要です。

FREEPDB1にSYSで接続し、スキーマAPEXDEVに権限を与えます。(構成先がAutonomous AI Databaseの場合はパッケージCS_SESSIONの実行権限も必要です)

sql -name local-26ai-sys
grant create any context to apexdev;
grant select on dba_xs_sessions to apexdev;
grant select on v_$session to apexdev;
exit;

% sql -name local-26ai-sys


SQLcl: 水 4月 01 16:48:14 2026のリリース25.4 Production


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


接続先:

Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0


SQL> grant create any context to apexdev;


Grantが正常に実行されました。


SQL> grant select on dba_xs_sessions to apexdev;


Grantが正常に実行されました。


SQL> grant select on v_$session to apexdev;


Grantが正常に実行されました。


SQL> exit

Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0から切断されました

% 


UC_AIのリポジトリをクローンします。

git clone https://github.com/United-Codes/uc_ai.git

% git clone https://github.com/United-Codes/uc_ai.git


Cloning into 'uc_ai'...

remote: Enumerating objects: 2723, done.

remote: Counting objects: 100% (441/441), done.

remote: Compressing objects: 100% (304/304), done.

remote: Total 2723 (delta 187), reused 222 (delta 123), pack-reused 2282 (from 1)

Receiving objects: 100% (2723/2723), 6.28 MiB | 7.23 MiB/s, done.

Resolving deltas: 100% (1780/1780), done.

% 


クローンしたリポジトリに移動し、install_with_logger.sqlを実行します。

cd uc_ai
sql -name local-26ai-apexdev @install_with_logger
exit

mcp-app % cd uc_ai

uc_ai % sql -name local-26ai-apexdev @install_with_logger


SQLcl: 金 3月 06 16:48:33 2026のリリース25.4 Production


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


接続先:

Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0


Installing UC AI with logger

_____________________________________________________________________________

User has all required privileges, installation will continue.

_____________________________________________________________________________




[中略]


Package Body UC_AIがコンパイルされました


Running post-installation scripts...

Logger package detected. Setting USE_LOGGER flag to TRUE.

Successfully compiled uc_ai_logger package with USE_LOGGER flag.



PL/SQLプロシージャが正常に完了しました。


===================================================

UC AI installation complete!

Refer to the documentation for usage instructions: https://www.united-codes.com/products/uc-ai/docs/

===================================================

Installation Complete!

SQL> exit

Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0から切断されました

uc_ai % 


ひとつ上のディレクトリへ戻り、リモートMCPサーバーを実装したリポジトリをクローンします。

cd ..
git clone https://github.com/ujnak/mcp-app.git

% git clone https://github.com/ujnak/mcp-app.git


Cloning into 'mcp-app'...

remote: Enumerating objects: 505, done.

remote: Counting objects: 100% (100/100), done.

remote: Compressing objects: 100% (69/69), done.

remote: Total 505 (delta 58), reused 61 (delta 31), pack-reused 405 (from 1)

Receiving objects: 100% (505/505), 209.97 KiB | 4.67 MiB/s, done.

Resolving deltas: 100% (293/293), done.

% 


リモートMCPサーバーを実装します。

cd mcp-app
sql -name local-26ai-apexdev @install-all-onp

mcp-app % sql -name local-26ai-apexdev @install-all-onp


SQLcl: 水 4月 01 16:53:21 2026のリリース25.4 Production


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


接続先:

Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0



Sessionが変更されました。



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



Table OJ_MCP_UI_RESOURCESは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Table OJ_MCP_UI_CSP_DOMAINSは作成されました。



Commentは作成されました。



Commentは作成されました。



Index IX_OJ_MCP_UI_CSP_RESOURCE_IDは作成されました。



Table OJ_MCP_UI_PERMISSIONSは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Table OJ_MCP_TOOLS_EXTRASは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Table OJ_MCP_TOOLS_EXTRASが変更されました。



Table OJ_MCP_TOOLS_EXTRASが変更されました。



View OJ_MCP_UC_AI_TOOLSは作成されました。



Package OJ_MCP_RAS_CTXがコンパイルされました



Package Body OJ_MCP_RAS_CTXがコンパイルされました



Package OJ_MCP_JSONRPC_UTILSがコンパイルされました



Package Body OJ_MCP_JSONRPC_UTILSがコンパイルされました



Package OJ_MCP_APP_UTILSがコンパイルされました



Package Body OJ_MCP_APP_UTILSがコンパイルされました



Package OJ_MCP_APP_METHODSがコンパイルされました



Package Body OJ_MCP_APP_METHODSがコンパイルされました



Package OJ_MCP_APP_SERVERがコンパイルされました



Package Body OJ_MCP_APP_SERVERがコンパイルされました



Procedure OJ_MCP_POST_HANDLERがコンパイルされました



Procedure OJ_MCP_DELETE_HANDLERがコンパイルされました



Procedure OJ_MCP_RAS_POST_HANDLERがコンパイルされました



Procedure OJ_MCP_RAS_DELETE_HANDLERがコンパイルされました



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



Function GET_SCHEMAがコンパイルされました



Function RUN_SQLがコンパイルされました



Function GET_CURRENT_USERがコンパイルされました



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。



Table AUTH_USERSは作成されました。



Package OJ_MCP_RAS_CONFIGがコンパイルされました



Package Body OJ_MCP_RAS_CONFIGがコンパイルされました


Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0から切断されました

mcp-app % 


APEXのワークスペースにサインインし、MCPサーバーがセッション管理に使用するAPEXアプリケーションを作成します。


アプリケーション・ビルダーを開きます。


アプリケーションの インポートを開始します。


ファイルとしてクローンしたリポジトリmcp-app以下のapp/mcp-app-helper.sqlを選択し、へ進みます。


アプリケーションのインストールを実行します。


サンプルのリモートMCPサーバーsampleserverに紐づくように、APEXアプリケーションの別名をsampleserverに変更します。

アプリケーションの編集を実行します。


アプリケーション定義を開き、アプリケーションの別名sampleserverに変更します。


MCP Inspectorを実行します。

npx @modelcontextprotocol/inspector

Transport TypeStreamable HTTPURLに以下を指定します。

http://localhost:8181/ords/apexdev/sampleserver/mcp

Connect を実行します。


Appsタブを開きます。


MCP Appsとしてリソースが定義されているツールget_current_userがリストされます。

get_current_userをクリックすると、ユーザー・インターフェースが表示されます。


ユーザー・インターフェースにあるボタンGet Current Userをクリックします。


ツールget_current_userが呼び出され、ユーザー名として(ユーザー認証を実装していないため)スキーマ名APEXDEVが表示されます。


今回の記事は以上になります。