チュートリアル: データベース・ツールMCPサーバーの設定とMCPクライアントとの統合

このチュートリアルの目的は、データベース・ツールMCPサーバーを作成し、それをアイデンティティ・ドメインおよびアプリケーション・ロールで保護し、Visual Studio Code用のCline拡張などのMCPクライアントと統合することです。

最終的には、次のものがあります。

  • データベース・ツール接続があるMCPサーバー。
  • ツールセット(組込みSQLツール)。
  • アプリケーション・ロールにマップされたユーザーまたはグループ。
  • 個人アクセス・トークンまたはトークンベース認証を使用してサーバーに接続するMCPクライアント。

データベース・ツールMCPサーバーの作成およびクライアントとの統合ステップ

この表は、データベース・ツールMCPサーバーを作成し、それをMCPクライアントと統合するステップを示しています。

ステップ タスク プロセス
1 dbtools-mcpという名前のコンパートメントを作成します。 コンパートメントの作成
2 dbtools-mcpという名前のIAMドメインを作成します。 アイデンティティ・ドメインの作成
3 dbtools-mcpコンパートメントにdbtoolsmcpという名前のAutonomous AIデータベースを作成します。 Autonomous AI Databaseインスタンスのプロビジョニング
4 dbtools-mcpコンパートメントにボールトおよびキーを作成します。

Vaultの作成

マスター暗号化キーを作成します

5 データベース接続の作成 データベース接続の作成
6 MCPサーバーを作成します。 データベース・ツールMCPサーバーの作成
7 IAMドメイン・ロールを構成します。 IAMドメイン・ロールの設定
8 ルート・コンパートメントにdbtools-mcpという名前のポリシーを作成します。 ポリシーの作成

「ランタイム・アイデンティティ」「リソース・プリンシパル」に設定されているMCPサーバーの場合、次のポリシー・ステートメントを使用します:

allow group 'dbtools-mcp'/'MCP_All_Users' to use database-tools-mcp-servers-invocation in compartment dbtools-mcp
allow any-user to use database-tools-connections in compartment dbtools-mcp where request.principal.id = 'ocid1.databasetoolsmcpserver.oc1.phx.xxxx'
allow any-user to use database-tools-runtime-work-requests in compartment dbtools-mcp where request.principal.id = 'ocid1.databasetoolsmcpserver.oc1.phx.xxxx'
allow any-user to read secret-bundles in compartment dbtools-mcp where request.principal.id = 'ocid1.databasetoolsmcpserver.oc1.phx.xxxx'
allow any-user to use buckets in compartment dbtools-mcp where request.principal.id = 'ocid1.databasetoolsmcpserver.oc1.phx.xxxx'
allow any-user to manage objects in compartment dbtools-mcp where request.principal.id = 'ocid1.databasetoolsmcpserver.oc1.phx.xxxx'

「ランタイム・アイデンティティ」「認証済プリンシパル」に設定されているMCPサーバーの場合、次のポリシー・ステートメントを使用します:

allow group 'dbtools-mcp'/'MCP_All_Users' to use database-tools-mcp-servers-invocation in compartment dbtools-mcp
allow group 'dbtools-mcp'/'MCP_All_Users' to use database-connections in compartment dbtools-mcp
allow group 'dbtools-mcp'/'MCP_All_Users' to use database-tools-connections in compartment dbtools-mcp
allow group 'dbtools-mcp'/'MCP_All_Users' to use database-tools-runtime-work-requests in compartment dbtools-mcp
allow group 'dbtools-mcp'/'MCP_All_Users' to read secret-bundles in compartment dbtools-mcp
allow group 'dbtools-mcp'/'MCP_All_Users' to use buckets in compartment dbtools-mcp
allow group 'dbtools-mcp'/'MCP_All_Users' to manage objects in compartment dbtools-mcp

詳細は、MCPサーバーのポリシーを参照してください。

