@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 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+) and iOS deployment target (15.0+).
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), `appName`,
83
- `packageName` (e.g. `com.acme.habits`) and an absolute `outputDir`. Optional:
84
- `templateType`, `features`, `featuresConfig`, `minSdk`, `iosVersion`, `ci`, `templateRef`.
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, starting with
90
- a letter), `appName`, `packageName` (e.g. `com.acme.skyhopper`) and an absolute `outputDir`.
91
- Optional: `companyName`, `templateType`, `render`, `flags`, `features`, `minSdk`,
92
- `iosVersion`, `ci`, `ids`, `templateRef`. It never overwrites a non-empty folder.
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.1",
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.1",
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"
@@ -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'),