2025年12月26日金曜日

Google Chromeの分割ビューを使用してアプリケーション・ビルダーとアプリを同じタブに表示する

Oracle APEXの開発チームに所属している、イタリア在住のSteve Muenchさんが以下のブログ記事を公開されています。

Builder + App Side-by-Side in Chrome

Google Chromeのバージョン143.0.7499.41から分割ビューという機能が追加されています。タブを2つのビューに分割して、左右それぞれのビューに別のウィンドウを表示できる、という機能です。

APEXでアプリケーションを開発していると、アプリケーション・ビルダーから実行したAPEXアプリケーションのウィンドウがどこかに行ってしまって見つからない、ということがあります。

分割ビューを使って、ひとつのタブにアプリケーション・ビルダーを左のビューに、開発中のアプリケーションを右のビューに(左右はどちらでもよい)表示したら、そのようなことがなくなるかもしれません。そういうことで、Steve Muenchさんは分割ビューの使い方を紹介しています。

本記事でも、日本語のGoogle Chromeで分割ビューを試してみます。1画面の左右にアプリケーション・ビルダーとアプリケーションを表示するため、ある程度広いモニターは必須だろうと思います。

ページ・デザイナをGoogle Chromeで開いた状態から始めます。


分割ビューに表示する予定のアプリケーションを、あらかじめ実行しておきます。


実行したアプリケーションが新しいタブで開きます。


ページ・デザイナに戻り、タブ上でコンテキスト・メニューを開きます。

コンテキスト・メニューから、「新しい分割ビューにタブを追加」を実行します。


分割ビューに表示されたタブより、先ほど実行したAPEXアプリケーションのタブを選択します。


選択したタブが右のビューに表示されます。結果として、ページ・デザイナが左のビュー、アプリケーションが右のビューに表示されます。


分割ビューで表示されていますが、ページ・デザイナとAPEXアプリケーションは連携されてます。

例えば開発者ツールバーのクイック編集をオンにして、コンポーネントを選択します。


クイック編集で選択したコンポーネントが、左のページ・デザイナでフォーカスされます。


ページ・デザイナ上で新しいコンポーネントを追加し、ページを実行すると、すぐに右のアプリケーションに反映されます。


ページ・デザイナを2ペイン・モードにすることで、画面を広く使うことができます。


ページ・デザイナを2ペイン・モードにすると、一般的に中央に表示されるレイアウト・ビューが無くなります。


中央のペインに表示されていたタブは無くなった訳ではなく、左のペインに寄せられています。


このタブはドラッグ&ドロップで位置を変更できます。

左ペインで使用頻度が高いのはレンダリング動的アクションプロセスだと思います。その横にヘルプを移動します。ページ共有コンポーネントレイアウトページ検索を使用することは少ないように思います。


以上のような変更をページ・デザイナに加えることで、狭い画面にもフィットします。


分割ビューを閉じるには、タブにある x 印をクリックするか、右下のタブの  x 印をクリックします。


アプリケーション・ビルダーから別のアプリケーションを実行すると、分割ビューで実行されず、新しいタブが開きます。分割ビューに表示されているアプリケーションは変わりません。


分割ビューに表示するアプリケーションを変更するには、一旦ビューを分離します。

ビューを分離します。


ビューが分離され、タブに戻ります。


ページ・デザイナのタブを選択して表示します。


ページ・デザイナのタブが選択された状態で、分割ビューに表示させるアプリケーションのタブのコンテキスト・メニューを表示します。

コンテキスト・メニューの「現在のタブで新しい分割表示」を実行します。


以上の操作で、分割ビューに表示するアプリケーションを変更できます。


変更したページ・デザイナのレイアウトは、ユーザーごとに記憶されます。デフォルトの状態に戻すには、ユーティリティレイアウトより、レイアウトのリセットを実行します。


以上、Google Chromeの新しい分割ビューを、Oracle APEXで活用する方法の紹介でした。

Oracle APEXのアプリケーション作成の参考になれば幸いです。

Gemini Nanoのマルチモーダルに対応したPrompt APIをAPEXのアプリから呼び出してみる

Google NanoのPrompt APIがマルチモーダルに対応したので、Oracle APEXのアプリケーションから呼び出してみました。MacのGoogle Chromeで動作を確認しています。


Prompt APIおよびSummarization APIを呼び出すAPEXアプリは、以前の記事「Google ChromeのPrompt APIをOracle APEXのアプリから呼び出してみる」および「Google ChromeのSummarization APIを呼び出してみる」で作成しています。