9 トークンベース認証の場合は、IAM認証を有効にするポリシーを作成し、データベース・ユーザーを作成します。
  1. MCPユーザーがIAM認証を使用できるようにするポリシーを作成します。

    allow group 'dbtools-mcp'/'MCP_All_Users' to use database-connections in compartment dbtools-mcp
  2. SQLワークシートを使用して、データベース・ユーザー(グローバル・スキーマ)を作成します。

    -- Global schema with exclusive mapping 
    CREATE USER scott IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=dbtools-mcp/scott@example.com';
    
    -- Global schema with shared mapping 
    CREATE USER mcp_users IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=dbtools-mcp/MCP_Users';
10 MCPツールセットを作成します。 MCPツールセットの作成
11 MCPクライアントを登録します。 MCPクライアントの登録
12 個人アクセス・トークンまたはトークンベースの認証を使用してMCPサーバーに接続します。

個人アクセス・トークンを使用したMCPサーバーへの接続

トークンベース認証を使用したMCPサーバーへの接続

データベース接続の作成

パスワード・ベース認証の場合

  1. データベースへの接続に使用するスキーマを使用して、データベース・ツール接続dbuser@dbtoolsmcpを作成します。

    接続の作成の詳細は、「接続の作成」をご覧ください。

  2. 接続の作成時に次の詳細を入力します。

    • 「Oracle Autonomous AI Database」を選択します。
    • ユーザー名: ADMINを入力します。
    • ユーザー・パスワード・シークレットの選択
    • Wallet形式を選択します。Oracle auto-login wallet (cwallet.ssoなど)
    • SSOウォレット・コンテンツ・シークレットを選択します。
    • 「拡張オプション」 - 「設定」で、「ランタイム・アイデンティティ」「リソース・プリンシパル」に設定します。
      ノート

      • 接続リソース・プリンシパルは、シークレットを取得するために使用されます。
      • ユーザー・パスワード・シークレットおよびウォレット・コンテンツ・シークレットは、データベース・ツール接続リソース・プリンシパルがシークレットの読取りを許可されているのと同じコンパートメントに作成する必要があります。

トークンベースの認証の場合

  1. パスワードベースの認証を使用して、特権ユーザー(ADMINなど)を持つデータベース・ツール接続admin@dbtoolsmcpdbtools-mcpコンパートメントに作成します。
  2. データベースでIAM認証を有効にします。
    1. admin@dbtoolsmcp接続を選択します。
    2. 「アクション」を展開し、「外部認証の構成」を選択します。
    3. 「外部認証タイプ」で、「OCI_IAM」を選択します。
    4. 構成を保存するには、「更新」をクリックします。
  3. トークンベースの認証を使用して、dbtools-mcpコンパートメントにデータベース・ツール接続dbtoolsmcpを作成します。

    接続の作成時:

    • 「Oracle Autonomous AI Database」を選択します。
    • 「拡張オプション」 - 「認証」で、「トークン・ベース認証の使用」を有効にします。

データベース・ツールMCPサーバーの作成

  1. ナビゲーション・メニューを開き、「開発者サービス」を選択します。
  2. 「データベース・ツール」セクションで、「モデル・コンテキスト・プロトコル・サーバー」を選択します。
  3. モデル・コンテキスト・プロトコル・サーバー・ページで、「モデル・コンテキスト・プロトコル・サーバーの作成」をクリックします。
  4. 次の詳細を入力します。
    • 名前: mcpserverと入力します。
    • ドメイン: 「dbtools-mcp」を選択します。
    • 接続:
      • パスワードベースの認証の場合は、「mcp@dbtoolsmcp」を選択します。
      • トークンベース認証の場合は、dbtoolsmcpを選択します。
    • 非同期操作を有効にするには、「オブジェクト・ストレージ・バケット」を選択します。
    • 拡張オプションOAuthオプションでは、ユーザーがMCPクライアントを構成するために個人アクセス・トークンをダウンロードする必要がある場合、アクセス・トークンの有効期限を1週間(604800秒)に増やすことを検討してください。
  5. 「作成」をクリックします。

IAMドメイン・ロールの設定

