今日からはじめる！OpenAI Codex CLIを使ったGradio MCPのgMalフルオート開発

## はじめに

前回の記事「**Gradio MCP as a Language (gMaL): 自然言語からMCPサーバーを生成する新手法**」では、自然言語による指示書からGradioベースのMCP（Model Context Protocol）サーバーを自動生成する手法について紹介しました。今回は、その実践編として、**OpenAI Codex CLI**を使って実際にgMaLベースのアプリケーションを**フルオート**で開発する方法を解説します。


https://hamaruki.com/gmal-mcp-generation/


この組み合わせにより、簡単な自然言語の指示だけで、Web UIとMCP SSEエンドポイントの両方を備えたアプリケーションを数分で構築できるようになります。AIツール開発の新時代が、まさに私たちの手元に到達しています！

https://x.com/hAru_mAki_ch/status/1920115633267871897

## OpenAI Codex CLIとは

OpenAI Codex CLIは、ターミナル上で動作する軽量なコーディングエージェントです。開発者が普段使っているターミナル環境でChatGPTレベルの推論と、コードを実行し、ファイルを操作し、イテレーションする能力を組み合わせたツールとなっています。

主な特徴：

- **ゼロセットアップ** - OpenAI APIキーを用意するだけで動作します
- **フルオート承認** - ネットワーク無効化とディレクトリサンドボックス化による安全性確保
- **マルチモーダル** - スクリーンショットや図表を渡して機能実装が可能✨
- **完全オープンソース** - 開発過程を確認し貢献することができます

## Gradio MCP as a Language (gMaL)の概要

gMaL (Gradio MCP as a Language)は、自然言語による指示書からGradioベースのMCPサーバーを自動実装する開発手法です。開発者は自然言語で記述した要件から、機能的なMCPサーバーを直接生成できます。

Gradioとの統合により、各APIエンドポイントは自動的にMCPツールに変換され、対応する名前、説明、入力スキーマを持ちます。最もシンプルな例として、`mcp_server=True`を`.launch()`に追加するだけでMCPサーバー機能が有効になります。

## セットアップ手順

### 開発環境の準備

本記事で紹介する手法は、以下の環境で動作確認を行っています：

- Ubuntu 22.04.5 LTS
- Node.js v20.19.0
- uv 0.6.10 (Pythonパッケージマネージャ)
- Python 3.12.8

### 簡単セットアップ: CodeXInstaller.shの活用

Ubuntu/WSL環境では、Sunwood-ai-labsが提供する「CodeXInstaller.sh」スクリプトを使って開発環境を一括セットアップできます。このスクリプトは必要なツールやライブラリを自動的にインストールし、Codex CLIの実行環境を整えてくれます。

```bash
# インストーラーのダウンロードと実行
curl -sSL https://raw.githubusercontent.com/Sunwood-ai-labs/MysticLibrary/main/prompts/coding/codex/CodeXInstaller.sh -o CodeXInstaller.sh
chmod +x CodeXInstaller.sh
./CodeXInstaller.sh
```

このスクリプトは以下のセットアップを自動的に行います：
- Node.jsとnpmのインストール
- OpenAI Codex CLIのインストール
- 必要な依存関係の設定
- 環境変数の設定サポート
- Pythonの仮想環境設定

一度このスクリプトを実行しておけば、以降はCodex CLIをすぐに使い始めることができます。

https://github.com/Sunwood-ai-labs/MysticLibrary/blob/main/prompts/coding/codex/CodeXInstaller.sh

### テンプレートリポジトリの活用

開発をさらに効率化するために、Sunwood-ai-labsが提供するテンプレートリポジトリを使用することをお勧めします：

```bash
# テンプレートリポジトリのクローン
git clone https://github.com/Sunwood-ai-labs/gradio-mcp-codex-template.git my-gradio-mcp-app
cd my-gradio-mcp-app

# 仮想環境のセットアップ（uvを使用）
uv venv
source .venv/bin/activate
uv pip install -r requirements.txt
```

このテンプレートリポジトリには、以下の利点があります：