このAPEXアプリケーションに、画像と音声を含むプロンプトを作成しPrompt APIを呼び出す機能を追加します。機能追加したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/sample-gemini-nano.zip

Google Chromeよりchrome://flags/#prompt-api-for-gemini-nano-multimodal-inputを開き、Prompt API for Gemini Nano with Multimodal InputEnabledに変更し、Chromeを再起動します。


機能はすべてホーム・ページに実装しています。

ホーム・ページにページ・アイテムやリージョンを配置していますが、処理についてはすべて静的アプリケーション・ファイルにJavaScriptを記述して実装しています。ページ上のコンポーネントをAPEXアクションに紐づけています。


データと紐づいている(JavaScriptから参照される)ページ上のコンポーネントは、以下のように配置されています。


システム・プロンプトはページ・アイテムP1_SYSTEM_PROMPTに保持されます。ユーザー・プロンプトはP1_USER_PROMPTに保持されます。

音声はAUDIO要素(id="player")にて保持します。画像はページ・アイテムP1_IMAGEで選択します。プレビューのためにIMG要素(id="preview")のsrc属性に、選択したファイルの内容を設定します。Prompt APIはページ・アイテムではなく、IMG要素のsrc属性に設定した画像を参照しています。

ページ・アイテムP1_RESPONSEにPrompt APIからのレスポンスを表示します。このページ・アイテムのタイプリッチ・テキスト・エディタで、Markdown形式のドキュメントを整形して表示します。

APEXアクションへの紐付けは以下になっています。

ボタンStartは音声の録音を開始するAPEXアクション"START_RECORDING"に紐づいています。録音を停止するボタンStopは"STOP_RECORDING"、録音をリセットするボタンResetは"RESET_RECORDING"に紐づいています。

ファイルの選択を変更したときは、APEXアクション"PREVIEW"が呼ばれるようにしています。ボタンについてはカスタム要素data-actionにAPEXアクション名を設定することで紐づけられますが、ファイルの選択はカスタム属性data-actionに対応していません。そのため、これだけはページ・アイテムの変更イベントを拾って、APEXアクションを呼び出しています。

ボタンExplainをクリックしたときに、Prompt APIの呼び出しを行うAPEXアクション"EXPLAIN"が実行されるように、カスタム属性data-acion="EXPLAIN"を設定しています。


これ以外は主にレイアウトを調整するためにリージョンを使用しています。

静的アプリケーション・ファイルとしてgemini-nano-multimodal.jsを作成しています。Claude Sonnet 4.5にレビューをお願いしたら、1/3くらい書き直されました。

このファイルをページ・プロパティJavaScriptファイルURLに設定しています。

#APP_FILES#gemini-nano-multimodal#MIN#.js


作成したアプリケーションの紹介は以上です。

アプリケーションを実行して、Prompt APIを呼び出してみました。

竹取物語の冒頭を録音して、ユーザー・プロンプトで文字起こしを依頼してみました。


画像を添付して、解説をお願いしました。


添付した画像の解説を、音声でお願いしました。


画像を添付し、文字の取り出しをお願いしてみました。


すごく精度が高いということはありませんが、軽くて速くてお金もかからないのは利点です。1年前と比べると、著しく進歩していることは確かです。

今回の記事は以上です。

Oracle APEXのアプリケーション作成の参考になれば幸いです。

2025年12月23日火曜日

Role based JWT profileで保護したORDS REST APIにアクセスする - Microsoft Entra ID編

更新:2026年2月27日

ORDS RESTサービスとして作成したリモートMCPサーバーをMicrosoft Entra IDで認証します。

以下の記事にそって構築した環境を使用します。

DNSでホスト名の解決ができ、インターネットからアクセス可能なOracle APEXとORDSの実行環境を作成します。Autonomous AI Databaseを使用する場合は、nginxをリバース・プロキシとして実行する環境だけが必要です。
カスタムのリモートMCPサーバーをORDSのRESTサービスとして実装します。上記で作成したAPEXの環境に、APEXのワークスペースを作成します。
上記で作成したカスタムのリモートMCPサーバーをOAuth2で認証するために、以下の手順にそってnginxのリバース・プロキシに設定を追加します。
動作確認にMCP Inspector、Claude Desktop、OpenAI ChatGPTを使用します。

