cmpose

io.github.Keremturker由 GitHub 帳號 Keremturker 發布v2.4.4更新於 Nov 7, 2026

Generate Compose Multiplatform apps, Unity games and Ktor backends locally from tested templates.

已驗證STDIO僅桌面檔案與儲存開發者工具

概覽

AI 產生的概覽

在本機依固定範本產生 Compose Multiplatform 應用程式、Unity 手機遊戲與 Kotlin/Ktor 後端專案。

可以做什麼
  • 查詢產生器說明:列出 Compose、Unity 與 Ktor 的範本類型、功能開關、預設值、驗證限制與主題系列。
  • 產生 Compose Multiplatform 專案:Android + iOS 應用程式,含 shared 模組,可選 Room、Ktor、主題、廣告、內購與 CI。
  • 產生 Unity 6 手機遊戲:2D 或 3D,可選存檔、廣告、排行榜、內購與主題系列。
  • 產生 Kotlin/Ktor 後端:PostgreSQL、Firebase 權杖驗證、檔案上傳、可選共享功能,可直接以 Docker 部署。
適用情境
適合讓助理依經過測試的範本在磁碟上建立新的行動應用程式、Unity 遊戲或後端專案,而不必手寫樣板程式碼,並同時取得可用選項與產生時的警告。
執行需求
以本機 stdio 程序透過 npx 執行,需要 Node.js 20+ 與 git。不需帳號、API 金鑰或請求標頭。首次呼叫會把固定範本下載到快取目錄(可用 CMPOSE_CACHE_DIR 覆寫),因此需要網路;CMPOSE_BACKEND_TEMPLATE_DIR 可指向本機的後端範本檢出目錄。
安裝前請注意
產生類工具會將新專案資料夾寫入指定的絕對輸出目錄;雖不會覆寫非空資料夾,仍會在磁碟上建立檔案。產生的專案可能帶有 AdMob、RevenueCat 與遊戲服務的測試 ID 或預留 ID,發布前必須替換。範本於首次使用時從第三方儲存庫下載。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 cmpose,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@cmpose/mcp

Ask your AI agent for a Compose Multiplatform app and get a real, buildable Android + iOS project on disk, generated locally from a tested template. It also generates Unity mobile games (Android + iOS) and standalone Kotlin/Ktor backends. This is a local stdio MCP server with six tools: cmp_describe, cmp_generate, game_describe, game_generate, backend_describe and backend_generate. It runs on your machine, with no account, no API key and no upload.

"Create a blank Compose Multiplatform app called Habits, package com.acme.habits, in ~/Projects, with Room, light/dark theming and AdMob ads."

Developer guide for generated projects: https://whinstudio.github.io/cmpose/guide.html

Install

Requires Node.js 20+ and git.

Claude Code

claude mcp add -s user cmpose -- npx -y @cmpose/mcp

Claude Desktop, Cursor, Windsurf and other MCP clients (mcpServers config):

json
{  "mcpServers": {    "cmpose": { "command": "npx", "args": ["-y", "@cmpose/mcp"] }  }}

VS Code (.vscode/mcp.json):

json
{  "servers": {    "cmpose": { "type": "stdio", "command": "npx", "args": ["-y", "@cmpose/mcp"] }  }}

What you get

Every project has androidApp, iosApp (Xcode project), a shared module with Koin and Navigation, logging (Kermit), image loading (Coil), in-app review, update check, an About screen, a build-logic with convention plugins, and a README with a release checklist.

  • Template: showcase (home, onboarding and paywall demo screens) or blank (a start screen that lists your modules and a demo of each option you pick).
  • Options for blank: Ktor networking (with an optional in-app network inspector), theming (light/dark/system), multi-language strings, DataStore, Room (KMP, bundled SQLite), RevenueCat purchases with a custom Compose paywall, AdMob ads with UMP/ATT consent, detekt, backend (Ktor server, Firebase sign-in, sharing; blank only; turns on multi-language and networking), insights (Firebase Crashlytics + Analytics; off until you add the Firebase config files).
  • Your own feature modules: up to 3, each with contract/data/domain/presentation layers.
  • CI: an optional GitHub Actions workflow.
  • Your names everywhere: package, bundle id, app name, min SDK and iOS deployment target.

Games (Unity)

"Create a 2D Unity game called SkyHopper, package com.acme.skyhopper, in ~/Projects, blank, with ads and leaderboards"

