メインコンテンツまでスキップ

レシピ機能

レシピは、一連のツール呼び出しを YAML ファイルに定義して再利用可能にする機能です。よく行う作業手順をレシピとして保存し、ワンコマンドで実行できます。

レシピとは

レシピは以下のような場面で役立ちます。

  • プロジェクトの初期セットアップ: シーン作成、照明配置、カメラ設定などを一括実行
  • 繰り返し作業の自動化: 同じ構成のオブジェクトを毎回作成する場合
  • チームでの共有: 環境構築手順をファイルとして共有
  • テンプレート: VRChat ワールドの基本構成など、定型パターンの再利用

YAML フォーマット

レシピファイルは YAML 形式で記述します。

name: basic-scene-setup
description: 基本的なシーンセットアップ
version: "1.0"
author: your-name

# 変数定義(オプション)
variables:
scene_name: "MyScene"
ground_size: 50
light_intensity: 1.2

# ステップ定義
steps:
- name: シーンを作成
tool: create_scene
params:
name: "{{ scene_name }}"

- name: 地面を作成
tool: create_gameobject
params:
name: "Ground"
type: "Plane"
position: { x: 0, y: 0, z: 0 }
scale: { x: "{{ ground_size }}", y: 1, z: "{{ ground_size }}" }

- name: メインライトを配置
tool: create_light
params:
name: "MainLight"
type: "Directional"
intensity: "{{ light_intensity }}"
rotation: { x: 50, y: -30, z: 0 }

- name: カメラを配置
tool: set_camera
params:
position: { x: 0, y: 5, z: -10 }
rotation: { x: 30, y: 0, z: 0 }

- name: スクリーンショットを保存
tool: take_screenshot
params:
width: 1920
height: 1080

フォーマットの詳細

フィールド必須説明
nameはいレシピの識別名(英数字とハイフン)
descriptionはいレシピの説明
versionいいえバージョン番号
authorいいえ作成者名
variablesいいえステップ内で使用する変数の定義
stepsはい実行するツール呼び出しの配列

ステップの構造

フィールド必須説明
nameはいステップの表示名
toolはい呼び出すツール名
paramsいいえツールに渡すパラメータ
conditionいいえ実行条件(前のステップの結果を参照可能)
on_errorいいえエラー時の動作(stop または continue、既定は stop

変数の使用

変数は {{ 変数名 }} の形式でパラメータ内に埋め込めます。

variables:
color_r: 0.8
color_g: 0.2
color_b: 0.1

steps:
- name: マテリアルを作成
tool: create_material
params:
name: "CustomMaterial"
color:
r: "{{ color_r }}"
g: "{{ color_g }}"
b: "{{ color_b }}"
a: 1

レシピの実行例

VRChat ワールドの基本構成

name: vrchat-world-base
description: VRChat ワールドの基本構成をセットアップ
version: "1.0"

steps:
- name: 床を作成
tool: create_gameobject
params:
name: "Floor"
type: "Plane"
position: { x: 0, y: 0, z: 0 }
scale: { x: 10, y: 1, z: 10 }

- name: 床のマテリアルを設定
tool: create_material
params:
name: "FloorMaterial"
color: { r: 0.9, g: 0.9, b: 0.9, a: 1 }

- name: マテリアルを適用
tool: set_material
params:
target: "Floor"
material: "FloorMaterial"

- name: スポーンポイントを作成
tool: create_gameobject
params:
name: "SpawnPoint"
type: "Empty"
position: { x: 0, y: 0.5, z: 0 }

- name: ディレクショナルライト
tool: create_light
params:
name: "Sun"
type: "Directional"
intensity: 1.0
rotation: { x: 50, y: -30, z: 0 }

- name: ポイントライトを追加
tool: create_light
params:
name: "FillLight"
type: "Point"
intensity: 0.5
position: { x: 3, y: 3, z: 0 }

- name: 完成状態をスクリーンショット
tool: take_screenshot
params:
width: 1920
height: 1080

レシピの実行方法

AI クライアントから実行

AI クライアントに対して自然言語で指示します。

「vrchat-world-base レシピを実行して」

AI が run_recipe ツールを呼び出してレシピを実行します。

コマンドラインから実行

# レシピファイルを指定して実行
uvx openforge-mcp --run-recipe ./recipes/vrchat-world-base.yaml

# 変数を上書きして実行
uvx openforge-mcp --run-recipe ./recipes/basic-scene-setup.yaml \
--var scene_name="TestScene" \
--var ground_size=100

HTTP API から実行

curl -X POST http://localhost:8080/tools/run_recipe \
-H "Content-Type: application/json" \
-d '{
"recipe": "vrchat-world-base",
"variables": {
"scene_name": "MyWorld"
}
}'

利用可能なレシピの一覧

# AI クライアントから
「利用可能なレシピを一覧表示して」

# HTTP API から
curl http://localhost:8080/tools/list_recipes

レシピの保存場所

レシピファイルは以下の場所に配置します。

場所用途
./recipes/プロジェクトローカルのレシピ
~/.openforge/recipes/ユーザー共通のレシピ

プロジェクトローカルのレシピが優先されます。同名のレシピがある場合、プロジェクト側が使用されます。

レシピの共有

Git リポジトリで共有

レシピファイルをプロジェクトの recipes/ ディレクトリに含めて、Git リポジトリで管理します。

my-project/
recipes/
basic-scene-setup.yaml
vrchat-world-base.yaml
Assets/
...

コミュニティレシピ

OpenForge MCP の GitHub リポジトリでは、コミュニティが作成したレシピを公開しています。

# コミュニティレシピをダウンロード
curl -o recipes/fps-level-base.yaml \
https://raw.githubusercontent.com/hirorogo/openforge-mcp/main/recipes/fps-level-base.yaml

自作のレシピを共有する場合は、GitHub リポジトリにプルリクエストを送ってください。