Claude CodeおよびOpenAI Codexでプロジェクトを作成し、そのプロジェクトに含めたAgent Skillsを参照してOracle Databaseに問い合わせを行います。データベースへの問い合わせには、SQLclのMCPサーバーを使用します。接続先のデータベースとして、
Oracleが提供しているFreeSQL(
https://freesql.com/)を使用します。
Claude CodeとOpenAI Codexの間でAgent Skillsを共用するために、
Microsoftが提供している
APM(Agent Package Manager)を採用します。
作業はmacOSで実施します。Claude Desktop、Codex、git、apm、SQLcl(コマンド名はsql)、JavaはWindowsでも動作するため、Windowsでも同様に作業できるでしょう。
OracleのFreeSQL.comには、Oracleが提供しているサンプル・スキーマがインストール済みです。今回使用するAgent Skillsには、サンプル・スキーマSales Historyへの問い合わせ方法を記述しています。
SQLclとgitはインストール済みとします。
macOSでは以下のコマンドを実行します。
curl -sSL https://aka.ms/apm-unix | sh~ % curl -sSL https://aka.ms/apm-unix | sh
-e
╔══════════════════════════════════════════════════════════════╗
║ APM Installer ║
║ The NPM for AI-Native Development ║
╚══════════════════════════════════════════════════════════════╝
-e
-e Detected platform: darwin-arm64
-e Target binary: apm-darwin-arm64.tar.gz
-e Note: Will need sudo permissions to install to /usr/local/bin
-e Fetching latest release information...
-e Latest version: v0.9.0
-e Download URL: https://github.com/microsoft/apm/releases/download/v0.9.0/apm-darwin-arm64.tar.gz
-e Downloading APM...
-e ✓ Download successful
-e Extracting binary...
-e ✓ Extraction successful
-e Testing binary...
-e ✓ Binary test successful
-e Installing APM CLI to /usr/local/bin...
Password:
-e ✓ APM installed successfully!
-e Version: Agent Package Manager (APM) CLI version 0.9.0 (303a3a2)
-e Location: /usr/local/bin/apm -> /usr/local/lib/apm/apm
-e 🎉 Installation complete!
-e Quick start:
apm init my-app # Create a new APM project
cd my-app && apm install # Install dependencies
apm run # Run your first prompt
-e Documentation: https://github.com/microsoft/apm
-e Need help? Create an issue at https://github.com/microsoft/apm/issues
~ %
確認を兼ねて、インストールされたAPMのバージョンを表示してみます。
apm --version
~ % apm --version
Agent Package Manager (APM) CLI version 0.9.0 (303a3a2)
~ %
git clone https://github.com/ujnak/sh-sales-analysis.git
cd sh-sales-analysis
.apm/instructions/sh-schema.instructions.mdおよび.apm/skills/*/SKILL.mdが、Agent Skillsとして含まれています。スキルを参照した上でOracle Databaseに問い合わせができることを確認するためだけのスキルで、スキル自体はClaudeに生成させたものをそのまま使用しています。そのため、スキルとして参考になるものではありません。
スキル以外にapm.ymlを含んでいます。
Documents % git clone https://github.com/ujnak/sh-sales-analysis.git
Cloning into 'sh-sales-analysis'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 19 (delta 0), reused 19 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (19/19), 9.78 KiB | 9.78 MiB/s, done.
Documents % cd sh-sales-analysis
sh-sales-analysis %
次にデータベースを準備します。
FreeSQに接続します。
右上のSign Inをクリックし、FreeSQLにサインインします。FreeSQLへのサインインには、Oracleアカウントを使用します。
FreeSQLにサインインすると、Connect to the Database, Connect to Javaと表示されるボタンがあります。これをクリックします。
ドロワーが開きます。最初はパスワードが生成されていないため、
Regenerateボタンをクリックします。
Regenerateをクリックすると、Use SQLcl to get startedにパスワードを含んだ、データベースへの接続文字列が表示されます。この接続文字列をコピーします。
手元のPCに戻りSQLclを起動します。
sql /nolog
sh-sales-analysis % sql /nolog
SQLcl: 水 4月 22 14:11:30 2026のリリース26.1 Production
Copyright (c) 1982, 2026, Oracle. All rights reserved.
SQL>
FreeSQLよりコピーした接続文字列を指定して、データベースに接続します。接続は名前をつけて保存します。
接続の名前はfreesqlとしています。
conn -save freesql -savepwd YUJI_********_SCHEMA_2XU9P/*************************************@//db.freesql.com:1521/26ai_un3c1
SQL> conn -save freesql -savepwd YUJI_***********_SCHEMA_2XU9P/********************************@//db.freesql.com:1521/26ai_un3c1
名前: freesql
接続文字列: //db.freesql.com:1521/26ai_un3c1
ユーザー: YUJI_****************_SCHEMA_2XU9P
パスワード: ******
接続しました.
SQL>
保存された接続をリストします。
connmgr list
SQL> connmgr list
.
├── adb-apexdev
├── freesql
├── local-26ai-apexdev
└── local-26ai-sys
SQL>
以上で、SQLclのMCPサーバーから利用できるデータベース接続として
freesqlが保存されました。
調べてみたのですが、FreeSQLで生成したパスワードの有効期限は不明でした。1時間くらいは有効だろうと思いますが、作業中はFreeSQL.comは、サインインした状態を維持しておくと良いでしょう。
リポジトリsh-sales-analysisをクローンしたディレクトリに移動し、Claude Code向けにスキルをインストールします。
apm install --target claude
sh-sales-analysis % apm install --target claude
[>] Installing dependencies from apm.yml...
[+] <project root> (local)
|-- 1 rule(s) integrated -> .claude/rules/
|-- 4 skill(s) integrated -> .claude/skills/
+- MCP Servers (1)
| + oracle-sh (already configured)
+- All servers up to date
[*] Installed 1 APM dependency.
sh-sales-analysis %
MCPサーバーについて、apm.ymlに以下のように記載しています。SQLcl(sqlコマンド)がインストールされているパスは変更が必要かもしれません。
dependencies:
mcp:
- name: oracle-sh
registry: false
transport: stdio
command: /opt/homebrew/Caskroom/sqlcl/26.1.0.086.1709/sqlcl/bin/sql
args:
- -mcp
- -R
- 4
scripts: {}
ターゲットがClaudeの場合、apm.ymlに記載したMCPサーバーの設定がインストールされないようです。そのため、手動でMCPサーバーを設定します。ディレクトリsh-sales-analysisの下に設定ファイル.mcp.jsonを作成します。内容として以下を記述します。
{
"mcpServers": {
"oracle-sh": {
"command": "/opt/homebrew/Caskroom/sqlcl/26.1.0.086.1709/sqlcl/bin/sql",
"args": [
"-mcp","-R","4"
]
}
}
}
以上でディレクトリ(Claudeではフォルダーと呼んでいます)の準備ができました。
ClaudeのDesktopアプリからCodeを開きます。
新規セッションを開始し、スキルをインストールしたフォルダーを選択します。
参照できるスキルを一覧します。
「参照できるスキルを一覧して。」
分析系スキルとして、インストールしたスキルが一覧されます。
使用できるMCPサーバーを一覧します。
「使用できるMCPサーバーを一覧して。」
.mcp.jsonに設定したMCPサーバーが一覧されます。
スキルとMCPサーバーを組み合わせて、分析を実施します。
「MCPサーバーoracle-shのfreesqlに接続して、Oracle SHスキーマの販売データを総合分析を実施して。」
MCPサーバーのツール実行と、スキルの参照が行われたことは確認できます。スキルの内容が適切かどうかを検証していないので、Claude Codeの出力については、なんとも言えません。しかし、MCPサーバー経由でデータベースを検索できて、かつ、スキルに従って分析作業が実行されたことは確認できます。
続いて、同様の作業をOpenAI Codex向けに実施します。
Codex向けにスキルをインストールします。
apm install --target codex
sh-sales-analysis % apm install --target codex
[>] Installing dependencies from apm.yml...
[+] <project root> (local)
|-- 4 skill(s) integrated -> .agents/skills/
+- MCP Servers (1)
| > oracle-sh (self-defined, stdio)
| +- Configuring for Codex...
Installing oracle-sh...
Successfully configured MCP server 'oracle-sh' for Codex CLI
+ oracle-sh
| + oracle-sh -> Codex (configured)
+- Configured 1 server
[*] Installed 1 APM dependency and 1 MCP server.
sh-sales-analysis %
apm.ymlにはMCPサーバーが設定されていますが、これはグローバル・スコープでインストールされる(~/.codex/config.tomlに追加される)ようです。apm install --helpのオプション--globalに「 MCP servers target global-capable runtimes only (Copilot CLI, Codex CLI).」と記載されているので、そういうものかもしれません。
MCPサーバーをプロジェクト・ローカルにインストールするために、手動でconfig.tomlを作成します。プロジェクト・フォルダーに設定ファイル.codex/config.tomlを作成し、以下を記述します。
[mcp_servers.oracle-sh]
command = "/opt/homebrew/Caskroom/sqlcl/26.1.0.086.1709/sqlcl/bin/sql"
args = [ "-mcp", "-R", "4"]
id = ""
次回からはMCPサーバーをインストール対象から外すようにします。
apm install --only apm --target codex
Codexでの作業に移ります。
Codexでは新しいプロジェクトを追加する際に、リポジトリsh-sales-analysisをクローンしたディレクトリを選択します。
参照できるスキルを一覧します。
「参照できるスキルを一覧して。」
分析系スキルとして、インストールしたスキルが一覧されます。
使用できるMCPサーバーを一覧します。
「使用できるMCPサーバーを一覧して。」
config.tomlに設定したMCPサーバーが一覧されます。
スキルとMCPサーバーを組み合わせて、分析を実施します。
「MCPサーバーoracle-shのfreesqlに接続して、Oracle SHスキーマの販売データを総合分析を実施して。」
Codexでも、MCPサーバー経由でデータベースを検索できて、かつ、スキルに従って分析作業が実行されたことが確認できます。
コーディング作業をするわけではないので、最初はClaude CodeではなくCoworkで試していたのですが、Coworkでのスキルの追加はプラグインで行い、プロジェクト・フォルダー以下のスキルは参照しないようです。そのため、Claude Codeを使った作業に切り替えました。
今回の記事は以上になります。
完