appium-mcp 1.72.1 → 1.72.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/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [1.72.3](https://github.com/appium/appium-mcp/compare/v1.72.2...v1.72.3) (2026-05-02)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **scroll:** flip scroll for android ([#312](https://github.com/appium/appium-mcp/issues/312)) ([e0708f7](https://github.com/appium/appium-mcp/commit/e0708f7f2463f3f92b9abb2404ee9322f289a47a))
6
+
7
+ ## [1.72.2](https://github.com/appium/appium-mcp/compare/v1.72.1...v1.72.2) (2026-05-02)
8
+
9
+ ### Bug Fixes
10
+
11
+ * **prepare-ios-real-device:** enhance handling of wildcard provisioning profiles and improve signing process ([#315](https://github.com/appium/appium-mcp/issues/315)) ([404e715](https://github.com/appium/appium-mcp/commit/404e71598906899a16df5bce26954bbddcff87bb))
12
+
1
13
  ## [1.72.1](https://github.com/appium/appium-mcp/compare/v1.72.0...v1.72.1) (2026-05-01)
2
14
 
3
15
  ### Bug Fixes
@@ -1 +1 @@
1
- {"version":3,"file":"swipe-scroll.d.ts","sourceRoot":"","sources":["../../../../src/tools/gestures/handlers/swipe-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAahE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiBhD,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AA2BD,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CA+CxB"}
1
+ {"version":3,"file":"swipe-scroll.d.ts","sourceRoot":"","sources":["../../../../src/tools/gestures/handlers/swipe-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAahE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiBhD,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAkCD,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CAoCxB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CA+CxB"}
@@ -67,15 +67,26 @@ const SWIPE_SPEED_PROFILES = {
67
67
  normal: { duration: 300, initialPause: 200 },
68
68
  fast: { duration: 100, initialPause: 0 },
69
69
  };
70
+ const FLIPPED_DIRECTION = {
71
+ up: 'down',
72
+ down: 'up',
73
+ left: 'right',
74
+ right: 'left',
75
+ };
70
76
  export async function handleScroll(driver, args) {
71
77
  try {
72
- const coordsResult = await resolveCoords(driver, args);
78
+ const platform = getPlatformName(driver);
79
+ // Android scroll follows the scrollbar convention (down = reveal content below),
80
+ // so flip the user's direction before computing the W3C drag coords.
81
+ const coordsArgs = platform === PLATFORM.android && args.direction
82
+ ? { ...args, direction: FLIPPED_DIRECTION[args.direction] }
83
+ : args;
84
+ const coordsResult = await resolveCoords(driver, coordsArgs);
73
85
  if ('error' in coordsResult) {
74
86
  return errorResult(`scroll: ${coordsResult.error}`);
75
87
  }
76
88
  const coords = coordsResult;
77
89
  const duration = args.duration ?? SCROLL_DURATION_MS;
78
- const platform = getPlatformName(driver);
79
90
  if (platform === PLATFORM.ios && args.direction && !args.elementUUID) {
80
91
  await execute(driver, 'mobile: scroll', {
81
92
  direction: args.direction,
@@ -1 +1 @@
1
- {"version":3,"file":"swipe-scroll.js","sourceRoot":"","sources":["../../../../src/tools/gestures/handlers/swipe-scroll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swipe-scroll.js","sourceRoot":"","sources":["../../../../src/tools/gestures/handlers/swipe-scroll.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,11 @@
3
3
  *
4
4
  * Two-mode flow:
5
5
  * - Discovery (no provisioningProfileUuid given): returns the list of available
6
- * .mobileprovision profiles so the LLM can ask the user which to use plus
7
- * whether the underlying account is free or enterprise.
8
- * - Build (provisioningProfileUuid + isFreeAccount given): chains
9
- * download matching WDA release package IPA applesign. Each step is
10
- * cached so re-runs are fast.
6
+ * .mobileprovision profiles so the LLM can ask the user which to use.
7
+ * - Build (provisioningProfileUuid given): chains download matching WDA release
8
+ * package IPA applesign. Download and unsigned IPA are cached per WDA
9
+ * version; the signed IPA is rebuilt every call so profile/cert changes never
10
+ * serve a stale signature.
11
11
  *
12
12
  * After a successful run, create_session calls should pass the returned
13
13
  * `capabilitiesHint` so Appium installs and launches the signed prebuilt WDA
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-ios-real-device.d.ts","sourceRoot":"","sources":["../../../src/tools/ios/prepare-ios-real-device.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AAoctD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAsElE"}
1
+ {"version":3,"file":"prepare-ios-real-device.d.ts","sourceRoot":"","sources":["../../../src/tools/ios/prepare-ios-real-device.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AAictD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAgElE"}
@@ -11,6 +11,8 @@ import { IOSManager } from '../../devicemanager/ios-manager.js';
11
11
  import log from '../../logger.js';
12
12
  import { textResult } from '../tool-response.js';
13
13
  import { resolveAppiumMcpCachePath } from '../../utils/paths.js';
14
+ // default signing bundle ID when the chosen provisioning profile is a wildcard ('*')
15
+ const WDA_RUNNER_BUNDLE_ID_FOR_XCTEST = 'com.facebook.WebDriverAgentRunner.xctrunner';
14
16
  // ── Provisioning profile discovery ──
15
17
  async function fileExists(filePath) {
16
18
  try {
@@ -45,6 +47,7 @@ async function listProvisioningProfiles() {
45
47
  const mp = provision.readFromFile(fullPath);
46
48
  // The provision Name typically formats as "iOS Team Provisioning Profile: <bundleId>"
47
49
  const bundleIdFromName = mp.Name.split(':')[1]?.trim() ?? '';
50
+ const isWildcard = bundleIdFromName === '*';
48
51
  return {
49
52
  uuid: mp.UUID,
50
53
  name: mp.Name,
@@ -54,6 +57,11 @@ async function listProvisioningProfiles() {
54
57
  expiresAt: mp.ExpirationDate
55
58
  ? new Date(mp.ExpirationDate).toISOString()
56
59
  : undefined,
60
+ // Wildcards work too, we substitute a concrete .xctrunner bundle ID at sign time.
61
+ // Specific profiles must already end in .xctrunner since the xcuitest driver re-appends
62
+ // that suffix on launch (see appium-webdriveragent/lib/constants.ts DEFAULT_TEST_BUNDLE_SUFFIX).
63
+ recommendedForWda: isWildcard || bundleIdFromName.endsWith('.xctrunner'),
64
+ isWildcard,
57
65
  };
58
66
  });
59
67
  }
@@ -114,12 +122,16 @@ async function packageAppAsIpa(appPath, outIpaPath) {
114
122
  await rm(stagingDir, { recursive: true, force: true });
115
123
  }
116
124
  // ── Bundle ID extraction (from the signed IPA) ──
117
- async function signIpa(ipaPath, profile, isFreeAccount) {
125
+ async function signIpa(ipaPath, profile) {
126
+ // For wildcard profiles, applesign needs a concrete value, substitute the canonical WDA Runner bundle ID,
127
+ // which the xcuitest driver expects to find at launch.
128
+ const targetBundleId = profile.isWildcard
129
+ ? WDA_RUNNER_BUNDLE_ID_FOR_XCTEST
130
+ : profile.bundleId.trim();
118
131
  const opts = {
119
132
  file: ipaPath,
120
133
  mobileprovision: profile.filePath,
121
- // Free accounts must override the bundle id to match the personal team prefix
122
- bundleid: isFreeAccount ? profile.bundleId.trim() : '',
134
+ bundleid: targetBundleId,
123
135
  withGetTaskAllow: true,
124
136
  withoutPlugins: true,
125
137
  };
@@ -215,8 +227,7 @@ async function runPipeline(inputs) {
215
227
  const versionRoot = resolveAppiumMcpCachePath('wda-real', wdaVersion);
216
228
  const downloadDir = path.join(versionRoot, 'downloaded');
217
229
  const unsignedIpaPath = path.join(versionRoot, 'Payload.ipa');
218
- const flag = inputs.isFreeAccount ? 'free' : 'ent';
219
- const signedDir = path.join(versionRoot, 'signed', `${profile.uuid}-${flag}`);
230
+ const signedDir = path.join(versionRoot, 'signed', profile.uuid);
220
231
  const stagedIpaPath = path.join(signedDir, 'Payload.ipa');
221
232
  const resignedIpaPath = path.join(signedDir, 'Payload-resigned.ipa');
222
233
  // ── Step 2: Download matching WDA release (cached) ──
@@ -269,33 +280,26 @@ async function runPipeline(inputs) {
269
280
  result.wda_package = { status: 'failed', detail: err.message };
270
281
  return result;
271
282
  }
272
- // ── Step 4: Resign (cached per profile) ──
283
+ // ── Step 4: Resign (always re-sign; no cache) ──
273
284
  let bundleId;
274
285
  try {
275
- if (!inputs.forceRebuild && (await fileExists(resignedIpaPath))) {
276
- bundleId = await extractBundleIdFromIpa(resignedIpaPath);
277
- result.wda_sign = {
278
- status: 'skipped',
279
- detail: `Reusing cached signed IPA at ${resignedIpaPath} (bundleId=${bundleId})`,
280
- };
281
- }
282
- else {
283
- await mkdir(signedDir, { recursive: true });
284
- // applesign mutates / writes alongside the input IPA; copy fresh into the per-profile dir first
285
- await cp(unsignedIpaPath, stagedIpaPath);
286
- log.info(`Signing IPA with profile ${profile.uuid} (free=${inputs.isFreeAccount})...`);
287
- const producedPath = await signIpa(stagedIpaPath, profile, inputs.isFreeAccount);
288
- // signIpa returns "<basename>-resigned.ipa" alongside the staged copy — that
289
- // already matches resignedIpaPath, but assert to be defensive.
290
- if (path.resolve(producedPath) !== path.resolve(resignedIpaPath)) {
291
- await cp(producedPath, resignedIpaPath);
292
- }
293
- bundleId = await extractBundleIdFromIpa(resignedIpaPath);
294
- result.wda_sign = {
295
- status: 'completed',
296
- detail: `Signed IPA at ${resignedIpaPath} (bundleId=${bundleId})`,
297
- };
286
+ // Wipe any prior signed artifacts for this profile so applesign starts clean.
287
+ await rm(signedDir, { recursive: true, force: true });
288
+ await mkdir(signedDir, { recursive: true });
289
+ // applesign mutates / writes alongside the input IPA; copy fresh into the per-profile dir first
290
+ await cp(unsignedIpaPath, stagedIpaPath);
291
+ log.info(`Signing IPA with profile ${profile.uuid} (wildcard=${profile.isWildcard})...`);
292
+ const producedPath = await signIpa(stagedIpaPath, profile);
293
+ // signIpa returns "<basename>-resigned.ipa" alongside the staged copy — that
294
+ // already matches resignedIpaPath, but assert to be defensive.
295
+ if (path.resolve(producedPath) !== path.resolve(resignedIpaPath)) {
296
+ await cp(producedPath, resignedIpaPath);
298
297
  }
298
+ bundleId = await extractBundleIdFromIpa(resignedIpaPath);
299
+ result.wda_sign = {
300
+ status: 'completed',
301
+ detail: `Signed IPA at ${resignedIpaPath} (bundleId=${bundleId})`,
302
+ };
299
303
  }
300
304
  catch (err) {
301
305
  result.wda_sign = { status: 'failed', detail: err.message };
@@ -320,24 +324,20 @@ const prepareRealDeviceSchema = z.object({
320
324
  .string()
321
325
  .optional()
322
326
  .describe('UUID of the .mobileprovision profile to sign WDA with. If omitted, the tool returns the list of available profiles so you can ask the user to pick one.'),
323
- isFreeAccount: z
324
- .boolean()
325
- .optional()
326
- .describe('Required when provisioningProfileUuid is given. true if the profile belongs to a free Apple ID (7-day expiry, no team prefix), false for a paid/enterprise team. Ask the user — do not infer from the UUID.'),
327
327
  forceRebuild: z
328
328
  .boolean()
329
329
  .optional()
330
- .describe('If true, ignore cached WDA download and signed IPA and start clean. Default: false.'),
330
+ .describe('If true, ignore the cached WDA download and unsigned IPA and start clean. The signed IPA is always rebuilt regardless. Default: false.'),
331
331
  });
332
332
  export default function prepareIosRealDevice(server) {
333
333
  server.addTool({
334
334
  name: 'appium_prepare_ios_real_device',
335
335
  description: 'Prepare an iOS real device for Appium testing in a single call. Two-mode flow: ' +
336
336
  '(1) Call without provisioningProfileUuid to receive the list of available .mobileprovision profiles — ' +
337
- 'present them to the user and confirm whether the chosen profile belongs to a free Apple ID or a paid/enterprise team. ' +
338
- '(2) Call again with the chosen UUID and isFreeAccount to download the matching WebDriverAgent release, package it as an IPA, ' +
339
- 'and resign it with the chosen profile. ' +
340
- 'Each step is cached so repeat runs are fast. ' +
337
+ 'present them to the user (highlight any with recommendedForWda=true) and ask them to pick one. ' +
338
+ '(2) Call again with the chosen UUID to download the matching WebDriverAgent release, package it as an IPA, ' +
339
+ 'and resign it with the chosen profile (wildcard "*" profiles are supported — a concrete WDA bundle ID is substituted at sign time). ' +
340
+ 'WDA download and unsigned IPA are cached per WDA version; the signed IPA is rebuilt every call. ' +
341
341
  'Pass the returned capabilitiesHint to create_session so Appium installs and launches the signed prebuilt WDA instead of rebuilding. ' +
342
342
  'Requires macOS, Xcode 16+, and a paired developer-mode device.',
343
343
  parameters: prepareRealDeviceSchema,
@@ -349,25 +349,26 @@ export default function prepareIosRealDevice(server) {
349
349
  if (process.platform !== 'darwin') {
350
350
  throw new Error('iOS real-device preparation is only supported on macOS');
351
351
  }
352
- const { udid, provisioningProfileUuid, isFreeAccount, forceRebuild = false, } = args;
352
+ const { udid, provisioningProfileUuid, forceRebuild = false } = args;
353
353
  // Discovery mode: no profile chosen yet — return profile list for selection.
354
354
  if (!provisioningProfileUuid) {
355
355
  const profiles = await listProvisioningProfiles();
356
+ const recommended = profiles.filter((p) => p.recommendedForWda);
356
357
  return textResult(JSON.stringify({
357
358
  mode: 'discovery',
358
359
  udid,
359
360
  profiles,
360
- instructions: "Present the profiles to the user and ask them to (a) pick one by UUID and (b) confirm whether the profile's Apple ID is free (7-day expiry) or paid/enterprise. Then call this tool again with provisioningProfileUuid and isFreeAccount.",
361
+ recommendedProfiles: recommended.length > 0 ? recommended : undefined,
362
+ instructions: 'Prefer profiles with recommendedForWda=true. These are profiles whose bundle ID either ends in .xctrunner ' +
363
+ '(matches what the xcuitest driver re-appends at launch) or is a wildcard "*" (we substitute a concrete WDA bundle ID at sign time). ' +
364
+ 'Present the profiles to the user, highlight the recommended ones, and ask them to pick one by UUID. ' +
365
+ 'Then call this tool again with provisioningProfileUuid.',
361
366
  }, null, 2));
362
367
  }
363
- if (isFreeAccount === undefined) {
364
- throw new Error('isFreeAccount is required when provisioningProfileUuid is provided. Ask the user whether the chosen profile belongs to a free Apple ID or a paid/enterprise team.');
365
- }
366
- log.info(`Preparing iOS real device ${udid} with profile ${provisioningProfileUuid} (free=${isFreeAccount}, forceRebuild=${forceRebuild})`);
368
+ log.info(`Preparing iOS real device ${udid} with profile ${provisioningProfileUuid} (forceRebuild=${forceRebuild})`);
367
369
  const result = await runPipeline({
368
370
  udid,
369
371
  provisioningProfileUuid,
370
- isFreeAccount,
371
372
  forceRebuild,
372
373
  });
373
374
  return textResult(JSON.stringify({ mode: 'build', ...result }, null, 2));
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-ios-real-device.js","sourceRoot":"","sources":["../../../src/tools/ios/prepare-ios-real-device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepare-ios-real-device.js","sourceRoot":"","sources":["../../../src/tools/ios/prepare-ios-real-device.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "appium-mcp",
3
3
  "mcpName": "io.github.appium/appium-mcp",
4
- "version": "1.72.1",
4
+ "version": "1.72.3",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
package/server.json CHANGED
@@ -3,12 +3,12 @@
3
3
  "name": "io.github.appium/appium-mcp",
4
4
  "title": "MCP Appium - Mobile Development and Automation Server",
5
5
  "description": "MCP server for Appium mobile automation on iOS and Android devices with test creation tools.",
6
- "version": "1.72.1",
6
+ "version": "1.72.3",
7
7
  "packages": [
8
8
  {
9
9
  "registryType": "npm",
10
10
  "identifier": "appium-mcp",
11
- "version": "1.72.1",
11
+ "version": "1.72.3",
12
12
  "transport": {
13
13
  "type": "stdio"
14
14
  }
Binary file
@@ -19,7 +19,7 @@ This directory contains all MCP tools available in MCP Appium.
19
19
  ### iOS Setup (`ios/`)
20
20
 
21
21
  - `prepare-ios-simulator.ts` - Boot simulator, download, install and launch WebDriverAgent in a single call
22
- - `prepare-ios-real-device.ts` - Download the matching WDA release and resign it with a local provisioning profile. Discovery mode (no UUID) lists available `.mobileprovision` profiles; build mode (UUID + `isFreeAccount`) runs the signing pipeline with per-version/per-profile caching and returns `usePreinstalledWDA` + `prebuiltWDAPath` capabilities so Appium installs and launches WDA during session startup.
22
+ - `prepare-ios-real-device.ts` - Download the matching WDA release and resign it with a local provisioning profile. Discovery mode (no UUID) lists available `.mobileprovision` profiles (including wildcard ones, flagged as `recommendedForWda`); build mode (UUID) runs the signing pipeline. WDA download and unsigned IPA are cached per WDA version; the signed IPA is rebuilt every call so profile/cert rotation never serves a stale signature. Returns `usePreinstalledWDA` + `prebuiltWDAPath` capabilities so Appium installs and launches WDA during session startup.
23
23
 
24
24
  ### Navigation (`navigations/`)
25
25
 
@@ -111,18 +111,31 @@ const SWIPE_SPEED_PROFILES = {
111
111
  fast: { duration: 100, initialPause: 0 },
112
112
  } as const;
113
113
 
114
+ const FLIPPED_DIRECTION: Record<Direction, Direction> = {
115
+ up: 'down',
116
+ down: 'up',
117
+ left: 'right',
118
+ right: 'left',
119
+ };
120
+
114
121
  export async function handleScroll(
115
122
  driver: DriverInstance,
116
123
  args: GestureArgs
117
124
  ): Promise<ContentResult> {
118
125
  try {
119
- const coordsResult = await resolveCoords(driver, args);
126
+ const platform = getPlatformName(driver);
127
+ // Android scroll follows the scrollbar convention (down = reveal content below),
128
+ // so flip the user's direction before computing the W3C drag coords.
129
+ const coordsArgs =
130
+ platform === PLATFORM.android && args.direction
131
+ ? { ...args, direction: FLIPPED_DIRECTION[args.direction] }
132
+ : args;
133
+ const coordsResult = await resolveCoords(driver, coordsArgs);
120
134
  if ('error' in coordsResult) {
121
135
  return errorResult(`scroll: ${coordsResult.error}`);
122
136
  }
123
137
  const coords = coordsResult;
124
138
  const duration = args.duration ?? SCROLL_DURATION_MS;
125
- const platform = getPlatformName(driver);
126
139
 
127
140
  if (platform === PLATFORM.ios && args.direction && !args.elementUUID) {
128
141
  await execute(driver, 'mobile: scroll', {
@@ -3,11 +3,11 @@
3
3
  *
4
4
  * Two-mode flow:
5
5
  * - Discovery (no provisioningProfileUuid given): returns the list of available
6
- * .mobileprovision profiles so the LLM can ask the user which to use plus
7
- * whether the underlying account is free or enterprise.
8
- * - Build (provisioningProfileUuid + isFreeAccount given): chains
9
- * download matching WDA release package IPA applesign. Each step is
10
- * cached so re-runs are fast.
6
+ * .mobileprovision profiles so the LLM can ask the user which to use.
7
+ * - Build (provisioningProfileUuid given): chains download matching WDA release
8
+ * package IPA applesign. Download and unsigned IPA are cached per WDA
9
+ * version; the signed IPA is rebuilt every call so profile/cert changes never
10
+ * serve a stale signature.
11
11
  *
12
12
  * After a successful run, create_session calls should pass the returned
13
13
  * `capabilitiesHint` so Appium installs and launches the signed prebuilt WDA
@@ -54,14 +54,19 @@ interface ProfileChoice {
54
54
  bundleId: string;
55
55
  filePath: string;
56
56
  expiresAt?: string;
57
+ recommendedForWda: boolean;
58
+ isWildcard: boolean;
57
59
  }
58
60
 
61
+ // default signing bundle ID when the chosen provisioning profile is a wildcard ('*')
62
+ const WDA_RUNNER_BUNDLE_ID_FOR_XCTEST =
63
+ 'com.facebook.WebDriverAgentRunner.xctrunner';
64
+
59
65
  // ── Filesystem helpers ──
60
66
 
61
67
  interface PipelineInputs {
62
68
  udid: string;
63
69
  provisioningProfileUuid: string;
64
- isFreeAccount: boolean;
65
70
  forceRebuild: boolean;
66
71
  }
67
72
 
@@ -113,6 +118,7 @@ async function listProvisioningProfiles(): Promise<ProfileChoice[]> {
113
118
  const mp = provision.readFromFile(fullPath);
114
119
  // The provision Name typically formats as "iOS Team Provisioning Profile: <bundleId>"
115
120
  const bundleIdFromName = mp.Name.split(':')[1]?.trim() ?? '';
121
+ const isWildcard = bundleIdFromName === '*';
116
122
  return {
117
123
  uuid: mp.UUID,
118
124
  name: mp.Name,
@@ -122,6 +128,11 @@ async function listProvisioningProfiles(): Promise<ProfileChoice[]> {
122
128
  expiresAt: mp.ExpirationDate
123
129
  ? new Date(mp.ExpirationDate).toISOString()
124
130
  : undefined,
131
+ // Wildcards work too, we substitute a concrete .xctrunner bundle ID at sign time.
132
+ // Specific profiles must already end in .xctrunner since the xcuitest driver re-appends
133
+ // that suffix on launch (see appium-webdriveragent/lib/constants.ts DEFAULT_TEST_BUNDLE_SUFFIX).
134
+ recommendedForWda: isWildcard || bundleIdFromName.endsWith('.xctrunner'),
135
+ isWildcard,
125
136
  };
126
137
  });
127
138
  }
@@ -211,14 +222,17 @@ async function packageAppAsIpa(
211
222
 
212
223
  async function signIpa(
213
224
  ipaPath: string,
214
- profile: ProfileChoice,
215
- isFreeAccount: boolean
225
+ profile: ProfileChoice
216
226
  ): Promise<string> {
227
+ // For wildcard profiles, applesign needs a concrete value, substitute the canonical WDA Runner bundle ID,
228
+ // which the xcuitest driver expects to find at launch.
229
+ const targetBundleId = profile.isWildcard
230
+ ? WDA_RUNNER_BUNDLE_ID_FOR_XCTEST
231
+ : profile.bundleId.trim();
217
232
  const opts: Record<string, unknown> = {
218
233
  file: ipaPath,
219
234
  mobileprovision: profile.filePath,
220
- // Free accounts must override the bundle id to match the personal team prefix
221
- bundleid: isFreeAccount ? profile.bundleId.trim() : '',
235
+ bundleid: targetBundleId,
222
236
  withGetTaskAllow: true,
223
237
  withoutPlugins: true,
224
238
  };
@@ -331,8 +345,7 @@ async function runPipeline(
331
345
  const versionRoot = resolveAppiumMcpCachePath('wda-real', wdaVersion);
332
346
  const downloadDir = path.join(versionRoot, 'downloaded');
333
347
  const unsignedIpaPath = path.join(versionRoot, 'Payload.ipa');
334
- const flag = inputs.isFreeAccount ? 'free' : 'ent';
335
- const signedDir = path.join(versionRoot, 'signed', `${profile.uuid}-${flag}`);
348
+ const signedDir = path.join(versionRoot, 'signed', profile.uuid);
336
349
  const stagedIpaPath = path.join(signedDir, 'Payload.ipa');
337
350
  const resignedIpaPath = path.join(signedDir, 'Payload-resigned.ipa');
338
351
 
@@ -387,38 +400,28 @@ async function runPipeline(
387
400
  return result;
388
401
  }
389
402
 
390
- // ── Step 4: Resign (cached per profile) ──
403
+ // ── Step 4: Resign (always re-sign; no cache) ──
391
404
  let bundleId: string;
392
405
  try {
393
- if (!inputs.forceRebuild && (await fileExists(resignedIpaPath))) {
394
- bundleId = await extractBundleIdFromIpa(resignedIpaPath);
395
- result.wda_sign = {
396
- status: 'skipped',
397
- detail: `Reusing cached signed IPA at ${resignedIpaPath} (bundleId=${bundleId})`,
398
- };
399
- } else {
400
- await mkdir(signedDir, { recursive: true });
401
- // applesign mutates / writes alongside the input IPA; copy fresh into the per-profile dir first
402
- await cp(unsignedIpaPath, stagedIpaPath);
403
- log.info(
404
- `Signing IPA with profile ${profile.uuid} (free=${inputs.isFreeAccount})...`
405
- );
406
- const producedPath = await signIpa(
407
- stagedIpaPath,
408
- profile,
409
- inputs.isFreeAccount
410
- );
411
- // signIpa returns "<basename>-resigned.ipa" alongside the staged copy — that
412
- // already matches resignedIpaPath, but assert to be defensive.
413
- if (path.resolve(producedPath) !== path.resolve(resignedIpaPath)) {
414
- await cp(producedPath, resignedIpaPath);
415
- }
416
- bundleId = await extractBundleIdFromIpa(resignedIpaPath);
417
- result.wda_sign = {
418
- status: 'completed',
419
- detail: `Signed IPA at ${resignedIpaPath} (bundleId=${bundleId})`,
420
- };
406
+ // Wipe any prior signed artifacts for this profile so applesign starts clean.
407
+ await rm(signedDir, { recursive: true, force: true });
408
+ await mkdir(signedDir, { recursive: true });
409
+ // applesign mutates / writes alongside the input IPA; copy fresh into the per-profile dir first
410
+ await cp(unsignedIpaPath, stagedIpaPath);
411
+ log.info(
412
+ `Signing IPA with profile ${profile.uuid} (wildcard=${profile.isWildcard})...`
413
+ );
414
+ const producedPath = await signIpa(stagedIpaPath, profile);
415
+ // signIpa returns "<basename>-resigned.ipa" alongside the staged copy — that
416
+ // already matches resignedIpaPath, but assert to be defensive.
417
+ if (path.resolve(producedPath) !== path.resolve(resignedIpaPath)) {
418
+ await cp(producedPath, resignedIpaPath);
421
419
  }
420
+ bundleId = await extractBundleIdFromIpa(resignedIpaPath);
421
+ result.wda_sign = {
422
+ status: 'completed',
423
+ detail: `Signed IPA at ${resignedIpaPath} (bundleId=${bundleId})`,
424
+ };
422
425
  } catch (err) {
423
426
  result.wda_sign = { status: 'failed', detail: (err as Error).message };
424
427
  return result;
@@ -451,17 +454,11 @@ const prepareRealDeviceSchema = z.object({
451
454
  .describe(
452
455
  'UUID of the .mobileprovision profile to sign WDA with. If omitted, the tool returns the list of available profiles so you can ask the user to pick one.'
453
456
  ),
454
- isFreeAccount: z
455
- .boolean()
456
- .optional()
457
- .describe(
458
- 'Required when provisioningProfileUuid is given. true if the profile belongs to a free Apple ID (7-day expiry, no team prefix), false for a paid/enterprise team. Ask the user — do not infer from the UUID.'
459
- ),
460
457
  forceRebuild: z
461
458
  .boolean()
462
459
  .optional()
463
460
  .describe(
464
- 'If true, ignore cached WDA download and signed IPA and start clean. Default: false.'
461
+ 'If true, ignore the cached WDA download and unsigned IPA and start clean. The signed IPA is always rebuilt regardless. Default: false.'
465
462
  ),
466
463
  });
467
464
 
@@ -471,10 +468,10 @@ export default function prepareIosRealDevice(server: FastMCP): void {
471
468
  description:
472
469
  'Prepare an iOS real device for Appium testing in a single call. Two-mode flow: ' +
473
470
  '(1) Call without provisioningProfileUuid to receive the list of available .mobileprovision profiles — ' +
474
- 'present them to the user and confirm whether the chosen profile belongs to a free Apple ID or a paid/enterprise team. ' +
475
- '(2) Call again with the chosen UUID and isFreeAccount to download the matching WebDriverAgent release, package it as an IPA, ' +
476
- 'and resign it with the chosen profile. ' +
477
- 'Each step is cached so repeat runs are fast. ' +
471
+ 'present them to the user (highlight any with recommendedForWda=true) and ask them to pick one. ' +
472
+ '(2) Call again with the chosen UUID to download the matching WebDriverAgent release, package it as an IPA, ' +
473
+ 'and resign it with the chosen profile (wildcard "*" profiles are supported — a concrete WDA bundle ID is substituted at sign time). ' +
474
+ 'WDA download and unsigned IPA are cached per WDA version; the signed IPA is rebuilt every call. ' +
478
475
  'Pass the returned capabilitiesHint to create_session so Appium installs and launches the signed prebuilt WDA instead of rebuilding. ' +
479
476
  'Requires macOS, Xcode 16+, and a paired developer-mode device.',
480
477
  parameters: prepareRealDeviceSchema,
@@ -491,24 +488,25 @@ export default function prepareIosRealDevice(server: FastMCP): void {
491
488
  );
492
489
  }
493
490
 
494
- const {
495
- udid,
496
- provisioningProfileUuid,
497
- isFreeAccount,
498
- forceRebuild = false,
499
- } = args;
491
+ const { udid, provisioningProfileUuid, forceRebuild = false } = args;
500
492
 
501
493
  // Discovery mode: no profile chosen yet — return profile list for selection.
502
494
  if (!provisioningProfileUuid) {
503
495
  const profiles = await listProvisioningProfiles();
496
+ const recommended = profiles.filter((p) => p.recommendedForWda);
504
497
  return textResult(
505
498
  JSON.stringify(
506
499
  {
507
500
  mode: 'discovery',
508
501
  udid,
509
502
  profiles,
503
+ recommendedProfiles:
504
+ recommended.length > 0 ? recommended : undefined,
510
505
  instructions:
511
- "Present the profiles to the user and ask them to (a) pick one by UUID and (b) confirm whether the profile's Apple ID is free (7-day expiry) or paid/enterprise. Then call this tool again with provisioningProfileUuid and isFreeAccount.",
506
+ 'Prefer profiles with recommendedForWda=true. These are profiles whose bundle ID either ends in .xctrunner ' +
507
+ '(matches what the xcuitest driver re-appends at launch) or is a wildcard "*" (we substitute a concrete WDA bundle ID at sign time). ' +
508
+ 'Present the profiles to the user, highlight the recommended ones, and ask them to pick one by UUID. ' +
509
+ 'Then call this tool again with provisioningProfileUuid.',
512
510
  },
513
511
  null,
514
512
  2
@@ -516,20 +514,13 @@ export default function prepareIosRealDevice(server: FastMCP): void {
516
514
  );
517
515
  }
518
516
 
519
- if (isFreeAccount === undefined) {
520
- throw new Error(
521
- 'isFreeAccount is required when provisioningProfileUuid is provided. Ask the user whether the chosen profile belongs to a free Apple ID or a paid/enterprise team.'
522
- );
523
- }
524
-
525
517
  log.info(
526
- `Preparing iOS real device ${udid} with profile ${provisioningProfileUuid} (free=${isFreeAccount}, forceRebuild=${forceRebuild})`
518
+ `Preparing iOS real device ${udid} with profile ${provisioningProfileUuid} (forceRebuild=${forceRebuild})`
527
519
  );
528
520
 
529
521
  const result = await runPipeline({
530
522
  udid,
531
523
  provisioningProfileUuid,
532
- isFreeAccount,
533
524
  forceRebuild,
534
525
  });
535
526
  return textResult(JSON.stringify({ mode: 'build', ...result }, null, 2));