Every game project is a Unity 6 project (editor 6000.3.25f1, URP) for Android and iOS, with VContainer + UniTask, a uGUI interface, a Boot → Menu → Game scene flow, a settings screen, saving, deep links, and in-app review and update check.

  • Template: showcase (a sample game with every flag on: a 2D runner, or a 3D track with render: "3d") or blank (an empty game with the flags you pick). render is 2d (default) or 3d.
  • Flags for blank: saveSystem, multiLang, network, networkInspector (needs network, added for you), purchases (RevenueCat), ads (AdMob), leaderboards (Google Play Games and Game Center) and insights (Firebase Crashlytics + Analytics; off until you add google-services.json and GoogleService-Info.plist to Assets/Firebase, reported as a warning).
  • Your own feature modules (blank): up to 3.
  • IDs: ids takes your real AdMob (admob), RevenueCat (revenueCat) and Play Games + Game Center (gameServices) IDs, each group with its flag; game_describe lists the fields. A group you leave out keeps the test IDs / placeholders and is reported as a warning.
  • Look (theme): one of the template's style families (bright, neon, pastel, bold, nature, clean; palette, shapes, motion and a font pair), listed by game_describe under themes with what each suits. theme: { family, primary, accent, fontPair }, every field optional: primary and accent (#RRGGBB) recolour the family with their lightness shifted until text and buttons keep their contrast; a colour that still cannot pass keeps the family's and is reported as a warning. Without theme the project gets clean, exactly as the template ships it.
  • Your names everywhere: package (application identifier), company name, app name, min SDK (25 to 36) and iOS deployment target (15.0 to 26.2).

"Create a backend called NotesBackend, service name notes-api, package com.acme.notes, in ~/Projects, with sharing"

Every backend is a Kotlin (JVM 21) Ktor server with PostgreSQL (Exposed, Flyway), Firebase ID tokens verified on the server (no Admin SDK), file uploads, account deletion, one sample feature to copy, a security checklist, a local runner (./gradlew runLocal) and the parts to deploy it as one Docker container behind nginx. sharing adds spaces, roles and invitations.

