@cmpose/mcp 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -9
- package/package.json +2 -2
- package/src/gameGenerate.js +1 -0
- package/src/server.js +0 -1
package/README.md
CHANGED
|
@@ -71,25 +71,28 @@ saving, deep links, and in-app review and update check.
|
|
|
71
71
|
- **IDs:** `ids` takes your real AdMob (`admob`), RevenueCat (`revenueCat`) and Play Games +
|
|
72
72
|
Game Center (`gameServices`) IDs, each group with its flag; `game_describe` lists the fields.
|
|
73
73
|
A group you leave out keeps the test IDs / placeholders and is reported as a warning.
|
|
74
|
-
- **CI:** an optional GitHub Actions workflow with GameCI.
|
|
75
74
|
- **Your names everywhere:** package (application identifier), company name, app name, min SDK
|
|
76
|
-
(25
|
|
75
|
+
(25 to 36) and iOS deployment target (15.0 to 26.2).
|
|
77
76
|
|
|
78
77
|
## Tools
|
|
79
78
|
|
|
80
79
|
- `cmp_describe`: the defaults, the options and the rules (name formats, limits, which option
|
|
81
80
|
needs which). Agents call it first.
|
|
82
|
-
- `cmp_generate`: creates the project. Required: `projectName` (letters only),
|
|
83
|
-
`packageName` (e.g. `com.acme.habits
|
|
84
|
-
`templateType`, `features
|
|
81
|
+
- `cmp_generate`: creates the project. Required: `projectName` (letters only, up to 30),
|
|
82
|
+
`appName` (up to 30 characters), `packageName` (e.g. `com.acme.habits`, up to 50 characters)
|
|
83
|
+
and an absolute `outputDir`. Optional: `templateType`, `features` (module names up to 20),
|
|
84
|
+
`featuresConfig`, `minSdk` (24 to 36), `iosVersion` (15.0 to 26.2), `ci`, `templateRef`.
|
|
85
85
|
It returns the project path, the template version it used, warnings (e.g. test ad IDs to
|
|
86
86
|
replace) and next steps.
|
|
87
87
|
- `game_describe`: the Unity game generator's engine and editor version, template types,
|
|
88
88
|
renders, flags and their dependencies, ID groups, defaults and limits. Agents call it first.
|
|
89
|
-
- `game_generate`: creates the game. Required: `projectName` (letters or digits,
|
|
90
|
-
a letter), `appName
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
- `game_generate`: creates the game. Required: `projectName` (1 to 30 letters or digits,
|
|
90
|
+
starting with a letter), `appName` (up to 30 characters), `packageName` (e.g.
|
|
91
|
+
`com.acme.skyhopper`, at least 3 segments, up to 50 characters) and an absolute `outputDir`.
|
|
92
|
+
Optional: `companyName` (like `projectName`; by default the package's second segment,
|
|
93
|
+
capitalized), `templateType`, `render`, `flags`, `features` (module names: 1 to 20 lowercase
|
|
94
|
+
letters or digits, starting with a letter), `minSdk` (25 to 36), `iosVersion` (15.0 to 26.2,
|
|
95
|
+
written as `major.minor`), `ids`, `templateRef`. It never overwrites a non-empty folder.
|
|
93
96
|
|
|
94
97
|
## How it works
|
|
95
98
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cmpose/mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"mcpName": "io.github.Keremturker/cmpose",
|
|
5
5
|
"description": "MCP server that generates buildable Compose Multiplatform (Android + iOS) projects and Unity game projects locally from any AI agent",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"test": "node --test test/*.test.js"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@cmpose/core": "0.2.
|
|
46
|
+
"@cmpose/core": "0.2.3",
|
|
47
47
|
"@modelcontextprotocol/sdk": "1.32.1",
|
|
48
48
|
"fs-extra": "^11.3.2",
|
|
49
49
|
"zod": "3.25.76"
|
package/src/gameGenerate.js
CHANGED
|
@@ -44,6 +44,7 @@ async function runGameGenerate(args, { cacheDir, remoteUrl, onProgress = () => {
|
|
|
44
44
|
onProgress('Generating the project');
|
|
45
45
|
await fs.copy(cache.dir, work);
|
|
46
46
|
const source = { repo: core.pins.game.repo, ref: cache.ref, commit: cache.commit };
|
|
47
|
+
// Called through core.game at call time (never destructured): the tests replace it to fail mid-generation
|
|
47
48
|
const summary = await core.game.generateGame(value, {
|
|
48
49
|
projectDir: work, template: source, coreVersion: core.version, generatorVersion, ...(now ? { now } : {})
|
|
49
50
|
});
|
package/src/server.js
CHANGED
|
@@ -87,7 +87,6 @@ function createServer({ cacheDir, remoteUrl } = {}) {
|
|
|
87
87
|
features: z.array(z.string()).optional().describe('blank only: extra feature modules (lower case names)'),
|
|
88
88
|
minSdk: z.union([z.string(), z.number()]).optional().describe('Android min SDK, e.g. "25" or 25'),
|
|
89
89
|
iosVersion: z.union([z.string(), z.number()]).optional().describe('iOS deployment target, e.g. "15.0"'),
|
|
90
|
-
ci: z.boolean().optional(),
|
|
91
90
|
ids: z.record(z.string(), z.record(z.string(), z.string())).optional()
|
|
92
91
|
.describe('Real IDs by group (admob, revenueCat, gameServices; fields in game_describe), each needing its flag. ' +
|
|
93
92
|
'A group left out keeps the test IDs / placeholders, reported as a warning'),
|