Microsoft Entra IDでのアプリ登録手順は、おおむね以下の記事と同じです。

SQLclのMCPサーバーのデータベース接続をMicrosoft Entra IDのOAuth2で認証する

SQLclのMCPサーバーのデータベース接続にTOKEN_AUTH=AZURE_INTERACTIVEの設定を使用する
https://apexugj.blogspot.com/2025/08/sqlcl-mcp-with-azure-interactive.html


Microsoft Entra IDの設定



接続先となるORDS RESTサービスに対応するアプリケーションを作成します。

Microsoft Azureのコンソールより、Microsoft Entra IDを開きます。

規定のディレクトリよりアプリの登録を開き、新規作成を実行します。


名前ORDS MCPとします。リダイレクトURI省略します。リダイレクトURIはクライアントに対応するアプリケーションに作成します。

アプリケーションを登録します。


管理APIの公開を開き、Scopeの追加を実施します。

リモートMCPサーバーをMicrosoft Entra IDで認証する場合、リソース・サーバーは401 Unauthorizedのレスポンスを返すときにWWW-Authenticateヘッダーで、ここで作成するスコープを返す必要があります。


アプリケーションIDのURIとして、デフォルト値を設定します。

保存してから続けるをクリックします。


作成するスコープのスコープ名mcp:connectとします。同意できるのはだれですか?として管理者とユーザーを選択します。管理者の同意の表示名管理者の同意の説明ともに「Connect to My MCP Server」と記述します。

状態有効を選択し、スコープの追加をクリックします。


管理アプリロールを開き、アプリロールの作成をクリックします。

ロールによってORDS RESTモジュールを保護するので、ここで作成するアプリロールと同名のロールを、ORDSに作成します。


表示名ORDS REST APIの呼び出し許可されたメンバーの種類両方(ユーザー/グループ+アプリケーション)を選択します。

ORDSUsers(これがORDSのロール名になります)、説明は「ORDS REST APIの呼び出し」と記述します。

このアプリロールを有効にしますか?チェックし、適用をクリックします。


アプリケーションORDS MCPをEntra IDのユーザーに割り当てます。割り当てるユーザーに、作成したアプリロールORDSUsersを割り当てます。

ユーザーの割り当ては、エンタープライズアプリケーションに移動して実施します。

概要から、ローカルディレクトリのマネージドアプリケーションのリンクを開きます。


管理ユーザーとグループを開き、ユーザーまたはグループの追加Add user/group)をクリックします。


ユーザー選択されていませんをクリックし、ユーザーを割り当てます。


先ほど作成したアプリロールORDSUsersを割り当てるユーザーを選択し、選択をクリックします。


割り当てるロール「ORDS REST APIの呼び出し」(値はORDSUsers)は、すでに選択されています。

割り当てをクリックします。


以上でユーザーにアプリロールORDSUsersが割り当てられました。

規定のディレクトリに戻り、アプリの登録を開きます。すべてのアプリケーションから、先ほど作成したORDS MCPを開きます。


APIのアクセス許可を開き、アクセス許可の追加をクリックします。


所属する組織で使用しているAPIを開き、ORDS MCPを探して選択します。


アプリケーションの許可を選択します。

アクセス許可としてアプリロールORDSUsersが表示されます。このORDSUsersチェックして、アクセス許可の追加を実行します。


アクセス許可にORDSUsersが追加されました。

アクセス許可の追加を再度クリックします。


先ほどと同様に、所属する組織で使用しているAPIを開き、ORDS MCPを探して選択します。

今度は認可されたアクセス許可を選択し、アクセス許可として表示されたmcp:connectチェックして、アクセス許可の追加を実行します。


以上でアクセス許可の設定ができました。

Entra IDのアクセストークンをv2に変更します。

マニュフェストを開きます。


Microsoft Graphアプリマニュフェストの"api"の下にある、requestedAccessTokenVersionをnullからへ変更します。

変更後、保存します。


Entra ID v2アクセストークンでは、ユーザーの識別子となるclaimとしてupnを使用します。

トークン構成を開き、オプションの要求の追加をクリックします。


トークンの種類アクセスを選択し、要求に含まれるupnチェックします。これはOAuth2のアクセストークンに、claimとしてupnを追加するという作業です。

以上で追加をクリックします。


Microsoft Graph profileのアクセス許可を有効にしますチェックして、追加します。