この部には次のステップが含まれます。

  1. アプリケーション・ロールごとにドメインにグループを作成します。
  2. アプリケーション・ロールにグループを割り当てます。
  3. ドメインにユーザーを作成します。
  4. グループにユーザーを割り当てます

各アプリケーション・ロールのドメインでのグループの作成

  1. 「モデル・コンテキスト・プロトコル・サーバー」ページで、「mcpserver」「ドメイン」の順に選択します。

  2. dbtools-mcpドメインで、「ユーザー管理」「グループ」の順に移動します。

  3. 次のグループを作成します。

    グループ名 アプリケーション・ロール
    MCP_管理者 MCP_管理者
    MCP_演算子 MCP_オペレータ
    MCP_ユーザー MCP_ユーザー
    MCP_全ユーザー 該当なし

    ドメインでのグループの作成の詳細は、グループの作成を参照してください。

アプリケーション・ロールへのグループの割当て

  1. 「モデル・コンテキスト・プロトコル・サーバー」ページで、「mcpserver」を選択し、「ロール」タブを選択します。
  2. 「ロールの割当て」をクリックします。
  3. 各アプリケーション・ロールについて:

    1. 「アクション」アイコンをクリックして、「グループの管理」を選択します。
    2. 「グループの割当て」をクリックします。
    3. 「使用可能」グループのリストで、必要なグループを選択します。
    4. 「割当て」をクリックします。

ドメインでのユーザーの作成

ドメインdbtools-mcpに対して、ユーザーを作成します。

アイデンティティ・ドメインでユーザーを作成する方法を学習するには、アイデンティティ・ドメインでのユーザーの作成を参照してください。

グループへのユーザーの割当て

dbtools-mcpドメインの場合、ユーザーをグループに割り当てます。

ユーザーをグループに追加する方法を学習するには、「グループへのユーザーの追加」を参照してください。

ノート

MCPサーバーを使用し、個人アクセス・トークンをダウンロードするには、アプリケーション・ロールが割り当てられている必要があります。

MCPツールセットの作成

  1. 「モデル・コンテキスト・プロトコル・サーバー」ページで、作成されたMCPサーバーの名前をクリックします。
  2. 特定のMCPサーバー・ページで、「ツールセット」タブを選択します。
  3. 「モデル・コンテキスト・プロトコル・ツールセットの作成」をクリックします。
  4. ツールセットを作成するための次の詳細を入力します。次の例は、特定の基準に一致する従業員をリストするツールセットのSQL問合せです。

    ノート

    ツールセットを作成する前に、EMPLOYEES表がすでに存在し、FIRST_NAME列とLAST_NAME列が含まれていることを確認してください。
    • 名前: ツールセットの名前を入力します(List employees matching substringなど)。
    • 説明: ツールセットの説明(List employees matching substring passed as parameter "substring"など)を入力します。
    • コンパートメント: ツールセットのコンパートメントを選択してください。
    • タイプ: ツールセットのタイプを選択します。この例では、「カスタムSQLツール」を選択します。
    • ツール名: list_employees_matching_substringと入力します。
    • ツールの説明: List employees matching substring passed as parameter "substring"と入力します。
    • 許可されたロール: 事前定義済アプリケーション・ロールから選択します。詳細は、アプリケーション・ロールを参照してください。
    • SQLソース: この例の次のコードを入力します。
      SELECT * FROM EMPLOYEES
      WHERE LAST_NAME LIKE'%'|| :substring ||'%'
      OR FIRST_NAME LIKE'%'|| :substring ||'%'
    • 変数: 「名前」substring「タイプ」VARCHAR2および「説明」"The substring to search for in first name and last name"を追加します。
  5. 「作成」をクリックします。

個人アクセス・トークンを使用したMCPサーバーへの接続

