Skip to main content
Glama

RPG Maker MZ MCP Server

PROMPTS_AND_RESOURCES.md15.3 kB
# 🎯 プロンプト&リソース管理ガイド MCPツールをより柔軟に活用するためのプロンプトテンプレートとリソース管理システム --- ## 🌟 概要 ### リソース管理システムとは **リソース** = ゲーム開発で再利用可能なデータ - テンプレート(キャラクター設定、マップレイアウトなど) - アセット情報(画像の説明、使用箇所) - シナリオデータ(ストーリー、会話) - カスタムデータ(任意のJSON) ### プロンプトテンプレートとは **プロンプト** = AI生成時に使う指示文のテンプレート - 変数プレースホルダー: `{{theme}}`, `{{style}}` - リソース参照: `{{resource:resource_id}}` - 再利用可能 --- ## 🚀 クイックスタート ### 1. リソースを登録 ```typescript await register_resource({ project_path: "/path/to/project", resource_id: "hero_template", resource_type: "template", name: "標準的な勇者キャラクター", description: "ファンタジーRPGの主人公テンプレート", content: { name: "勇者", class: "戦士", initialLevel: 1, traits: ["勇敢", "正義感が強い"] }, tags: ["character", "hero", "template"] }); ``` ### 2. プロンプトテンプレートを登録 ```typescript await register_prompt_template({ project_path: "/path/to/project", prompt_id: "create_hero_dialogue", name: "勇者の会話生成", description: "勇者キャラクターの会話を生成", template: `Create dialogue for a hero character: Name: {{heroName}} Personality: {{personality}} Situation: {{situation}} Character template: {{resource:hero_template}} Generate 3-5 dialogue lines that fit the character.`, variables: ["heroName", "personality", "situation"], resource_refs: ["hero_template"] }); ``` ### 3. プロンプトを実行 ```typescript await execute_prompt({ project_path: "/path/to/project", prompt_id: "create_hero_dialogue", variables: { heroName: "アレックス", personality: "勇敢で正義感が強い", situation: "村長から依頼を受ける" } }); ``` **結果**: ``` Create dialogue for a hero character: Name: アレックス Personality: 勇敢で正義感が強い Situation: 村長から依頼を受ける Character template: { "name": "勇者", "class": "戦士", ... } Generate 3-5 dialogue lines that fit the character. ``` --- ## 📚 実践例 ### 例1: キャラクターテンプレート管理 ```typescript // 1. 複数のキャラクタータイプをリソース登録 await register_resource({ project_path: "/path/to/project", resource_id: "warrior_template", resource_type: "template", name: "戦士テンプレート", content: { class: "戦士", baseHP: 100, baseMP: 20, weapons: ["sword", "axe"], skills: ["強撃", "防御"] }, tags: ["character", "warrior"] }); await register_resource({ project_path: "/path/to/project", resource_id: "mage_template", resource_type: "template", name: "魔法使いテンプレート", content: { class: "魔法使い", baseHP: 60, baseMP: 100, weapons: ["staff"], skills: ["ファイア", "サンダー", "ブリザド"] }, tags: ["character", "mage"] }); // 2. リソース一覧取得 await list_resources({ project_path: "/path/to/project", tags: ["character"] }); // 結果: warrior_template, mage_template が返される ``` --- ### 例2: シナリオ生成プロンプト ```typescript // 1. ゲーム世界設定をリソース登録 await register_resource({ project_path: "/path/to/project", resource_id: "world_setting", resource_type: "data", name: "世界設定", content: { worldName: "エルドラシア王国", era: "中世ファンタジー", threats: ["古代のドラゴン", "魔王軍"], factions: ["王国騎士団", "魔法使いギルド", "盗賊ギルド"] }, tags: ["world", "setting"] }); // 2. シナリオ生成プロンプトを登録 await register_prompt_template({ project_path: "/path/to/project", prompt_id: "generate_chapter", name: "チャプター生成", template: `Create a story chapter for: World: {{resource:world_setting}} Chapter Number: {{chapterNumber}} Theme: {{theme}} Main Quest: {{mainQuest}} Generate: - Chapter title - Story synopsis (200-300 words) - 3-5 key events - Character developments - Next chapter hook`, variables: ["chapterNumber", "theme", "mainQuest"], resource_refs: ["world_setting"] }); // 3. 実行 await execute_prompt({ project_path: "/path/to/project", prompt_id: "generate_chapter", variables: { chapterNumber: 1, theme: "王女の誘拐", mainQuest: "王女を救出せよ" } }); ``` --- ### 例3: アセット生成プロンプト ```typescript // 1. アートスタイルをリソース登録 await register_resource({ project_path: "/path/to/project", resource_id: "art_style", resource_type: "asset", name: "ゲームアートスタイル", content: { style: "ピクセルアート", colorPalette: ["#8B4513", "#228B22", "#4169E1", "#FFD700"], resolution: "16bit風", reference: "スーパーファミコン時代のRPG" }, tags: ["art", "style"] }); // 2. アセット生成プロンプト await register_prompt_template({ project_path: "/path/to/project", prompt_id: "generate_character_sprite", name: "キャラクタースプライト生成", template: `Generate character sprite: Art Style: {{resource:art_style}} Character: {{characterName}} Description: {{description}} Role: {{role}} Technical requirements: - Size: 144x192 pixels - Format: PNG - Grid: 3x4 (walking animation) - Transparent background`, variables: ["characterName", "description", "role"], resource_refs: ["art_style"] }); ``` --- ## 🔧 高度な使い方 ### パターン1: マルチステッププロンプト ```typescript // Step 1: ベースストーリー生成 await register_prompt_template({ project_path: "/path/to/project", prompt_id: "step1_base_story", name: "ベースストーリー", template: "Create base story for: {{concept}}", variables: ["concept"] }); // Step 2: ストーリーを元にキャラクター生成 await register_prompt_template({ project_path: "/path/to/project", prompt_id: "step2_characters", name: "キャラクター生成", template: `Based on story: {{resource:generated_story}} Generate main characters.`, variables: [], resource_refs: ["generated_story"] }); // Step 3: マップ生成 await register_prompt_template({ project_path: "/path/to/project", prompt_id: "step3_maps", name: "マップ生成", template: `Story: {{resource:generated_story}} Characters: {{resource:generated_characters}} Generate maps.`, variables: [], resource_refs: ["generated_story", "generated_characters"] }); ``` ### パターン2: バリエーション生成 ```typescript // ベーステンプレート await register_resource({ project_path: "/path/to/project", resource_id: "enemy_base", resource_type: "template", name: "敵キャラベース", content: { dropRate: 0.3, expMultiplier: 1.0, goldMultiplier: 1.0 } }); // 難易度別プロンプト await register_prompt_template({ project_path: "/path/to/project", prompt_id: "enemy_by_difficulty", name: "難易度別敵生成", template: `Generate enemy: Base template: {{resource:enemy_base}} Name: {{enemyName}} Difficulty: {{difficulty}} Adjust stats based on difficulty (easy: 0.8x, normal: 1.0x, hard: 1.5x)`, variables: ["enemyName", "difficulty"], resource_refs: ["enemy_base"] }); ``` --- ## 📊 リソース管理 ### リソース一覧表示 ```typescript // 全リソース await list_resources({ project_path: "/path/to/project" }); // タイプでフィルター await list_resources({ project_path: "/path/to/project", type: "template" }); // タグでフィルター await list_resources({ project_path: "/path/to/project", tags: ["character", "hero"] }); ``` ### リソース取得 ```typescript const result = await getResource({ project_path: "/path/to/project", resource_id: "hero_template" }); if (result.success) { console.log(result.resource.content); } ``` --- ## 💡 ベストプラクティス ### 1. リソースIDの命名規則 ``` ✅ 良い例: - hero_template - world_setting_chapter1 - art_style_fantasy ❌ 悪い例: - temp1 - data - abc123 ``` ### 2. リソースの粒度 ``` ✅ 適切: - キャラクタータイプごとにテンプレート - チャプターごとに設定 - テーマごとにアートスタイル ❌ 粗すぎ: - 全キャラクターを1つのリソースに - ゲーム全体の設定を1つに ``` ### 3. プロンプトの再利用性 ```typescript // ✅ 再利用しやすい template: "Generate {{objectType}} for {{theme}} with {{style}} style" // ❌ 固定値が多すぎる template: "Generate warrior character for fantasy theme with epic style" ``` --- ## 🎯 実践ワークフロー ### ワークフロー: RPGシリーズ開発 ```typescript // Phase 1: 共通リソース登録 await register_resource({ project_path: "/project", resource_id: "series_world", resource_type: "data", name: "シリーズ世界観", content: { ... } }); // Phase 2: 作品1 await execute_prompt({ project_path: "/project1", prompt_id: "generate_story", variables: { title: "第1章", worldData: "{{resource:series_world}}" } }); // Phase 3: 作品2(同じ世界観) await execute_prompt({ project_path: "/project2", prompt_id: "generate_story", variables: { title: "第2章", worldData: "{{resource:series_world}}" // 同じリソース再利用 } }); ``` --- ## 📖 デフォルトプロンプト プロジェクト作成時に以下のプロンプトテンプレートが自動登録されます: ### 1. scenario_generation シナリオ生成用テンプレート **変数**: - theme - style - length - mapCount - characterCount ### 2. asset_generation アセット生成用テンプレート **変数**: - assetType - description - style - specs ### 3. quest_generation クエスト生成用テンプレート **変数**: - questCount - theme - difficulty - objectiveCount --- ## 🔍 データベース検索 ### 敵キャラ検索 ```typescript await search_database({ project_path: "/path/to/project", types: ["enemy"], name_contains: "dragon" }); ``` ### レベル範囲でアクター検索 ```typescript await search_database({ project_path: "/path/to/project", types: ["actor"], id_min: 1, id_max: 10 }); ``` --- ## 🎨 アセット分析 ### 全アセット分析 ```typescript await analyze_assets({ project_path: "/path/to/project" }); ``` **生成レポート**: - 総アセット数 - 使用中/未使用アセット - タイプ別統計 - 最適化推奨事項 - 大きなファイルリスト --- ## 💼 実用例 ### 例1: テンプレートベース開発 ```typescript // 1. NPC会話テンプレート await register_resource({ project_path: "/project", resource_id: "npc_greeting", resource_type: "template", name: "NPC挨拶テンプレート", content: { greetings: [ "ようこそ、{{villageNa}}へ!", "こんにちは、旅の方。", "お困りのことは?" ] } }); // 2. 使用 const resource = await getResource({ project_path: "/project", resource_id: "npc_greeting" }); // 3. イベントに適用 for (const greeting of resource.resource.content.greetings) { await add_event_command({ ... parameters: [greeting.replace("{{villageName}}", "エルドリア村")] }); } ``` ### 例2: バリエーション生成 ```typescript // ベース敵テンプレート await register_resource({ project_path: "/project", resource_id: "slime_base", resource_type: "data", name: "スライムベース", content: { hp: 50, attack: 10, defense: 5, exp: 10, gold: 5 } }); // バリエーションプロンプト await register_prompt_template({ project_path: "/project", prompt_id: "slime_variant", name: "スライム亜種生成", template: `Base: {{resource:slime_base}} Variant: {{variantName}} Element: {{element}} Create variant with: - {{element}} elemental damage - Adjusted stats for difficulty {{difficulty}}`, variables: ["variantName", "element", "difficulty"], resource_refs: ["slime_base"] }); // 生成 await execute_prompt({ project_path: "/project", prompt_id: "slime_variant", variables: { variantName: "Fire Slime", element: "fire", difficulty: "hard" } }); ``` --- ## 🎓 高度な活用 ### パターン: コンテキスト継承 ```typescript // Chapter 1 の結果をリソース化 await register_resource({ project_path: "/project", resource_id: "chapter1_result", resource_type: "scenario", name: "第1章の結果", content: { ending: "王女救出成功", charactersStatus: { ... }, unlockedAreas: ["城下町", "森"] } }); // Chapter 2 で前章の結果を参照 await register_prompt_template({ project_path: "/project", prompt_id: "chapter2_story", name: "第2章ストーリー", template: `Previous chapter: {{resource:chapter1_result}} New theme: {{theme}} Continue the story...`, variables: ["theme"], resource_refs: ["chapter1_result"] }); ``` --- ## 📋 MCPツール一覧(リソース&プロンプト) | ツール名 | 説明 | |---------|------| | `register_resource` | リソース登録 | | `register_prompt_template` | プロンプトテンプレート登録 | | `execute_prompt` | プロンプト実行 | | `list_resources` | リソース一覧 | | `search_database` | データベース検索 | | `analyze_assets` | アセット分析 | --- ## 🔍 トラブルシューティング ### Q: リソースが見つからない ```bash # レジストリファイル確認 cat /path/to/project/data/ResourceRegistry.json ``` ### Q: プロンプトが正しく展開されない 変数名を確認: ```typescript // ✅ 正しい variables: ["theme", "style"] // template: "Theme: {{theme}}, Style: {{style}}" // ❌ 間違い variables: ["theme"] // template: "Theme: {{theme}}, Style: {{style}}" // style が未定義 ``` ### Q: リソース参照が動作しない リソースIDを確認: ```typescript resource_refs: ["hero_template"] // ← 登録したIDと一致するか ``` --- ## 🎉 まとめ リソース&プロンプト管理により: - ✅ **再利用性向上**: テンプレートを使い回し - ✅ **一貫性保持**: 世界観・設定を統一 - ✅ **効率化**: 同じ作業の繰り返しを削減 - ✅ **柔軟性**: 変数で簡単にバリエーション生成 - ✅ **拡張性**: カスタムデータを自由に管理 **プロンプト&リソースでRPG開発がさらに10倍効率化!🚀** --- ## 📚 関連ドキュメント - [README.md](./README.md) - 全機能 - [GETTING_STARTED.md](./GETTING_STARTED.md) - 初心者向け - [WORKFLOWS.md](./WORKFLOWS.md) - ワークフロー例 - [MCP_TOOLS_GUIDE.md](./MCP_TOOLS_GUIDE.md) - ツール詳細

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ShunsukeHayashi/rpgmaker-mz-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server