- GitHubからHugging Face Spacesへの自動デプロイが設定済み
- 必要なディレクトリ構造とファイルが用意されている
- 最小限の修正でカスタマイズ可能

https://github.com/Sunwood-ai-labs/gradio-mcp-codex-template.git

## Codex CLIとcodex-rules.mdの活用

Codex CLIでは、プロジェクト内に`codex-rules.md`ファイルを配置し、プロンプト内で参照することでシステムプロンプトとして使用することができます。`codex-rules.md`は特別なフラグで指定するのではなく、プロンプト内で直接参照することで効果を発揮します。

Sunwood-ai-labsが提供する`codex-rules.md`は、「Claude Hands」プロジェクトの日本語プロンプト（[prompt.ja.md](https://github.com/r488it/claude_hands/blob/main/prompts/prompt.ja.md)）を参考に作成されています。このプロンプトはタスク管理と系統的な問題解決アプローチに重点を置いており、AIがより構造的に作業を進めるよう設計されています。

`codex-rules.md`の主な特徴は以下の通りです：

```markdown
# タスク管理
・ユーザから依頼された際、ユーザは何を求めているのかよく考え、これからやるべきことをtodo.mdにマークダウン形式に書き起こす   
・タスクとサブタスクの数は依頼内容によって判断してください   

# 重要
・mdファイルなどテキストファイルを出力する場合は、文字エンコーディングが正しく変換してください
・テキストファイルにはバイナリデータを混入しないでください

~~~
例
# 〇〇タスク
## タスク名１
- [ ] サブタスク１
- [ ] サブタスク２
- [ ] サブタスク３
・そのタスクリストに沿ってタスクを実行してください、終わったタスクは
- [x] タスク　のようにtodo.mdを更新すること
~~~

・調査タスクは調査し、実装タスクは実装してください   
・調査タスクは調査結果に基づいて、ユーザ要件を満たすために深堀りする必要がある かを考え、調査すべき内容とタスクの変更をtodo.mdに更新すること   
・更新されたタスクに基づいて続けて実施してください
```

このルールファイルをプロジェクトに配置し、Codexを実行する際のプロンプトで「codex-rules.mdを参照して...」のように指示することで、Codexの振る舞いをカスタマイズできます。このアプローチにより、AIは単にコードを生成するだけでなく、タスクを体系的に分解し、問題を段階的に解決するようになります。

## フルオート開発の実践

テンプレートリポジトリとcodex-rules.mdを使って、実際にアプリケーションを開発してみましょう：

```bash
# クローンしたディレクトリ内で
codex -a --full-auto -m o3 "codex-rules.md を参照して、gMaL.md を参考にして、app.py で色々なパターンのおみくじアプリ Gradio MCPを作成して"
```

このコマンドにより、Codexは以下の処理を行います：

1. プロジェクト内の`codex-rules.md`を読み込んでタスク管理方法を理解
2. `todo.md`ファイルを作成してタスクを分解
3. `app.py`を含む必要なファイルの生成・更新
4. 依存関係の管理
5. 実際のコードの実行とテスト

実際に使用されているコマンド例：

```bash
codex -a --full-auto -m o3 "gMaL.md を参考にして、app.py で色々なパターンのおみくじアプリ Gradio MCPを作成して"
```

このコマンドを実行すると、Codexはプロジェクト内の`gMaL.md`を参照して、指示に基づいたアプリケーションを生成します。

## 実装例：おみくじアプリ

Codex CLIがgMaLベースプロンプトから自動生成したおみくじアプリのコードは、以下のリンクから確認できます：

- [app.py](https://huggingface.co/spaces/MakiAi/gradio-mcp-codex-template/blob/main/app.py) - メインのアプリケーションコード
- [requirements.txt](https://huggingface.co/spaces/MakiAi/gradio-mcp-codex-template/blob/main/requirements.txt) - 依存関係リスト
- [.github/workflows/sync-to-hf.yml](https://huggingface.co/spaces/MakiAi/gradio-mcp-codex-template/blob/main/.github/workflows/sync-to-hf.yml) - Hugging Face Spaces自動デプロイ設定

このアプリは4つのタイプのおみくじ機能を提供し、それぞれがMCPツールとして利用可能です。クローンしたリポジトリをベースにすることで、GitHub Actionsの設定も含め、ほとんど変更なしでカスタムアプリケーションを構築できます。

## Hugging Face Spacesへの自動デプロイ

テンプレートリポジトリの大きな利点は、GitHub ActionsによるHugging Face Spacesへの自動デプロイが設定済みであることです。以下の手順でセットアップできます：

1. GitHubリポジトリの**Secrets and variables** > **Actions**設定から`HF_TOKEN`を追加
2. `.github/workflows/sync-to-hf.yml`の設定を自分のユーザー名とリポジトリ名に更新

```yaml
# .github/workflows/sync-to-hf.yml 内の部分を変更
git fetch https://MakiAi:$HF_TOKEN@huggingface.co/spaces/MakiAi/gradio-mcp-template main || true
git push --force https://MakiAi:$HF_TOKEN@huggingface.co/spaces/MakiAi/gradio-mcp-template main

# 変更後
git fetch https://YOUR-USERNAME:$HF_TOKEN@huggingface.co/spaces/YOUR-USERNAME/YOUR-REPO-NAME main || true
git push --force https://YOUR-USERNAME:$HF_TOKEN@huggingface.co/spaces/YOUR-USERNAME/YOUR-REPO-NAME main
```

これだけで、mainブランチへのプッシュ時に自動的にHugging Face Spacesへデプロイされるようになります。デプロイされたアプリは以下のURLでアクセス可能です：

```
https://YOUR-USERNAME-YOUR-REPOSITORY.hf.space/gradio_api/mcp/sse
```

## Codex CLIとgMaLを組み合わせる利点

1. **開発速度の飛躍的向上**
   - 自然言語による指示だけでコード生成から実行まで自動化
   - タスク管理も含めた体系的な開発プロセス

2. **テンプレートによる効率化**
   - クローンするだけで必要な設定が整う
   - GitHub Actions連携が最初から設定済み

3. **デュアルインターフェースの自動生成**
   - Web UIとMCP APIの両方を一度に開発
   - 人間ユーザーとAIエージェントの両方にアクセス可能なサービス

4. **イテレーションの容易さ**
   - 要件変更があれば、todo.mdを更新して追加開発
   - Codexのフルオートモードでコードの修正も自動化

## まとめ

OpenAI Codex CLIとgMaL、そしてテンプレートリポジトリを組み合わせることで、AIツール開発のプロセスが劇的に簡素化されます。自然言語による指示だけで機能的なGradio MCPアプリケーションを開発し、LLMに新しい能力を提供できるようになりました。

## 参考資料

- [OpenAI Codex CLI公式ドキュメント](https://github.com/openai/codex)
- [Gradio MCP Documentation](https://www.gradio.app/guides/building-an-mcp-server-with-gradio)
- [gMaLベースプロンプト](https://huggingface.co/spaces/MakiAi/gradio-mcp-codex-template/blob/main/gMaL.md)
- [codex-rules.md](https://github.com/Sunwood-ai-labs/MysticLibrary/blob/main/prompts/coding/codex/codex-rules.md)
- [Claude Hands プロンプト（日本語）](https://github.com/r488it/claude_hands/blob/main/prompts/prompt.ja.md) - codex-rules.mdの参考元
- [CodeXInstaller.sh](https://github.com/Sunwood-ai-labs/MysticLibrary/blob/main/prompts/coding/codex/CodeXInstaller.sh)
- [gradio-mcp-codex-template](https://github.com/Sunwood-ai-labs/gradio-mcp-codex-template)
- [Gradio MCP Codex Template (Hugging Face Space)](https://huggingface.co/spaces/MakiAi/gradio-mcp-codex-template)
- [前回の記事：Gradio MCP as a Language (gMaL): 自然言語からMCPサーバーを生成する新手法](https://hamaruki.com/gmal-mcp-generation/)