Tools

  • cmp_describe: the defaults, the options and the rules (name formats, limits, which option needs which). Agents call it first.
  • cmp_generate: creates the project. Required: projectName (letters only, up to 30), appName (up to 30 characters), packageName (e.g. com.acme.habits, up to 50 characters) and an absolute outputDir. Optional: templateType, features (module names up to 20), featuresConfig, minSdk (24 to 36), iosVersion (15.0 to 26.2), ci, templateRef, backendTemplateRef (the backend template tag that server/ comes from; blank with the backend only). It returns the project path, the template version it used, warnings (e.g. test ad IDs to replace) and next steps.
  • game_describe: the Unity game generator's engine and editor version, template types, renders, flags and their dependencies, ID groups, defaults, limits and the pinned template's theme families (themes: default and each family's id, title, suits and fontPairs; the first call downloads the template). Agents call it first.
  • game_generate: creates the game. Required: projectName (1 to 30 letters or digits, starting with a letter), appName (up to 30 characters), packageName (e.g. com.acme.skyhopper, at least 3 segments, up to 50 characters) and an absolute outputDir. Optional: companyName (like projectName; by default the package's second segment, capitalized), templateType, render, flags, features (module names: 1 to 20 lowercase letters or digits, starting with a letter), minSdk (25 to 36), iosVersion (15.0 to 26.2, written as major.minor), ids, theme, templateRef. It never overwrites a non-empty folder. The result names the applied theme (theme) and lists colour fallbacks among the warnings.
  • backend_describe: the backend generator's options, appName rules, the project anatomy and the conventions to follow when adding code (protected routes, the 404 rule, where features go, the security checklist, the quotas, the local runner and the deploy parts). Agents call it first.
  • backend_generate: creates the backend. Required: projectName (letters only, up to 30), appName (the service name: 2 to 31 lowercase letters, digits or -, starting with a letter; not api, health, admin or static), packageName (e.g. com.acme.notes) and an absolute outputDir. Optional: sharing (default false), sample (the sample items feature, default true), templateRef. It never overwrites a non-empty folder. CMPOSE_BACKEND_TEMPLATE_DIR (the absolute path of a backend template checkout) generates from that checkout instead of the pinned tag.

How it works

Generation runs entirely on your machine. The first call downloads the pinned template (whinstudio/cmpose-template) into $XDG_CACHE_HOME/cmpose (else ~/.cache/cmpose; override with CMPOSE_CACHE_DIR), and later calls reuse it. Games come the same way from the pinned game template (whinstudio/cmpose-game-template); Unity never runs during generation. Backends come from the pinned backend template (whinstudio/cmpose-backend-template). Each release pins one tag of each template, so @cmpose/[email protected] always generates the same project.

Source and issues: github.com/whinstudio/cmpose. MIT licensed. The projects you generate are yours.

來源:packages/mcp/README.md,提交 4292a21

工具

6

cmp_describe

Describe the cmpose generator: template types, featuresConfig flags and defaults, dependency rules, validation limits and the pinned template.

無需輸入參數。

cmp_generate

Generate a Compose Multiplatform (Android + iOS) project on this machine. Call cmp_describe first for the options, defaults and validation rules. Writes <outputDir>/<projectName>; never overwrites an existing non-empty folder.

輸入參數ciminSdkappName必填featuresoutputDir必填iosVersionpackageName必填projectName必填templateReftemplateTypefeaturesConfigbackendTemplateRef

game_describe

Describe the Unity game generator: engine and editor version, template types, renders, flags and their dependencies, ID groups, defaults, validation limits, the pinned game template and its theme families (themes: default, and each family's id, title, suits and fontPairs).

無需輸入參數。

game_generate

Generate a Unity 6 (Android + iOS) mobile game project on this machine. Call game_describe first for the flags, defaults and validation rules. showcase has every flag on; flags and features apply to blank only. theme picks one of the style families game_describe lists under themes (palette, shapes, motion, fonts; match the family whose suits fits the game) and optionally a fontPair of that family. primary and accent (#RRGGBB) recolour the family: their lightness is shifted until text and buttons keep their contrast, and a colour that still cannot pass falls back to the family default with a warning. Without theme the template default family (clean) is used. Writes <outputDir>/<projectName>; never overwrites an existing non-empty folder.

輸入參數idsflagsthememinSdkrenderappName必填featuresoutputDir必填iosVersioncompanyNamepackageName必填projectName必填另有 2 個

backend_describe

Describe the Kotlin/Ktor backend generator: options, appName rules, the project anatomy, the pinned backend template and the conventions to follow when writing code in a generated backend.

無需輸入參數。

backend_generate

Generate a standalone Kotlin/Ktor backend (Docker-ready) on this machine. Call backend_describe first. Writes <outputDir>/<projectName>; never overwrites an existing non-empty folder.

輸入參數sampleappName必填sharingoutputDir必填packageName必填projectName必填templateRef

版本歷史

33
  1. v2.4.4最新Nov 7, 2026
  2. v2.4.3Nov 6, 2026
  3. v2.4.2Nov 5, 2026
  4. v2.4.1Nov 5, 2026
  5. v2.4.0Nov 5, 2026
  6. v2.3.1Nov 4, 2026
  7. v2.3.0Nov 4, 2026
  8. v2.2.1Nov 3, 2026
  9. v2.2.0Nov 3, 2026
  10. v2.1.0Nov 3, 2026
  11. v1.0.0Nov 1, 2026
  12. v0.8.9Oct 29, 2026
  13. v0.8.5Oct 26, 2026
  14. v0.8.4Oct 22, 2026
  15. v0.8.3Oct 22, 2026
  16. v0.8.2Oct 21, 2026
  17. v0.8.1Oct 21, 2026
  18. v0.7.0Oct 21, 2026
  19. v0.6.1Oct 20, 2026
  20. v0.6.0Oct 20, 2026
  21. v0.5.3Oct 19, 2026
  22. v0.5.2Oct 18, 2026
  23. v0.4.0Oct 17, 2026
  24. v0.3.0Oct 17, 2026
  25. v0.2.8Oct 16, 2026
  26. v0.2.7Oct 16, 2026
  27. v0.2.6Oct 16, 2026
  28. v0.2.4Oct 15, 2026
  29. v0.2.3Oct 15, 2026
  30. v0.2.2Oct 15, 2026
  31. v0.2.1Oct 14, 2026
  32. v0.2.0Oct 14, 2026
  33. v0.1.2Oct 14, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分