ORDS MCPサーバーから接続するデータベースおよびORDSのコンテナの準備は、記事「ORDS 26.2のMCPサーバーを構成する - Auth0編」と同じです。ORDS MCPサーバーが動作するコンテナを実行しAuth0の構成を始める直前まで、Auth0の記事にそって作業を進めます。
Oktaのアプリケーション構成
作業の多くは記事「Role based JWT profileで保護したORDS REST APIにアクセスする - Okta Integrator編」と重なりますが、省略せずに紹介します。
Okta Admin Consoleにサインインします。
ディレクトリのグループを開き、グループを追加します。
追加するグループの名前はORDS_MCP_HRとします。これは、ORDS MCPサーバーで、コネクション・プールmcp-hrへのアクセスを許可するロールとして使用します。説明は「Role for HR Schema」と記述します。
保存をクリックします。
グループに再度アクセスし、グループ一覧を更新します。
作成したグループORDS_MCP_HRを開き、ユーザーを割り当てます。
ユーザーを割り当てをクリックします。
グループORDS_MCP_HRにユーザーを割り当てます。
ユーザーの割り当てを完了します。
アプリケーション・メニューのアプリケーションを開き、アプリ統合を作成します。
サインイン方法としてOIDC - OpenID Connectを選択します。OIDCを選択するとアプリケーションタイプの選択が現れます。アプリケーションタイプはシングルページアプリケーションを選択します。
次へ進みます。
アプリ統合を設定します。
アプリ統合名をORDS MCP2とします。
付与タイプのリフレッシュトークンにチェックを入れます。
サインインリダイレクトURIにMCP InspectorのRedirect URLを設定します。ポート番号6274が使用されている場合は、ポート番号が異なるかもしれません。
http://localhost:6274/oauth/callback
サインアウトリダイレクトURIは何を設定すべきか不明なので、x をクリックして削除しておきます。
割り当てのアクセス制御として選択されたグループにアクセスを制限を選択し、選択されたグループに先ほど作成したグループORDS_MCP_HRを含めます。
以上を設定し保存します。
アプリ統合としてORDS MCP2が作成されます。
クライアントIDはMCP InspectorのOAuth 2.0 FlowのClient IDに設定する値です。メモしておきます。
セキュリティのAPIを開き、認証サーバーを追加します。(タブには認可サーバーと書いてあります)
追加する認証サーバーの名前はORDSMCP2とします。
追加された認証サーバーの設定タブを開き、メタデータURIを確認します。
グローバル・プロパティmcp.security.jwt.profile.authorization.server.urlの値は、以下になります。
ORDS MCPサーバーが認証サーバーのメタデータを取得するURLが有効かどうか確認します。
mcp.security.jwt.profile.role.claim.name = /roles2
追加するクレームの名前はroles2とします。このクレームは、ORDS MCPサーバーが認識するロールを保持します。トークンタイプに含めるはアクセス・トークンです。
同様の手順でscopeクレームを追加します。
追加するクレームの名前はscopeとします。トークンタイプに含めるにアクセストークン、値タイプに式を選択し、値として以下を記述します。
String.replace(Arrays.toCsvString(access.scope),","," ")
クレームを無効化はチェックせず、含めるはいずれかのスコープを選択します。
以上で作成します。
roles2クレームとscopeクレームが作成されました。
アクセスポリシーを開き、ポリシーを追加します。
ポリシーの名前はORDS MCP2とします。説明に「ORDS MCP2」と記述し、次に割り当てるに次のクライアントを選択し、クライアントにORDS MCP2を含めます。
以上でポリシーを作成します。
アクセスポリシーとしてORDS MCP2が作成されました。
ルールを追加します。
ルール名はDefaultとします。デフォルトの設定は変更せず(最低限コア付与の認証コードがチェックされていれば動くはず)、ルールを作成します。
アクセス・ポリシーORDS MCP2とルールDefaultが作成されます。
トークンのプレビューを開き、これまでの設定で生成されるアクセス・トークンを確認します。
以上でトークンのプレビューをクリックします。
ORDSの構成に移ります。
コンテナに接続して、ORDSの構成コマンドを実行します。
docker exec -it ords-mcp bash
ORDSのグローバル・プロパティを設定します。XXXXXの部分はOktaに作成したアプリケーションORDS MCP2のドメインの値、{id}は認証サーバーのIDに置き換えます。
ロールによるアクセス制御を行うため、mcp.security.jwt.profile.role.claim.nameに/roles2を設定しています。
サインインリダイレクトURIにMCP InspectorのRedirect URLを設定します。ポート番号6274が使用されている場合は、ポート番号が異なるかもしれません。
http://localhost:6274/oauth/callback
http://localhost:6274/oauth/callback/debug
サインアウトリダイレクトURIは何を設定すべきか不明なので、x をクリックして削除しておきます。
割り当てのアクセス制御として選択されたグループにアクセスを制限を選択し、選択されたグループに先ほど作成したグループORDS_MCP_HRを含めます。
以上を設定し保存します。
クライアントIDはMCP InspectorのOAuth 2.0 FlowのClient IDに設定する値です。メモしておきます。
セキュリティのAPIを開き、認証サーバーを追加します。(タブには認可サーバーと書いてあります)
追加する認証サーバーの名前はORDSMCP2とします。
オーディエンスはORDS MCPサーバーのエンドポイントURLであるhttp://localhost:8585/mcpを設定します。このオーディエンスは、ORDSのグローバル・プロパティmcp.security.jwt.profile.audienceの値になります。
mcp.security.jwt.profile.audience = http://localhost:8585/mcp
説明としてORDS MCP Serverを入力します。
以上で保存します。
以上で保存します。
追加された認証サーバーの設定タブを開き、メタデータURIを確認します。
このメタデータURIを元に、ORDSのグローバル・プロパティの値を求めます。メタデータURIは以下の形式です。URLの最後の文字列が認証サーバーのIDになります。
https://integrator-XXXXXXX.okta.com/.well-known/oauth-authentication-server/oauth/{id}
mcp.security.jwt.profile.authorization.server.url = https://integrator-XXXXXXX.okta.com/oauth/{id}
メタデータURIの/.well-known/oauth-authorization-serverの部分をURLの末尾に移動します。
グローバル・プロパティのmcp.security.jwt.profile.issuerとして、このissuerの値を設定します。また、mcp.security.jwt.profile.jwk.urlとして、このjwks_uriの値を設定します。
アクセス制御のためのロールを返すカスタム・クレームは、Auth0での構成と同じにするためroles2とします。よって、グローバル・プロパティmcp.security.jwt.profile.role.claim.nameの値は/roles2になります。
https://integrator-XXXXXXX.okta.com/oauth2/{id}/.well-known/oauth-authorization-server
ブラウザに認証サーバーのメタデータが表示されるので、その中からissuerとjwks_uriを取り出します。
概ね、以下のような形式になります。
mcp.security.jwt.profile.issuer = https://integrator-XXXXXXX.okta.com/oauth/{id}
mcp.security.jwt.profile.jwk.url = https://integrator-XXXXSXX.okta.com/oauth2/{id}/v1/keysmcp.security.jwt.profile.jwk.urlに設定するURL(jwks_uriの値)については、ブラウザから開いてみて存在を確認しておくとよいでしょう。
mcp.security.jwt.profile.role.claim.name = /roles2
これで、ORDS MCPサーバーに設定するグローバル・プロパティの値はすべて集まりました。
スコープ・タブを開き、スコープを追加します。
追加するスコープは、ORDS MCPサーバーのデフォルト・スコープである"urn:oracle:dbtools:ords:mcpserver:all"です。
スコープの名前はurn:oracle:dbtools:ords:mcpserver:allです。フレーズを表示に「Access to ORDS MCP Server」、説明に「Access to ORDS MCP Server」と記述します。
ユーザーの同意はどれでもよいですが、今回は必須を選択します。サービスをブロック、デフォルトスコープ、メタデータはチェックを外します。
以上でスコープを作成します。
ORDS MCPサーバーのデフォルト・スコープurn:oracle:dbtools:ords:mcpserver:allが追加されます。
クレーム・タブを開き、roles2とscopeをカスタム・クレームとして追加します。
追加するクレームの名前はroles2とします。このクレームは、ORDS MCPサーバーが認識するロールを保持します。トークンタイプに含めるはアクセス・トークンです。
値タイプにグループを選択し、フィルターは次で始まるでORDS_を設定します。このフィルターにより、roles2クレームに先ほど作成したグループORDS_MCP_HRが含まれます。
クレームを無効化はチェックしません。
クレームを無効化はチェックしません。
含めるに以下のスコープを選択し、スコープとして先ほど作成したORDS MCPサーバーのデフォルト・スコープurn:oracle:dbtools:ords:mcpserver:allを選択します。
以上で作成します。
追加するクレームの名前はscopeとします。トークンタイプに含めるにアクセストークン、値タイプに式を選択し、値として以下を記述します。
String.replace(Arrays.toCsvString(access.scope),","," ")
クレームを無効化はチェックせず、含めるはいずれかのスコープを選択します。
以上で作成します。
アクセスポリシーを開き、ポリシーを追加します。
ポリシーの名前はORDS MCP2とします。説明に「ORDS MCP2」と記述し、次に割り当てるに次のクライアントを選択し、クライアントにORDS MCP2を含めます。
以上でポリシーを作成します。
アクセスポリシーとしてORDS MCP2が作成されました。
ルールを追加します。
ルール名はDefaultとします。デフォルトの設定は変更せず(最低限コア付与の認証コードがチェックされていれば動くはず)、ルールを作成します。
アクセス・ポリシーORDS MCP2とルールDefaultが作成されます。
要求プロパティーのOAuth/OIDCクライアントにORDS MCP2、付与タイプに認証コード、ユーザーにサインインする予定のユーザー、スコープにORDS MCPサーバーのデフォルト・スコープであるurn:oracle:dbtools:ords:mcpserver:allを設定します。
生成されたトークンから、以下を確認します。
- issの値がORDSのグローバル・プロパティmcp.security.jwt.profile.issuerに設定する予定の値と一致していること。
- audの値がhttp://localhost:8585/mcp(グローバル・プロパティmcp.security.jwt.profile.audienceに設定する予定の値)であること。
- scopeにurn:oracle:dbtools:ords:mcpserver:allが含まれていること。
- カスタム・クレームとしてroles2があり、値の配列にORDS_MCP_HRが含まれていること。
コンテナに接続して、ORDSの構成コマンドを実行します。
docker exec -it ords-mcp bash
ords-mcp2 % docker exec -it ords-mcp bash
[oracle@aeba9d22c0f9 ~]$
ORDSのグローバル・プロパティを設定します。XXXXXの部分はOktaに作成したアプリケーションORDS MCP2のドメインの値、{id}は認証サーバーのIDに置き換えます。
ロールによるアクセス制御を行うため、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://integrator-XXXXXXX.okta.com/oauth2/{id}
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://integrator-XXXXXXX.okta.com/oauth2/{id}/v1/keys
ords --config /etc/ords/config config set --global mcp.security.jwt.profile.authorization.server.url https://integrator-XXXXXXX.okta.com/oauth2/{id}
ords --config /etc/ords/config config set --global mcp.security.jwt.profile.role.claim.name /roles2
ロールによるアクセス制御を行うため、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に設定したパスワードです。
[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
Scope: urn:oracle:dbtools:ords:mcpserver:all
以上でConnectをクリックします。
Oktaへサインインすると、アプリケーションへのアクセス許可を求められます。
アクセスを許可するをクリックします。
MCPサーバーに接続されます。
Toolsタブを開き、List Toolsを実行します。
呼び出し可能なツールとしてdatabase_list、schema_information、sql_runがリストされます。
以降はORDS MCPサーバーの使い方になります。
今回の記事は以上になります。
完






