個人アクセス・トークンの生成

  1. 「プロファイル」アイコンをクリックし、<ユーザー電子メールID>を選択します。

  2. 「トークンとキー」タブを選択します。
  3. 「自分のアクセス・トークン」セクションの「他のAPIの起動」で、「トークンのダウンロード」をクリックします。

    この図は、「トークンとキー」タブと、ユーザーがクリックしてトークンをダウンロードする必要がある場所を示しています。

  4. 「個人アクセス・トークンの生成」ページで:

    1. トークンを生成するMCPサーバーを選択します。
    2. 「トークンの有効期限が分単位」で、トークンの有効期限を分単位で選択します(たとえば、10080分は1週間に相当します)。
      ノート

      MCPサーバーの「アクセス・トークンの有効期限」設定は、MCPサーバーの「トークンの有効期限(分)」設定に指定された期間によって置き換えられます。MCPサーバーの「詳細」ページに移動して、「アクセス・トークンの有効期限」設定を確認します。「アクセス・トークンの有効期限」設定の場所を確認するには、MCPサーバーへの接続を参照してください。
    3. 「トークンをダウンロード」をクリックします。

MCPサーバーに接続するためのMCPクライアントの構成

  1. Visual Studio CodeのCline拡張機能で、「MCPサーバー」アイコンを選択し、「リモート・サーバー」タブを選択します。
  2. サーバーの名前とサーバーURLを入力します。サーバーURLは、次のようにMCPサーバーの「詳細」ページで使用できます。
    https://example.oraclecloud.com/../actions/invoke
  3. 「トランスポート・タイプ」で、「ストリーミング可能なHTTP」を選択します。
  4. 「サーバーの追加」をクリックします。

    この図は、Cline拡張の「サーバー名」および「サーバーURL」フィールドを示しています。

    「構成」タブが選択され、サーバーがエラーとともに表示されます。

    この画像は、「MCPサーバーの構成」オプションを示しています。

  5. 「MCPサーバーの構成」をクリックします。

    cline_mcp_setting jsonファイルの内容が右側のペインに表示されます。

    次のようにファイルを更新します。

    {
      "mcpServers": {
        "dbtools-mcp-server": {
          "disabled": false,
          "timeout": 60,
          "type": "streamableHttp",
          "url": "https://mcp.../x.xxxxx/actions/invoke",
          "headers": {
            "Authorization": "Bearer {Add downloaded token}"
          }
        }
      }
    }
  6. ファイルを保存します。

    エラー・メッセージが解決されます。これは、サーバー名と同じ行に表示される緑色のインジケータで示されます。

    この図は、行の最後に表示される緑色のインジケータを示しています。

    サーバー名を展開して、使用可能なツール、リソースおよびプロンプトを表示します。

    この図は、使用可能なツール、リソースおよびプロンプトが表示される画面を示しています。

トークンベース認証を使用したMCPサーバーへの接続

登録済のパブリック・クライアントでmcp-remoteを使用してVS CodeのCline拡張機能をMCPサーバーに接続するには、VS Code内でサーバーを構成し、ブラウザ・プロンプトを介して認証フローを完了する必要があります。

  1. mcp-remoteをインストールします。

    次のコマンドを使用します。

    npm install -g mcp-remote
  2. cline_mcp_settings.jsonファイルを編集します。

    {
      "mcpServers": {
        "dbtools-mcp-server": {
          "disabled": false,
          "timeout": 60,
          "type": "stdio",
          "command": "npx",
          "args": [
            "-y",
            "mcp-remote",
            "https://mcp.…./actions/invoke",
            "8080",
            "--transport",
            "http-only",
            "--static-oauth-client-metadata",
            "{ \"scope\": \"https://mcp." }",
            "--static-oauth-client-info",
            "{ \"client_id\": \"xxxx\" }"
          ]
        }
      }
    }

    OAuthパブリック・クライアントにhttp://localhost:8080/oauth/callbackというリダイレクトURIが構成されていることを確認します。

    ノート

    ポート(8080)は、JSON構成ファイルでmcp-remoteに渡すポート番号と一致する必要があります。

    サインインすると、mcp-remoteはマシン上にトークンをローカルに保存します。

    例:

    ~/.mcp-auth/mcp-remote-N.N.NN/xxxxx_tokens.json
  3. VSコードを再起動し、Clineでdbtools-mcp-serverに接続します。ブラウザが開き、サインインを完了してアクセスを承認します。