OracleのマネージドMCPサーバーをAIチャットクライアントに接続しました
AIアシスタントは、もはや単に会話をするだけではありません。Model Context Protocol (MCP) を使用して、外部ツールを呼び出すことができるようになっています。
OCI上でOracleのマネージドMCPサーバーをテストしました。目的は、Oracle E-Business Suiteデータベースの読み取り専用ヘルスチェックを作成することでした。「データベースは稼働していますか?」や「どのマネージャーがダウンしていますか?」といった質問をAIに投げられるようにしたかったのです。
結果は成功でした。AIアシスタントがデータベースのライブヘルスデータを取得できるようになりました。以下に、そのプロセスで学んだことをまとめます。
セットアップ
- OCIのマネージドMCPサーバーを使用する。
- 読み取り専用ユーザーを使用してデータベースに接続する。
- インスタンスの概要やアクティブセッションを確認するためのカスタムSQLツールを構築する。
- MCPとOAuth経由でAIチャットクライアントを接続する。
主な教訓
1. ネットワークとセキュリティ MCPサービスはOracleのテナンシ内で動作します。単体ではプライベートデータベースに到達できません。VCNにプライベート・エンドポイントをアタッチする必要があります。安全性を確保するため、読み取り専用のデータベースユーザーに接続してください。これにより、誤った書き込みを防ぐことができます。
2. URLに注意する
すべてのOCI MCPサーバーのURLには、/20250830/ のような日付セグメントが含まれています。古い日付を使用すると、HTTP 404エラーが発生します。このエラーは認証の問題のように見えますが、実際にはパスが間違っているだけです。コンソールから正確なURLをコピーしてください。
3. OAuthの問題 多くのWebベースのチャットUIはこのサーバーで失敗します。それらはサーバー経由でOAuth設定を検出(discover)しようとしますが、Oracleは未認証のリクエストに対して404を返します。これにより、ログインフローが停止してしまいます。また、ヘッドレスなWeb UIには、対話的なログインを行うためのブラウザが備わっていません。
4. アプストークンではなくユーザートークンを使用する
ブラウザをスキップするために、クライアント・クレデンシャル・トークンの使用を試みました。認証はできましたが、権限が不足していました。Oracleのロールはアプリではなくユーザーに紐付けられます。authorization_code(ユーザー)トークンを使用する必要があります。ユーザーがロールを保持しているため、そのトークンで動作します。
5. デスクトップクライアントを使用する
Claude DesktopやVS Codeなどのデスクトップクライアントは、ログイン用のブラウザが内蔵されているため、うまく動作します。404の検出問題を回避するには、静的なOAuthメタデータを使用して mcp-remote を使用してください。
クイックヒント
- Windowsでは、
npxの代わりにnpx.cmdを使用してください。 - 同じOAuthコールバックポートで2つのクライアントを実行しないでください。
TO_CHARなどのSQL日付フォーマットでコロン(:)を使用しないでください。システムがそれらをバインド変数と誤認する可能性があります。代わりに生の(raw)日付を使用してください。- すべてのRACインスタンスを確認するには、
v$の代わりにgv$ビューを使用してください。
AIエージェントを用いたManaged MCPは、ガバナンスが適用されたデータベースタスクに有用です。クライアントをデプロイメントに合わせ、常に読み取り専用ユーザーを使用してください。
オプションの学習コミュニティ: https://t.me/GyaanSetuAi