必ずしも必要ではないようですが、念の為同様の操作を行い、IDトークンについてもclaimとしてupn追加します。


以上でIDトークンとアクセストークンの両方に、属性としてupnが含まれるようになりました。

属性upnに設定される値を調整します。要求upnの3点メニューをクリックし、編集を実行します。


UPNの編集画面で、外部認証済みはいハッシュ記号の置換はいに設定します。

以上で保存します。


同じ作業をIDトークンとアクセストークンの両方で実施します。


以上で一旦、サーバーに対応したアプリケーションの設定は完了です。


次にクライアントに対応したアプリケーションを作成します。

規定のディレクトリ管理アプリの登録を開き、新規登録を実行します。


作成するアプリケーションの名前ORDS MCP Clientとします。リダイレクトURIとして、MCP Inspector、ブラウザ版ChatGPTおよびClaude DesktopのURIの3つを設定する必要があるため、ここでの設定は省略します。

以上で登録します。


アプリケーションORDS MCP Clientが作成されます。

後ほどサーバー側のアプリケーションORDS MCPへの紐付けに使うため、アプリケーション(クライアント)IDコピーしておきます。その後に、リダイレクトURIを追加するのリンクを開きます。


リダイレクトURIを構成します。

リダイレクトURIの追加
をクリックし、最初にMCP InspectorのリダイレクトURIを追加します。


MCP InspectorのリダイレクトURIは、MCP InspectorのTransport TypeとしてStreamable HTTPを選択したときに、Authenticationの中に表示されるOAuth 2.0 FlowRedirect URLの値です。macOSで実行したMCP Inspectorでは以下のURLでした。

http://localhost:6274/oauth/callback


MCP Inspectorでは、プラットフォームにシングルページアプリケーションを選択します。


MCP InspectorリダイレクトURIを設定し、構成を実行します。


続いて、ブラウザ版ChatGPTとClaude DesktopのリダイレクトURIを構成します。

ChatGPTとClaude Desktopでは、プラットフォームにWebを選択します。MCP InspectorはSPAなので、ブラウザ版ChatGPTやClaude DesktopもSPAとして扱うと勝手に考えていましたが、ChatGPTに相談したところ、リダイレクトURIがhttps://chatgpt.comやhttps://claude.aiならWebです、とChatGPTに指摘されました。

OktaやAuth0、Oracle IAMはSPAとして設定できるので、Entra IDではWebである理由は不明です。Entra IDでの認証時にはクライアントIDに加えてクライアント・シークレットの指定も必要なので、DCRとPKCEが、ChatGPTやClaude Desktopが期待しているようには動作しないのかもしれません。


リダイレクトURIにChatGPTのリダイレクトURIを設定し、構成を実行します。

https://chatgpt.com/connector_platform_oauth_redirect


2026年3月4日追記 - OpenAI ChatGPTのコールバックURLは仕様が変更された模様で、登録するアプリごとに異なるURLが発行されるようです。リダイレクトURIにワイルドカードが使用できない場合、表示されたコールバックURLをリダイレクトURLとして設定する必要があります。


同様にClaude DesktopのリダイレクトURI構成します。

https://claude.ai/api/mcp/auth_callback


設定を開き、パブリッククライアントフローを許可します。

パブリッククライアントフローを許可するとPKCEが実行されるため、クライアント・シークレットの指定は不要になるはずですが、Claude DesktopとChatGPTはそうなっていません。MCP Inspectorに限り、クライアント・シークレットの指定が不要でした。


パブリッククライアントフローを許可する有効にし、保存します。


シークレットが必要なクライアント向けに、証明書とシークレットを開き、新しいクライアントシークレットを作成します。


説明secretと記述し、有効期限はデフォルトの推奨: 180 日(6ヶ月)を選択し、クライアントシークレットを追加します。


追加されたシークレットの値(シークレットIDではない)をコピーし、保存しておきます。ChatGPTのアプリやClaude Desktopのカスタムコネクタを作成する際に使用します。


アプリの登録に戻り、アプリケーションORDS MCPを開きます。


APIの公開を開き、クライアントアプリケーションの追加を実行します。


クライアントIDにクライアントに対応するアプリケーションORDS MCP Clientアプリケーション(クライアント)IDを設定します。承認済みのスコープはサーバーであるアプリケーションORDS MCPアプリケーション(クライアント)IDを含むので、スコープに含まれるIDとは異なるIDになります。

承認済みのスコープをチェックし、アプリケーションの追加を実行します。


