关于 cmpose
@cmpose/mcp 是本地 MCP 服务,可根据经过测试的模板生成可构建的 Compose Multiplatform 应用、Unity 手机游戏和 Kotlin/Ktor 后端。面向使用 AI Agent 在本机创建项目文件的开发者,并提供可配置的模板和选项。
主要功能
- 01生成 Compose Multiplatform 应用
- 02生成 Unity 手机游戏
- 03生成 Kotlin/Ktor 后端
- 04选择模板和项目选项
- 05查询生成器默认值与规则
适用场景
- 01创建 Android 和 iOS 应用项目
- 02启动 Unity 手机游戏项目
- 03生成独立的 Ktor 后端
- 04为模板项目添加指定功能
MCP 相关
本地 stdio MCP 服务提供六个工具,用于查询生成器选项以及创建应用、游戏和后端项目。生成过程在本机运行,首次使用时下载固定版本的模板。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 天前
此工具无需参数。
详细介绍
@cmpose/mcp
向 AI Agent 描述你想要的 Compose Multiplatform 应用,即可在磁盘上获得一个真正可构建的 Android + iOS 项目。项目根据经过测试的模板在本地生成。它还可生成 Unity 移动游戏(Android + iOS)和独立的 Kotlin/Ktor 后端。这是一个本地 stdio MCP 服务,提供六个工具:cmp_describe、cmp_generate、game_describe、game_generate、backend_describe 和 backend_generate。它在你的机器上运行,无需账号、API 密钥,也不会上传任何内容。
“创建一个空白的 Compose Multiplatform 应用,名称为 Habits,包名为 com.acme.habits,放在 ~/Projects 中,并添加 Room、浅色/深色主题和 AdMob 广告。”
生成项目的开发者指南: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)、应用内评价、更新检查、关于页面、包含约定插件的 build-logic,以及一份附带发布检查清单的 README。
- 模板:
showcase(包含首页、引导和付费墙演示页面)或blank(包含示例功能的简洁框架)。 - **
blank的选项:**Ktor 网络功能(可选应用内网络检查器)、主题(浅色/深色/跟随系统)、多语言字符串、DataStore、Room(KMP,内置 SQLite)、RevenueCat 购买功能(带自定义 Compose 付费墙)、AdMob 广告(带 UMP/ATT 同意机制)、detekt、后端(Ktor 服务、Firebase 登录、分享;仅限blank;启用多语言和网络功能)、洞察(Firebase Crashlytics + Analytics;添加 Firebase 配置文件前默认关闭)。 - **自定义功能模块:**最多 3 个,每个包含 contract/data/domain/presentation 层。
- **CI:**可选的 GitHub Actions 工作流。
- **项目各处均可自定义名称:**包名、bundle id、应用名称、最低 SDK 和 iOS 部署目标。
游戏(Unity)
“创建一个名为 SkyHopper 的 2D Unity 游戏,包名为 com.acme.skyhopper,放在 ~/Projects 中,使用 blank 模板, 并包含广告和排行榜”
每个游戏项目都是 Unity 6 项目(编辑器版本为 6000.3.25f1,使用 URP),面向 Android 和 iOS,包含 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,每组 ID 都需启用对应标志;game_describe会列出相关字段。未提供的 ID 组会保留测试 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)。
“创建一个名为 NotesBackend 的后端,服务名称为 notes-api,包名为 com.acme.notes,放在 ~/Projects 中,并支持共享”
每个后端都是 Kotlin(JVM 21)Ktor 服务,使用 PostgreSQL(Exposed、Flyway),在服务端验证 Firebase ID 令牌(不使用 Admin SDK),并包含文件上传、账号删除、一个可复制的示例功能、安全检查清单、本地运行器(./gradlew runLocal),以及将其作为单个 Docker 容器部署在 nginx 后所需的配置。sharing 会添加空间、角色和邀请。
工具
cmp_describe:默认值、选项和规则(名称格式、限制,以及选项之间的依赖关系)。Agent 会先调用此工具。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;首次调用时会下载模板)。Agent 会先调用此工具。game_generate:创建游戏。必填:projectName(1 到 30 个字母或数字,且必须以字母开头)、appName(最多 30 个字符)、packageName(例如com.acme.skyhopper,至少 3 段,最多 50 个字符)和绝对路径outputDir。可选:companyName(格式与projectName相同;默认取包名的第二段并将首字母大写)、templateType、render、flags、features(模块名称:1 到 20 个小写字母或数字,且必须以字母开头)、minSdk(25 到 36)、iosVersion(15.0 到 26.2,以major.minor格式书写)、ids、theme、templateRef。它不会覆盖非空文件夹。结果会指出应用的主题(theme),并在警告中列出颜色回退。backend_describe:后端生成器的选项、appName规则、项目结构,以及添加代码时应遵循的约定(受保护的路由、404 规则、功能放置位置、安全检查清单、配额、本地运行器和部署部分)。Agent 会先调用此工具。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)。每个版本都会固定使用每个模板的一个标签,因此 @cmpose/[email protected] 始终会生成相同的项目。
源代码和问题反馈:github.com/whinstudio/cmpose。基于 MIT 许可。你生成的项目归你所有。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。