cmpose について
@cmpose/mcpは、テスト済みテンプレートからビルド可能なCompose Multiplatformアプリ、Unityモバイルゲーム、Kotlin/Ktorバックエンドを生成するローカルMCPサーバーです。AIエージェントで自分のマシンにプロジェクトを作成する開発者向けで、テンプレートと設定を選べます。
主な機能
- 01Compose Multiplatformアプリの生成
- 02Unityモバイルゲームの生成
- 03Kotlin/Ktorバックエンドの生成
- 04テンプレートとプロジェクト設定の選択
- 05生成ツールの既定値とルールの確認
活用シーン
- 01AndroidとiOS向けアプリの作成
- 02Unityモバイルゲームの開始
- 03単独のKtorバックエンドの生成
- 04テンプレートプロジェクトへの機能追加
MCP 対応
ローカルstdio MCPサーバーは、生成オプションの確認とアプリ、ゲーム、バックエンドの作成を行う6つのツールを提供します。生成はローカルで実行され、初回利用時に固定版テンプレートをダウンロードします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 日前に更新
このツールにパラメーターはありません。
詳細
@cmpose/mcp
AI エージェントに Compose Multiplatform アプリを依頼すると、テスト済みのテンプレートからローカルで生成された、実際にビルド可能な Android + iOS プロジェクトをディスク上に作成できます。また、Unity のモバイルゲーム(Android + iOS)と、単体で動作する Kotlin/Ktor バックエンドも生成できます。これは、6 つのツール(cmp_describe、cmp_generate、game_describe、game_generate、backend_describe、backend_generate)を備えたローカルの stdio MCP サーバーです。アカウントも API キーもアップロードも不要で、お使いのマシン上で動作します。
「Habits という名前で、パッケージを com.acme.habits とし、Room、ライト/ダークテーマ、AdMob 広告を備えた Compose Multiplatform アプリを、~/Projects に作成してください。空の状態から始めます。」
生成されたプロジェクトの開発者向けガイド:https://whinstudio.github.io/cmpose/guide.html
インストール
Node.js 20 以降と git が必要です。
Claude Code
claude mcp add -s user cmpose -- npx -y @cmpose/mcp
Claude Desktop、Cursor、Windsurf などの MCP クライアント(mcpServers 設定):
{
"mcpServers": {
"cmpose": { "command": "npx", "args": ["-y", "@cmpose/mcp"] }
}
}
VS Code(.vscode/mcp.json):
{
"servers": {
"cmpose": { "type": "stdio", "command": "npx", "args": ["-y", "@cmpose/mcp"] }
}
}
生成される内容
すべてのプロジェクトには、androidApp、iosApp(Xcode プロジェクト)、Koin と Navigation を備えた shared モジュール、ロギング(Kermit)、画像読み込み(Coil)、アプリ内レビュー、アップデート確認、About 画面、規約プラグインを備えた build-logic、リリースチェックリスト付きの README が含まれます。
- テンプレート:
showcase(ホーム、オンボーディング、ペイウォールのデモ画面)またはblank(サンプル機能を備えたシンプルなシェル)。 blankのオプション: Ktor ネットワーキング(オプションでアプリ内ネットワークインスペクターを利用可能)、テーマ(ライト/ダーク/システム)、多言語文字列、DataStore、Room(KMP、SQLite を同梱)、カスタム Compose ペイウォールを備えた RevenueCat の購入機能、UMP/ATT 同意管理を備えた AdMob 広告、detekt、バックエンド(Ktor サーバー、Firebase サインイン、共有機能。blankのみ。多言語対応とネットワーキングが有効になります)、インサイト(Firebase Crashlytics + Analytics。Firebase 設定ファイルを追加するまでは無効です)。- 独自の機能モジュール: 最大 3 つまで追加でき、それぞれに contract/data/domain/presentation レイヤーがあります。
- CI: オプションの GitHub Actions ワークフロー。
- すべての箇所に反映する名前: パッケージ、バンドル ID、アプリ名、最小 SDK、iOS のデプロイターゲット。
ゲーム(Unity)
「~/Projects に、パッケージ名 com.acme.skyhopper の SkyHopper という 2D Unity ゲームを、広告とリーダーボードを有効にして、空の状態から作成してください」
すべてのゲームプロジェクトは、Android と iOS 向けの Unity 6 プロジェクト(エディター 6000.3.25f1、URP)です。VContainer + UniTask、uGUI インターフェース、Boot → Menu → Game のシーンフロー、設定画面、保存、ディープリンク、アプリ内レビュー、アップデート確認を備えています。
- テンプレート:
showcase(すべてのフラグを有効にしたサンプルゲーム。2D ランナー、またはrender: "3d"を指定した 3D トラック)またはblank(選択したフラグを有効にした空のゲーム)。renderは2d(デフォルト)または3dです。 blankのフラグ:saveSystem、uiTheme、multiLang、network、networkInspector(networkが必要です。自動で追加されます)、purchases(RevenueCat)、ads(AdMob)、leaderboards(Google Play Games と Game Center)。- 独自の機能モジュール(
blank): 最大 3 つ。 - ID:
idsには、実際の AdMob(admob)、RevenueCat(revenueCat)、Play Games + Game Center(gameServices)の ID を指定します。各グループには対応するフラグが必要です。フィールドの一覧はgame_describeで確認できます。省略したグループにはテスト ID/プレースホルダーが残り、警告として報告されます。 - 外観(
theme): テンプレートのスタイルファミリーのいずれか(bright、neon、pastel、bold、nature、clean)。パレット、形状、動き、フォントの組み合わせで構成されます。各ファミリーの用途とともに、game_describeのthemesに一覧表示されています。theme: { family, primary, accent, fontPair }の各フィールドは省略可能です。primaryとaccent(#RRGGBB)を指定すると、テキストとボタンのコントラストが保たれるよう明度を調整して、ファミリーの配色を変更します。それでも条件を満たせない色はファミリーの色が維持され、警告として報告されます。themeを指定しない場合、プロジェクトにはテンプレートそのままのcleanが適用されます。 - 各所で使う名前: パッケージ(アプリケーション識別子)、会社名、アプリ名、最小 SDK(25~36)、iOS のデプロイメントターゲット(15.0~26.2)。
「~/Projects に、サービス名 notes-api、パッケージ名 com.acme.notes の NotesBackend というバックエンドを、共有機能を有効にして作成してください」
すべてのバックエンドは、PostgreSQL(Exposed、Flyway)を使用する Kotlin(JVM 21)の Ktor サーバーです。Firebase ID トークンはサーバー上で検証され(Admin SDK は使用しません)、ファイルアップロード、アカウント削除、コピーして使えるサンプル機能 1 つ、セキュリティチェックリスト、ローカルランナー(./gradlew runLocal)、nginx の背後で 1 つの Docker コンテナとしてデプロイするための一式を備えています。sharing を有効にすると、スペース、ロール、招待が追加されます。
ツール
cmp_describe:デフォルト、オプション、ルール(名前の形式、制限、各オプションが必要とする条件)を説明します。エージェントは最初に呼び出します。cmp_generate:プロジェクトを作成します。必須項目:projectName(英字のみ、最大30文字)、appName(最大30文字)、packageName(例:com.acme.habits、最大50文字)、絶対パスのoutputDir。オプション:templateType、features(最大20個のモジュール名)、featuresConfig、minSdk(24~36)、iosVersion(15.0~26.2)、ci、templateRef、backendTemplateRef(server/の生成元となるバックエンドテンプレートのタグ。バックエンドのみの場合は空欄)。 プロジェクトのパス、使用したテンプレートのバージョン、警告(置き換えが必要なテスト用広告IDなど)、次の手順を返します。game_describe:Unityゲームジェネレーターのエンジンとエディターのバージョン、テンプレートの種類、レンダリング方式、フラグとその依存関係、IDグループ、デフォルト、制限、ピン留めされたテンプレートのテーマファミリー(themes:defaultと各ファミリーのid、title、suits、fontPairs。初回呼び出し時にテンプレートをダウンロードします)を説明します。エージェントは最初に呼び出します。game_generate:ゲームを作成します。必須項目:projectName(英字または数字1~30文字、先頭は英字)、appName(最大30文字)、packageName(例:com.acme.skyhopper、3セグメント以上、最大50文字)、絶対パスのoutputDir。オプション:companyName(projectNameと同様。デフォルトはパッケージの2番目のセグメントを大文字にしたもの)、templateType、render、flags、features(モジュール名:小文字の英字または数字1~20文字、先頭は英字)、minSdk(25~36)、iosVersion(15.0~26.2、major.minor形式)、ids、theme、templateRef。空でないフォルダーを上書きすることはありません。結果には適用されたテーマ(theme)が示され、警告には色のフォールバックが記載されます。backend_describe:バックエンドジェネレーターのオプション、appNameのルール、プロジェクトの構成、コード追加時に従う規約(保護されたルート、404のルール、機能の配置場所、セキュリティチェックリスト、クォータ、ローカルランナー、デプロイ関連の項目)を説明します。エージェントは最初に呼び出します。backend_generate:バックエンドを作成します。必須項目:projectName(英字のみ、最大30文字)、appName(サービス名:小文字の英字、数字、または-で2~31文字、先頭は英字。api、health、admin、staticは不可)、packageName(例:com.acme.notes)、絶対パスのoutputDir。オプション:sharing(デフォルトはfalse)、sample(サンプル項目機能。デフォルトはtrue)、templateRef。空でないフォルダーを上書きすることはありません。CMPOSE_BACKEND_TEMPLATE_DIR(バックエンドテンプレートのチェックアウト先の絶対パス)を指定すると、ピン留めされたタグではなく、そのチェックアウト先から生成します。
動作の仕組み
生成処理はすべてお使いのマシン上で実行されます。初回の呼び出しでは、ピン留めされたテンプレート(whinstudio/cmpose-template)を~/.cache/cmposeにダウンロードします(CMPOSE_CACHE_DIRで変更可能)。以降の呼び出しでは、ダウンロード済みのテンプレートを再利用します。ゲームも同様に、ピン留めされたゲームテンプレート(whinstudio/cmpose-game-template)から生成します。生成中にUnityが実行されることはありません。バックエンドはピン留めされたバックエンドテンプレート(whinstudio/cmpose-backend-template)から生成します。各リリースでは各テンプレートのタグが1つずつピン留めされるため、@cmpose/[email protected]は常に同じプロジェクトを生成します。
ソースコードと課題:github.com/whinstudio/cmpose。 MITライセンスです。生成したプロジェクトはご自身のものです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。