@cmpose/mcp

中文文档
2.4.5发布于 2026/11/08MITCommonJS近 30 天下载 8241

MCP server that generates buildable Compose Multiplatform (Android + iOS) projects and Unity game projects locally from any AI agent

原始使用文档
文档目录5 节
  1. Install
  2. What you get
  3. Games (Unity)
  4. Tools
  5. How it works

@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):

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

VS Code (.vscode/mcp.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.

版本与发布记录

@cmpose/mcp 共发布 47 个版本,首次发布于 2026/10/14;过去 12 个月发布了 47 个版本。

版本发布日期距今
2.4.5latest2026/11/081 天前
2.4.42026/11/073 天前
2.4.32026/11/064 天前
2.4.22026/11/054 天前
2.4.12026/11/054 天前
2.4.02026/11/055 天前

关于 @cmpose/mcp 的常见问题

@cmpose/mcp 是什么?

MCP server that generates buildable Compose Multiplatform (Android + iOS) projects and Unity game projects locally from any AI agent

如何安装 @cmpose/mcp?

在项目目录运行 npm install @cmpose/mcp,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 cmpose-mcp,可以用 npx cmpose-mcp 直接运行。

@cmpose/mcp 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/cmpose__mcp 是否存在。

@cmpose/mcp 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@cmpose/mcp 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cmpose/mcp 可以商用吗?

@cmpose/mcp 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cmpose/mcp 的下载量有多少?

根据 npm 官方下载统计,@cmpose/mcp 在 2026/10/10 – 2026/11/08 这 30 天内被下载 8,241 次,日均约 275 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cmpose/mcp 还在维护吗?

最新版本 2.4.5 发布于 2026/11/08(1 天前);至今共发布 47 个版本,其中过去 12 个月发布了 47 个;首次发布于 2026/10/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。