承認済みのクライアント・アプリケーションとしてORDS MCP Clientが追加されます。


以上でEntra IDの設定は完了です。


ORDSおよびnginxの設定



以下のスクリプトを実行し、Oracle REST Data Servicesに権限oracle.example.mcpを作成(すでに存在する場合は再定義)します。ロールとしてORDSUsersを作成し、RESTモジュールsampleserverを保護します。
declare
    l_roles    owa.vc_arr;
    l_modules  owa.vc_arr;
    l_patterns owa.vc_arr;
begin
    ords.create_role(
        p_role_name => 'ORDSUsers'
    );
    l_modules(1) := 'sampleserver';
    l_roles(1)   := 'ORDSUsers';
    ords.define_privilege(
        p_privilege_name => 'oracle.example.mcp',
        p_label          => 'Priviledge for MCP',
        p_roles          => l_roles,
        p_modules        => l_modules,
        p_patterns       => l_patterns    -- no assignment
    );
end;
/

issuerがわからないため、ORDS_SECURITY.CREATE_JWT_PROFILEの実行より先に、/.well-known/以下を設定します。

nginxを実行しているインスタンスに接続します。

rootユーザーで作業します。

sudo -s

[opc@ordsmcp ~]$ sudo -s

[root@ordsmcp opc]# 


nginxのドキュメント・ルートに移動します。

cd /usr/share/nginx/html

[root@ordsmcp opc]# cd /usr/share/nginx/html

[root@ordsmcp html]# 


ディレクトリ.well-knownを作成します。

mkdir .well-known

[root@ordsmcp html]# mkdir .well-known

[root@ordsmcp html]# 


以下を記述したファイルを、.well-known/oauth-protected-resourceとして作成します。
{
  "resource": "アプリケーションORDS MCPのアプリケーション(クライアント)ID",
  "authorization_servers": [ 
    "https://login.microsoftonline.com/テナントID/v2.0"
  ],
  "scopes_supported": ["api://アプリケーションORDS MCPのアプリケーション(クライアント)ID/mcp:connect"]
}
resourceの値は、サーバーに対応したアプリケーションORDS MCP概要にあるアプリケーション(クライアント)IDです。


authorization_serversはJSON配列で、要素となる値は概要エンドポイントにあるOpenID Connectメタデータドキュメントの末尾の/.well-known/openid-configurationを除いた部分です。


scopes_supportedはJSON配列で、要素となる値はAPIの公開にあるスコープです。


authorization_serversが認識されない場合を想定し、認可サーバーのメタデータをリソース・サーバーに配置します。

OpenID Connectメタデータドキュメントをダウンロードし、.well-known以下にoauth-authorization-serverとして配置します。

curl -L -o .well-known/oauth-authorization-server https://login.microsoftonline.com/********-****-****-****-************/v2.0/.well-known/openid-configuration

[root@ordsmcp html]# curl -L -o .well-known/oauth-authorization-server https://login.microsoftonline.com/3940****-****-****-****-********2758/v2.0/.well-known/openid-configuration

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  1965  100  1965    0     0   3470      0 --:--:-- --:--:-- --:--:--  3471

[root@ordsmcp html]#


/etc/nginx/nginx.conf
を開き、ヘッダー情報がログに出力されるextended.logが有効になるように、access_logのコメントを変更します。

    #access_log  /var/log/nginx/access.log  main;

    access_log   /var/log/nginx/extended.log extended;

    #access_log   /var/log/nginx/body.log body;


/etc/nginx/default.d/40-www-auth.confを開き、WWW-Authenticateヘッダーがスコープを返すように変更します。scope=で指定する値は、/.well-known/oauth-protected-resourceのscopes_supportedに含まれている値です。

