先日の記事「
ORDS 26.2のMCPサーバーを構成する - Auth0編」では、MCPサーバーの認証/認可にAuth0を使用しました。今回の記事では、IdMとしてOracle IAMを使用します。
ORDS MCPサーバーから接続するデータベースおよびORDSのコンテナの準備は、記事「
ORDS 26.2のMCPサーバーを構成する - Auth0編」と同じです。ORDS MCPサーバーが動作するコンテナを実行しAuth0の構成を始める直前まで、Auth0の記事にそって作業を進めます。
カスタム・クレームroles2の追加
今回の作業では、ロールによってORDS MCPサーバーのアクセスを制御します。そのため、Oracle IAMにカスタム・クレームとしてroles2を作成します。
本作業ではオーディエンスとしてhttps://localhost:8585/mcp、スコープとしてurn:oracle:dbtools:ords:mcpserver:allが設定されます。これを固定の条件として、ユーザーが所属しているグループの配列を値として持つ、カスタム・クレームroles2を作成するスクリプトを書きました。
Oracle IAMに、このスクリプトの呼び出しに使用する統合アプリケーションを作成し、そのアプリケーションのドメインURL、クライアントIDおよびクライアント・シークレットをそれぞれ、DOMAIN_URL、USERNAMEおよびPASSWORDに設定します。
以下より、統合アプリケーションとしてManage Custom Claimを作成します。作成するドメインはルート・コンパートメントにあるDefaultを想定しています。
Oracle Cloudのコンソールにサインインします。
アイデンティティとセキュリティのドメインを開き、統合アプリケーションの作成先であるドメインDefaultを開きます。
このページに記載されているドメインURLを、スクリプト中のDOMAIN_URLに設定します。そのため、値をコピーして保存しておきます。
統合アプリケーションのタブを開きます。
アプリケーションの追加をクリックします。
機密アプリケーションを選択し、ワークフローの起動をクリックします。
名前はManage Custom Claimとします。名前だけを設定し、送信をクリックします。
アプリケーションが作成されたら
OAuth構成タブを開き、
OAuth構成の編集をクリックします。
クライアント構成の「このアプリケーションをクライアントとして今すぐ構成します」を選択します。選択すると、クライアントとしての設定項目が表示されます。
認可の許可される権限付与タイプに含まれるクライアント資格証明をチェックします。OAuth2.0のClient Credentials Flowによるアクセス・トークンの発行ができます。
一番下までスクロールします。
アプリケーション・ロールの追加をオンにし、アプリケーション・ロールの追加をクリックします。
アプリケーション・ロールIdentity Domain Administratorをチェックします。
このアプリケーション・ロールを割り当てることにより、統合アプリケーションManage Custom Claimによってカスタム・クレームを追加できるようになります。
追加をクリックします。
以上でOAuth構成の編集は完了です。送信をクリックします。
OAuth構成のタブに戻ります。
一般情報のクライアントIDはスクリプト中のUSERNAMEに設定します。シークレットの表示にある値はPASSWORDに設定します。
それぞれの値をコピーして保存します。
右上のアクション・メニューを開き、アクティブ化を実行します。
前掲のスクリプトmanage-custom-claim.shをダウンロードし、DOMAIN_URL、USERNAME、PASSWORDの値を更新します。
更新したスクリプトを実行し、カスタム・クレームroles2を作成します。
sh manage-custom-claim.sh
ords-mcp2 % sh manage-custom-claim.sh
[省略]
"roles2","https://idcs-***************************.identity.oraclecloud.com:443/admin/v1/CustomClaims/c17f3193372444a2a9d79ad42e530fce"
ords-mcp2 %
作成されたカスタム・クレームを一覧します。一覧にroles2が含まれていることを確認します。
sh manage-custom-claim.sh list
ords-mcp2 % sh manage-custom-claim.sh list
"roles2","https://idcs-***************************.identity.oraclecloud.com:443/admin/v1/CustomClaims/c17f3193372444a2a9d79ad42e530fce"
ords-mcp2 %
カスタム・クレームのdisplayNameとmeta.locationが一覧されます。mata.locationに対してHTTPのDELETEを呼び出すことにより、作成したカスタム・クレームを削除できます。
Oracle IAMのアプリケーション構成
Defaultドメインのユーザー管理を開き、ORDSでロールとして扱うグループとしてORDS_MCP_HRを作成します。
グループの作成をクリックします。
作成するグループの名前はORDS_MCP_HR、説明は「Role for HR Schema」と記述します。
グループに含めるユーザーをチェックし、作成を実行します。
グループ
ORDS_MCP_HRが作成されます。
Defaultドメインの
統合アプリケーションを開き、
アプリケーションの追加をクリックします。
機密アプリケーションを選択し、ワークフローの起動をクリックします。
追加する機密アプリケーションの名前はORDS MCP2とします。説明に「ORDS MCP Server」と記述します。
画面下部にある、認証と認可の権限付与を認可として実施をオンにします。このアプリケーションに割り当てられたユーザーおよびグループのみがサインインできるようになります。
以上で送信をクリックします。
アプリケーションORDS MCP2が作成されます。
OAuth構成タブを開き、OAuth構成の編集をクリックします。
リソース・サーバー構成の「このアプリケーションをリソース・サーバーとして今すぐ構成します」を選択します。選択すると、リソース・サーバーとしての設定項目が表示されます。
トークン・リフレッシュの許可をオンにします。
プライマリ・オーディエンスとしてORDS MCPサーバーのエンドポイントURLであるhttp://localhost:8585/mcpを設定します。この値は、ORDSのグローバル・プロパティmcp.security.jwt.profile.audienceに設定します。
mcp.security.jwt.profile.audience = http://localhost:8585/mcp
スコープの追加をオンにし、スコープの追加をクリックします。
スコープとして、ORDS MCPサーバーのデフォルトのスコープurn:oracle:dbtools:ords:mcpserver:allを設定します。
表示名にAccess to ORDS MCP Server、説明にAccess to ORDS MCP Serverと記述し、ユーザー承認が必要をオンにします。
以上でスコープを追加します。
スコープが追加されました。以上でリソース・サーバーは構成できました。
追加したスコープをクライアント構成で使用できるようにするため、ここで一旦送信します。
再度、アプリケーション
ORDS MCP2の
OAuth構成の編集を開きます。
クライアント構成の「
このアプリケーションをクライアントとして今すぐ構成します」を選択します。選択すると、クライアントとしての設定項目が表示されます。
認可の許可される権限付与タイプに含まれるリフレッシュ・トークンと認可コードをチェックします。
接続確認にはMCP Inspectorを使用する予定です。MCP InspectorのリダイレクトURLはhttp://で始まるため、HTTPS以外のURLを許可をオンにします。
その上で、リダイレクトURLとして以下を設定します。
http://localhost:6274/oauth/callback
http://localhost:6274/oauth/callback/debug
下の方にスクロールします。
リソースの追加をオンにし、スコープの追加をクリックします。
ORDS MCP2を開き、
範囲の選択(スコープの選択のこと)より
http://localhost:8585/mcpurn:oracle:dbtools:ords:mcpserver:all(オーディエンスであるhttp://localhost:8585/mcpとスコープurn:oracle:dbtools:ords:mcpserver:allを繋げた値)を
チェックします。
選択したスコープを追加します。
以上で、クライアント構成は構成できました。送信します。
アプリケーションORDS MCP2をアクティブにします。
アクション・メニューのアクティブ化を実行します。
アプリケーションORDS MCP2が利用可能になりました。
このアプリケーションにグループを割り当てます。グループ・タブを開きます。
グループの割当てをクリックします。
グループORDS_MCP_HRをチェックし、アプリケーションに割当てます。
アプリケーションORDS MCP2にグループORDS_MCP_HRが割り当てられました。
アプリケーションORDS MCP2の作成は、以上で完了です。
ORDS MCPサーバーを構成する際に必要な値を確認します。
最初にグローバル・プロパティ
mcp.security.jwt.profile.authorization.server.urlの値を確認します。
DefaultドメインのドメインURLが、グローバル・プロパティmcp.security.jwt.profile.authorization.server.urlの値になります。
値をコピーして保存しておきます。
mcp.security.jwt.profile.authorization.server.url = https://idcs-xxxxxxxxxxxxxxxxxxxxxxxxx.identity.oraclecloud.com:443
グローバル・プロパティmcp.security.jwt.profile.jwk.urlの値を確認します。
ドメインURLに/.well-known/oauth-authorization-serverを繋げて、認可サーバーのメタデータを取得します。
https://idcs-xxxxxxxxxxxxxxxxxxxxxxxxx.identity.oraclecloud.com:443/.well-known/oauth-authorization-server
取得したメタデータに含まれる属性
jwks_uriの値が、グローバル・プロパティ
mcp.security.jwt.profile.jwk.urlの値になります。通常はドメインURLに/admin/v1/SigningCert/jwkが追加されたURLになります。
mcp.security.jwt.profile.jwk.url = https://idcs-xxxxxxxxxxxxxxxxxxxxxxxxx.identity.oraclecloud.com:443/admin/v1/SigningCert/jwk
属性issuerの値が、グローバル・プロパティmcp.security.jwt.profile.issuerの値になります。デフォルトではhttps://identity.oraclecloud.com/です。
mcp.security.jwt.profile.issuer = https://identity.oraclecloud.com/
以上で、ORDS MCPサーバーの構成に必要なデータが集まりました。
Oracle IAMでは、属性jwks_uriのURLにアクセスする際に、認証を要求されることがあります。認証の解除は、ドメインの設定から行います。
クライアント・アクセスの構成が
無効のときは、
ドメイン設定の編集を開いて有効に切り替えます。
クライアント・アクセスの構成をオンに切り替え、変更の保存を実行します。
イシュワーのデフォルトはhttps://identity.oraclecloud.com/ですが、セキュリティ・タブより変更できます。
下にスクロールし、Oauth設定 - デフォルトのトークン発行ポリシーに移動します。
現時点では発行者は未設定です。発行者を変更する場合は、Oauth設定の編集を開きます。
以上でOracle IAMの設定は完了です。
ORDS MCPサーバーの構成
ORDSの構成に移ります。
コンテナに接続して、ORDSの構成コマンドを実行します。
docker exec -it ords-mcp bash
ords-mcp2 % docker exec -it ords-mcp bash
[oracle@aeba9d22c0f9 ~]$
ORDSのグローバル・プロパティを設定します。
https://idcs-XXXXXXXXXXXXXXXXX.identity.oraclecloud.com:443の部分は、
ドメインURLに置き換えます。
ロールによるアクセス制御を行うため、mcp.security.jwt.profile.role.claim.nameに/roles2を設定しています。
ords --config /etc/ords/config config set --global feature.mcp true
ords --config /etc/ords/config config set --global mcp.security.jwt.profile.issuer https://identity.oraclecloud.com/
ords --config /etc/ords/config config set --global mcp.security.jwt.profile.audience http://localhost:8585/mcp
ords --config /etc/ords/config config set --global mcp.security.jwt.profile.jwk.url https://idcs-XXXXXXXXXXXXXXXXX.identity.oraclecloud.com:443/admin/v1/SigningCert/jwk
ords --config /etc/ords/config config set --global mcp.security.jwt.profile.authorization.server.url https://idcs-XXXXXXXXXXXXXXXXX.identity.oraclecloud.com:443
ords --config /etc/ords/config config set --global mcp.security.jwt.profile.role.claim.name /roles2
続いて、スキーマHRに接続するコネクション・プールとして
mcp-hrを構成します。ORDS MCPサーバーはコンテナ内で実行されているため、コンテナ外にあるデータベースの接続先として
host.docker.internalを設定しています。
ロールによるアクセス制御を行うため、
mcp.roleに
ORDS_MCP_HRを設定しています。
ords --config /etc/ords/config config --db-pool mcp-hr set db.connectionType basic
ords --config /etc/ords/config config --db-pool mcp-hr set db.hostname host.docker.internal
ords --config /etc/ords/config config --db-pool mcp-hr set db.port 1521
ords --config /etc/ords/config config --db-pool mcp-hr set db.servicename freepdb1
ords --config /etc/ords/config config --db-pool mcp-hr set db.username HR
ords --config /etc/ords/config config --db-pool mcp-hr set db.description "Sample Schema Human Resources"
ords --config /etc/ords/config config --db-pool mcp-hr set mcp.role ORDS_MCP_HR
コネクション・プールmcp-hrがデータベースに接続する際に使用するパスワードを設定します。スキーマHRに設定したパスワードです。
ords --config /etc/ords/config config --db-pool mcp-hr secret db.password
[oracle@aeba9d22c0f9 ~]$ ords --config /etc/ords/config config --db-pool mcp-hr secret db.password
ORDS: Release 26.2 Production on Wed Jul 08 06:44:35 2026
Copyright (c) 2010, 2026, Oracle.
Configuration:
/etc/ords/config
Enter the database password: ********
Confirm password: ********
[oracle@aeba9d22c0f9 ~]$
コンテナから抜けて再起動します。
exit
docker restart ords-mcp[oracle@aeba9d22c0f9 ~]$ exit
exit
ords-mcp2 % docker restart ords-mcp
ords-mcp
ords-mcp2 %
MCP Inspectorによる接続確認
MCP Inspectorを起動し、MCPサーバーに接続します。
npx @modelcontextprotocol/inspector
ORDS MCPサーバーに接続するにあたって、以下を設定します。
Transport Type: Streamable HTTP
URL; http://localhost:8585/mcp
Connection Type: Via Proxy
OAuth2 2.0 Flow Client ID: アプリケーションORDS MCP2のクライアントID
OAuth2 2.0 Flow Client Secret: アプリケーションORDS MCP2のクライアント・シークレット
Scope: http://localhost:8585/mcpurn:oracle:dbtools:ords:mcpserver:all
OAuth2 2.0 Flow Client IDおよびClient Secretに設定する値は、アプリケーションORDS MCP2のOAuth構成の一般情報から取得します。
以上でConnectをクリックします。
Oracle IAMへサインインすると、アプリケーションへのアクセス許可を求められます。
許可をクリックします。
MCPサーバーに接続されます。
Toolsタブを開き、
List Toolsを実行します。
呼び出し可能なツールとして
database_list、
schema_information、
sql_runがリストされます。
以降はORDS MCPサーバーの使い方になります。
今回の記事は以上になります。
完