location @ords_401 {

    internal;

    more_clear_headers 'WWW-Authenticate';

    # The same IdP is used for all MCP servers.

    #add_header WWW-Authenticate 'Bearer resource_metadata="$scheme://$host/.well-known/oauth-protected-resource"' always;

    # scope for Microsoft Entra ID

    add_header WWW-Authenticate 'Bearer resource_metadata="$scheme://$host/.well-known/oauth-protected-resource",scope="api://e375****-****-****-****-********6872/mcp:connect"' always;

    # “A dedicated IdP is assigned to each MCP server.

    #add_header WWW-Authenticate 'Bearer resource_metadata="$scheme://$host/.well-known/oauth-protected-resource$uri"' always;


以上の変更を実施し、nginxをリロードします。

nginx -s reload

[root@ordsmcp html]# nginx -s reload

[root@ordsmcp html]# 


extended.logの出力を監視します。

tail -f /var/log/nginx/extended.log

[root@ordsmcp html]# tail -f /var/log/nginx/extended.log



MCP Inspectorを起動し、リモートMCPサーバーに接続します。

npx @modelcontextprotocol/inspector


Entra IDへのサインインが要求されます。アプリロールORDSUsersを割り当てたユーザーでサインインします。


Entra IDへのサインインが成功しても、ORDSのJWTプロファイルが設定されていない、つまりRESTサービスの呼び出しが許可されないため、MCPサーバーへの接続は失敗します。

サインインは成功しているため、extended.logにアクセストークンが出力されます。

接続を諦めるまでサインインが繰り返されるので、アクセストークンが確認できたらMCP InspectorをCTRL+Cで停止するとよいでしょう。


アクセストークンをコピーし、https://jwt.ioなどを使って内容をデコードします。


アクセストークンに含まれる属性audおよび属性issの値をコピーします。また、rolesクレームが存在し、JSON配列の要素としてアプリロールORDSUsersが含まれていることを確認します。

属性audはORDS_SECURITY.CREATE_JWT_PROFILEの引数p_audienceの値になります。属性issは引数p_issuerの値になります。

ブラウザでOpenID ConnectメタデータのURLを開き、属性jwks_uriの値をコピーします。この値は、ORDS_SECURITY.CREATE_JWT_PROFILEの引数p_jwk_urlの値になります。


これらの値を引数に与えて、ORDS_SECURITY.CREATE_JWT_PROFILEを呼び出し、JWTプロファイルを作成します。引数p_role_claim_nameには/rolesを与えます。
begin
    ords_security.delete_jwt_profile;
    ords_security.create_jwt_profile(
        p_issuer => '属性issの値'
        ,p_audience => '属性audの値'
        ,p_jwk_url => '属性jwks_uriの値'
        ,p_role_claim_name => '/roles'
    );
end;
/

ビューUSER_ORDS_JWT_PROFILEを検索し、設定内容を確認します。

select issuer,audience,jwk_url,role_claim_name from user_ords_jwt_profile


以上で、ORDS RESTサービスの保護も完了です。

再度MCP Inspectorから接続します。

今度はConnectedになります。



クライアントからの接続確認



ブラウザ版ChatGPTより接続してみます。

設定のアプリを開き、高度な設定のアプリを作成するを実行します。(ChatGPTが開発者モードである必要があります。)


新しいアプリの名前My Oracle Appとします。MCPサーバーのURLとして、ORDS REST APIのエンドポイントURLを設定します。

認証OAuthを選択し、クライアントに対応したアプリケーションORDS MCP Clientアプリケーション(クライアント)IDクライアント・シークレットを指定します。

理解した上で、続行しますチェックし、作成するをクリックします。


以下のように接続に成功し、リモートMCPサーバーのツールがアクションとして表示されます。
 


ChatGPTで新しいチャットを開始し、作成したアプリMy Oracle Appのツールget_schemaを呼び出します。

My Oracle Appのget_schemaを呼び出して。


リモートMCPサーバーのツール呼び出しもできました。

Claude Desktopでも、ChatGPTと同じ設定で、リモートMCPサーバーをカスタムコネクタを追加します。

設定コネクタを開きます。カスタムコネクタを追加します。


カスタムコネクタの名前My Oracle Appとします。リモートMCPサーバーURLとして、ORDS REST APIのエンドポイントURLを設定します。

詳細設定OAuth Client IDORDS MCP Clientアプリケーション(クライアント)IDOAuthクライアントシークレットクライアント・シークレットを指定します。

以上を設定し、追加をクリックします。


新しいClaude Desktopではコネクターがカスタマイズに移動したとのことです。

カスタマイズを開きます。


コネクタMy Oracle Appを選択し、連携/連携させるを実行します。


ブラウザが起動し、Entra IDでのサインインが要求されます。


Entra IDでのサインインが完了すると、コネクタとして利用できるツールが確認できます。


ChatGPTと同様に、チャットから呼び出してみます。

My Oracle Appのget_schemaを呼び出して。


Claude Desktopでも、ORDS REST APIをEntra IDで認証してアクセスできました。

今回の記事は以上です。