appium-mcp 1.67.1 → 1.69.0

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +3 -3
  3. package/dist/index.js +2 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/tests/__mocks__/@appium/support.d.ts +22 -0
  6. package/dist/tests/__mocks__/@appium/support.d.ts.map +1 -1
  7. package/dist/tests/__mocks__/@appium/support.js +22 -0
  8. package/dist/tests/__mocks__/@appium/support.js.map +1 -1
  9. package/dist/tools/index.d.ts.map +1 -1
  10. package/dist/tools/index.js +2 -0
  11. package/dist/tools/index.js.map +1 -1
  12. package/dist/tools/interactions/clipboard.d.ts +0 -10
  13. package/dist/tools/interactions/clipboard.d.ts.map +1 -1
  14. package/dist/tools/interactions/clipboard.js +49 -68
  15. package/dist/tools/interactions/clipboard.js.map +1 -1
  16. package/dist/tools/ios/prepare-ios-real-device.d.ts +18 -0
  17. package/dist/tools/ios/prepare-ios-real-device.d.ts.map +1 -0
  18. package/dist/tools/ios/prepare-ios-real-device.js +377 -0
  19. package/dist/tools/ios/prepare-ios-real-device.js.map +1 -0
  20. package/dist/tools/ios/prepare-ios-simulator.d.ts.map +1 -1
  21. package/dist/tools/ios/prepare-ios-simulator.js +14 -38
  22. package/dist/tools/ios/prepare-ios-simulator.js.map +1 -1
  23. package/dist/tools/session/session.d.ts.map +1 -1
  24. package/dist/tools/session/session.js +5 -3
  25. package/dist/tools/session/session.js.map +1 -1
  26. package/dist/utils/paths.d.ts +1 -0
  27. package/dist/utils/paths.d.ts.map +1 -1
  28. package/dist/utils/paths.js +3 -0
  29. package/dist/utils/paths.js.map +1 -1
  30. package/package.json +4 -1
  31. package/server.json +2 -2
  32. package/src/index.ts +2 -2
  33. package/src/resources/submodules.zip +0 -0
  34. package/src/tools/README.md +1 -0
  35. package/src/tools/index.ts +2 -0
  36. package/src/tools/interactions/clipboard.ts +60 -78
  37. package/src/tools/ios/prepare-ios-real-device.ts +538 -0
  38. package/src/tools/ios/prepare-ios-simulator.ts +20 -48
  39. package/src/tools/session/session.ts +5 -3
  40. package/src/utils/paths.ts +4 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## [1.69.0](https://github.com/appium/appium-mcp/compare/v1.68.0...v1.69.0) (2026-04-29)
2
+
3
+ ### Features
4
+
5
+ * **ios:** add `appium_prepare_ios_real_device` tool ([#297](https://github.com/appium/appium-mcp/issues/297)) ([998c6a1](https://github.com/appium/appium-mcp/commit/998c6a16c988779f2b76ea92433ef59469ac9051))
6
+
7
+ ## [1.68.0](https://github.com/appium/appium-mcp/compare/v1.67.1...v1.68.0) (2026-04-29)
8
+
9
+ ### Features
10
+
11
+ * **tools:** single appium_mobile_clipboard tool ([#292](https://github.com/appium/appium-mcp/issues/292)) ([ce7c7dc](https://github.com/appium/appium-mcp/commit/ce7c7dc6e20f0dd43b0ebf3f56651065af55fa8c))
12
+
13
+ ### Bug Fixes
14
+
15
+ * loading mcp server to start ([#298](https://github.com/appium/appium-mcp/issues/298)) ([82414d6](https://github.com/appium/appium-mcp/commit/82414d6dbec351887758aae9414ac9adfc4de22d))
16
+
1
17
  ## [1.67.1](https://github.com/appium/appium-mcp/compare/v1.67.0...v1.67.1) (2026-04-27)
2
18
 
3
19
  ### Bug Fixes
package/README.md CHANGED
@@ -55,7 +55,7 @@ Before you begin, ensure you have the following installed:
55
55
  1. Install Xcode from the App Store.
56
56
  2. Install the Xcode Command Line Tools: `xcode-select --install`.
57
57
  3. Install iOS simulators through Xcode.
58
- 4. For real device testing, configure your provisioning profiles.
58
+ 4. For real device testing, enable Developer Mode on the device and sign in to your Apple ID in Xcode (Settings → Accounts). Use `appium_prepare_ios_real_device` to download and sign WebDriverAgent in a single call - it will guide you through provisioning profile selection and return capabilities for session startup.
59
59
 
60
60
  ## 🛠️ Installation
61
61
 
@@ -311,6 +311,7 @@ MCP Appium provides a comprehensive set of tools organized into the following ca
311
311
  | ----------------- | ------------------------------------------------------------------------ |
312
312
  | `select_device` | **REQUIRED FIRST**: Discover available devices and select one. Auto-selects if only one device found |
313
313
  | `prepare_ios_simulator` | Boot an iOS/tvOS simulator, download WDA (if not cached), and install/launch WDA in a single call. Each step is skipped if already satisfied (iOS/tvOS only). Set `APPIUM_MCP_WDA_APP_PATH` to skip all downloads and use a local `.app` bundle instead. |
314
+ | `appium_prepare_ios_real_device` | Prepare a real iOS device for Appium testing. **Two-step flow**: (1) call without `provisioningProfileUuid` to list available `.mobileprovision` profiles; (2) call again with the chosen UUID and `isFreeAccount` to download the matching WDA release, package it as an IPA, and resign with the profile. Results are cached per WDA version and profile, so repeat runs are fast. Pass the returned `capabilitiesHint` to `create_session` so Appium installs and launches WDA. macOS + Xcode 16+ required. |
314
315
 
315
316
  ### Session Management
316
317
 
@@ -343,8 +344,7 @@ The default regex pattern allows any URL that starts with `http://` or `https://
343
344
  | `appium_mobile_hide_keyboard` | Dismiss the on-screen keyboard (`mobile: hideKeyboard`) |
344
345
  | `appium_mobile_is_keyboard_shown` | Whether the on-screen keyboard is visible (`mobile: isKeyboardShown`) |
345
346
  | `appium_get_text` | Get text content from an element |
346
- | `appium_get_clipboard` | Get the current clipboard content as plain text from the device |
347
- | `appium_set_clipboard` | Set the device clipboard to the provided plain text |
347
+ | `appium_mobile_clipboard` | Read or set device clipboard plain text. `action=get` \| `set` (`content` required for set). |
348
348
  | `appium_alert` | Handle alerts with `action` = `accept`, `dismiss`, or `get_text` (optional `buttonLabel`) |
349
349
 
350
350
  ### Screen & Navigation
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ async function startServer() {
9
9
  log.info('Starting MCP Appium MCP Server...');
10
10
  try {
11
11
  if (useHttpStream) {
12
- server.start({
12
+ await server.start({
13
13
  transportType: 'httpStream',
14
14
  httpStream: {
15
15
  endpoint: '/sse',
@@ -21,7 +21,7 @@ async function startServer() {
21
21
  }
22
22
  else {
23
23
  // Start with stdio transport
24
- server.start({
24
+ await server.start({
25
25
  transportType: 'stdio',
26
26
  });
27
27
  log.info('Server started with stdio transport');
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,GAAG,MAAM,aAAa,CAAC;AAE9B,+BAA+B;AAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACpD,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AAEzE,KAAK,UAAU,WAAW;IACxB,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC;gBACX,aAAa,EAAE,YAAY;gBAC3B,UAAU,EAAE;oBACV,QAAQ,EAAE,MAAM;oBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;iBACzB;aACF,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CACN,gEAAgE,IAAI,MAAM,CAC3E,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,6BAA6B;YAC7B,MAAM,CAAC,KAAK,CAAC;gBACX,aAAa,EAAE,OAAO;aACvB,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,GAAG,MAAM,aAAa,CAAC;AAE9B,+BAA+B;AAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACpD,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AAEzE,KAAK,UAAU,WAAW;IACxB,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,aAAa,EAAE,YAAY;gBAC3B,UAAU,EAAE;oBACV,QAAQ,EAAE,MAAM;oBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;iBACzB;aACF,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CACN,gEAAgE,IAAI,MAAM,CAC3E,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,6BAA6B;YAC7B,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,aAAa,EAAE,OAAO;aACvB,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,WAAW,EAAE,CAAC"}
@@ -27,6 +27,17 @@ export declare const mockSharpInstance: MockSharpInstance;
27
27
  export declare const imageUtil: {
28
28
  requireSharp: () => (_input: Buffer) => MockSharpInstance;
29
29
  };
30
+ export declare const net: {
31
+ downloadFile: (_remoteUrl: string, _dstPath: string, _opts?: unknown) => Promise<void>;
32
+ };
33
+ export declare const plist: {
34
+ parsePlistFile: (_plistPath: string) => Promise<{}>;
35
+ };
36
+ export declare const zip: {
37
+ extractAllTo: (_zipPath: string, _destDir: string, _opts?: unknown) => Promise<void>;
38
+ readEntries: (_zipPath: string, _handler: unknown) => Promise<void>;
39
+ toArchive: (_dstPath: string, _src?: unknown, _opts?: unknown) => Promise<void>;
40
+ };
30
41
  declare const _default: {
31
42
  logger: {
32
43
  getLogger: (_name: string) => {
@@ -40,6 +51,17 @@ declare const _default: {
40
51
  imageUtil: {
41
52
  requireSharp: () => (_input: Buffer) => MockSharpInstance;
42
53
  };
54
+ net: {
55
+ downloadFile: (_remoteUrl: string, _dstPath: string, _opts?: unknown) => Promise<void>;
56
+ };
57
+ plist: {
58
+ parsePlistFile: (_plistPath: string) => Promise<{}>;
59
+ };
60
+ zip: {
61
+ extractAllTo: (_zipPath: string, _destDir: string, _opts?: unknown) => Promise<void>;
62
+ readEntries: (_zipPath: string, _handler: unknown) => Promise<void>;
63
+ toArchive: (_dstPath: string, _src?: unknown, _opts?: unknown) => Promise<void>;
64
+ };
43
65
  };
44
66
  export default _default;
45
67
  //# sourceMappingURL=support.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../../../src/tests/__mocks__/@appium/support.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;uBACE,MAAM;0BAIH,MAAM,YAAY,GAAG,EAAE;yBAGxB,MAAM,YAAY,GAAG,EAAE;yBAGvB,MAAM,YAAY,GAAG,EAAE;0BAGtB,MAAM,YAAY,GAAG,EAAE;0BAGvB,MAAM,YAAY,GAAG,EAAE;;CAI9C,CAAC;AAEF;;;;;;GAMG;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACpD,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,iBAAiB,CAAC;IAC7C,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,iBAkB/B,CAAC;AAEF,eAAO,MAAM,SAAS;yBACC,QAAQ,MAAM;CACpC,CAAC;;;2BA9DmB,MAAM;8BAIH,MAAM,YAAY,GAAG,EAAE;6BAGxB,MAAM,YAAY,GAAG,EAAE;6BAGvB,MAAM,YAAY,GAAG,EAAE;8BAGtB,MAAM,YAAY,GAAG,EAAE;8BAGvB,MAAM,YAAY,GAAG,EAAE;;;;6BA6CxB,QAAQ,MAAM;;;AAIrC,wBAGE"}
1
+ {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../../../src/tests/__mocks__/@appium/support.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;uBACE,MAAM;0BAIH,MAAM,YAAY,GAAG,EAAE;yBAGxB,MAAM,YAAY,GAAG,EAAE;yBAGvB,MAAM,YAAY,GAAG,EAAE;0BAGtB,MAAM,YAAY,GAAG,EAAE;0BAGvB,MAAM,YAAY,GAAG,EAAE;;CAI9C,CAAC;AAEF;;;;;;GAMG;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACpD,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,iBAAiB,CAAC;IAC7C,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,iBAkB/B,CAAC;AAEF,eAAO,MAAM,SAAS;yBACC,QAAQ,MAAM;CACpC,CAAC;AAEF,eAAO,MAAM,GAAG;+BAEA,MAAM,YACR,MAAM,UACR,OAAO;CAIlB,CAAC;AAEF,eAAO,MAAM,KAAK;iCACmB,MAAM;CAC1C,CAAC;AAEF,eAAO,MAAM,GAAG;6BACiB,MAAM,YAAY,MAAM,UAAU,OAAO;4BAG1C,MAAM,YAAY,OAAO;0BAG3B,MAAM,SAAS,OAAO,UAAU,OAAO;CAGpE,CAAC;;;2BAxFmB,MAAM;8BAIH,MAAM,YAAY,GAAG,EAAE;6BAGxB,MAAM,YAAY,GAAG,EAAE;6BAGvB,MAAM,YAAY,GAAG,EAAE;8BAGtB,MAAM,YAAY,GAAG,EAAE;8BAGvB,MAAM,YAAY,GAAG,EAAE;;;;6BA6CxB,QAAQ,MAAM;;;mCAKrB,MAAM,YACR,MAAM,UACR,OAAO;;;qCAOkB,MAAM;;;iCAIV,MAAM,YAAY,MAAM,UAAU,OAAO;gCAG1C,MAAM,YAAY,OAAO;8BAG3B,MAAM,SAAS,OAAO,UAAU,OAAO;;;AAMrE,wBAME"}
@@ -44,9 +44,31 @@ export const mockSharpInstance = {
44
44
  export const imageUtil = {
45
45
  requireSharp: () => (_input) => mockSharpInstance,
46
46
  };
47
+ export const net = {
48
+ downloadFile: async (_remoteUrl, _dstPath, _opts) => {
49
+ // Silent in tests by default
50
+ },
51
+ };
52
+ export const plist = {
53
+ parsePlistFile: async (_plistPath) => ({}),
54
+ };
55
+ export const zip = {
56
+ extractAllTo: async (_zipPath, _destDir, _opts) => {
57
+ // Silent in tests by default
58
+ },
59
+ readEntries: async (_zipPath, _handler) => {
60
+ // Silent in tests by default
61
+ },
62
+ toArchive: async (_dstPath, _src, _opts) => {
63
+ // Silent in tests by default
64
+ },
65
+ };
47
66
  // Export other commonly used utilities from @appium/support if needed
48
67
  export default {
49
68
  logger,
50
69
  imageUtil,
70
+ net,
71
+ plist,
72
+ zip,
51
73
  };
52
74
  //# sourceMappingURL=support.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../../src/tests/__mocks__/@appium/support.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6DAA6D;AAE7D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE;IAC3B,yCAAyC;IACzC,kDAAkD;IAClD,CAAC;QACC,KAAK,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC3C,6BAA6B;QAC/B,CAAC;QACD,IAAI,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC1C,6BAA6B;QAC/B,CAAC;QACD,IAAI,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC1C,6BAA6B;QAC/B,CAAC;QACD,KAAK,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC3C,6BAA6B;QAC/B,CAAC;QACD,KAAK,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC3C,6BAA6B;QAC/B,CAAC;KACF,CAAC;CACL,CAAC;AAmBF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACzE,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,KAAe;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IACD,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,CACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC1D,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,iBAAiB;CAC1D,CAAC;AAEF,sEAAsE;AACtE,eAAe;IACb,MAAM;IACN,SAAS;CACV,CAAC"}
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../../src/tests/__mocks__/@appium/support.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6DAA6D;AAE7D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE;IAC3B,yCAAyC;IACzC,kDAAkD;IAClD,CAAC;QACC,KAAK,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC3C,6BAA6B;QAC/B,CAAC;QACD,IAAI,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC1C,6BAA6B;QAC/B,CAAC;QACD,IAAI,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC1C,6BAA6B;QAC/B,CAAC;QACD,KAAK,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC3C,6BAA6B;QAC/B,CAAC;QACD,KAAK,EAAE,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;YAC3C,6BAA6B;QAC/B,CAAC;KACF,CAAC;CACL,CAAC;AAmBF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACzE,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,KAAe;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IACD,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,CACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC1D,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,iBAAiB;CAC1D,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,YAAY,EAAE,KAAK,EACjB,UAAkB,EAClB,QAAgB,EAChB,KAAe,EACf,EAAE;QACF,6BAA6B;IAC/B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,cAAc,EAAE,KAAK,EAAE,UAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;CACnD,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,YAAY,EAAE,KAAK,EAAE,QAAgB,EAAE,QAAgB,EAAE,KAAe,EAAE,EAAE;QAC1E,6BAA6B;IAC/B,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,QAAgB,EAAE,QAAiB,EAAE,EAAE;QACzD,6BAA6B;IAC/B,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,QAAgB,EAAE,IAAc,EAAE,KAAe,EAAE,EAAE;QACrE,6BAA6B;IAC/B,CAAC;CACF,CAAC;AAEF,sEAAsE;AACtE,eAAe;IACb,MAAM;IACN,SAAS;IACT,GAAG;IACH,KAAK;IACL,GAAG;CACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AA6DtD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA0I3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AA8DtD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA2I3D"}
@@ -10,6 +10,7 @@ import deviceInfo from './session/device-info.js';
10
10
  import fileTransfer from './session/file-transfer.js';
11
11
  import driverSettings from './session/driver-settings.js';
12
12
  import prepareIosSimulator from './ios/prepare-ios-simulator.js';
13
+ import prepareIosRealDevice from './ios/prepare-ios-real-device.js';
13
14
  import generateTest from './test-generation/generate-tests.js';
14
15
  import gesture from './gestures/gesture.js';
15
16
  import performActionsTool from './gestures/perform-actions.js';
@@ -135,6 +136,7 @@ export default function registerTools(server) {
135
136
  driverSettings(server);
136
137
  // iOS Setup
137
138
  prepareIosSimulator(server);
139
+ prepareIosRealDevice(server);
138
140
  // Gestures (touch input)
139
141
  gesture(server);
140
142
  dragAndDrop(server);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,3 @@
1
1
  import type { FastMCP } from 'fastmcp';
2
- /**
3
- * Register clipboard read/write tools.
4
- *
5
- * - appium_get_clipboard: reads the current clipboard content as plain text
6
- * - appium_set_clipboard: writes plain text to the clipboard
7
- *
8
- * Both tools rely on the `mobile: getClipboard` / `mobile: setClipboard`
9
- * Appium execute commands and work on Android, iOS, and remote WebDriver
10
- * sessions.
11
- */
12
2
  export default function clipboard(server: FastMCP): void;
13
3
  //# sourceMappingURL=clipboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../src/tools/interactions/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AAUtD;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAyFvD"}
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../src/tools/interactions/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AA0DtD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAiCvD"}
@@ -1,84 +1,65 @@
1
1
  import { z } from 'zod';
2
2
  import { getClipboard, setClipboard } from '../../command.js';
3
3
  import { resolveDriver, textResult, errorResult, toolErrorMessage, } from '../tool-response.js';
4
- /**
5
- * Register clipboard read/write tools.
6
- *
7
- * - appium_get_clipboard: reads the current clipboard content as plain text
8
- * - appium_set_clipboard: writes plain text to the clipboard
9
- *
10
- * Both tools rely on the `mobile: getClipboard` / `mobile: setClipboard`
11
- * Appium execute commands and work on Android, iOS, and remote WebDriver
12
- * sessions.
13
- */
4
+ const schema = z.object({
5
+ action: z
6
+ .enum(['get', 'set'])
7
+ .describe('get: read device clipboard as plain text. set: write plain text to the clipboard.'),
8
+ content: z
9
+ .string()
10
+ .optional()
11
+ .describe('Required when action is set. Plain text to put on the clipboard.'),
12
+ sessionId: z
13
+ .string()
14
+ .optional()
15
+ .describe('Session ID to target. If omitted, uses the active session.'),
16
+ });
17
+ async function handleGet(sessionId) {
18
+ const resolved = resolveDriver(sessionId);
19
+ if (!resolved.ok) {
20
+ return resolved.result;
21
+ }
22
+ const { driver } = resolved;
23
+ const text = await getClipboard(driver);
24
+ if (!text) {
25
+ return textResult('Clipboard is empty.');
26
+ }
27
+ return textResult(`Clipboard content: ${text}`);
28
+ }
29
+ async function handleSet(sessionId, content) {
30
+ const resolved = resolveDriver(sessionId);
31
+ if (!resolved.ok) {
32
+ return resolved.result;
33
+ }
34
+ const { driver } = resolved;
35
+ await setClipboard(driver, content);
36
+ return textResult(`Successfully set clipboard content to: ${content}`);
37
+ }
14
38
  export default function clipboard(server) {
15
- // ─── Get Clipboard ────────────────────────────────────────────────────────
16
- server.addTool({
17
- name: 'appium_mobile_get_clipboard',
18
- description: 'Get the current clipboard content as plain text from the device. ' +
19
- 'Works on Android (UiAutomator2) and iOS (XCUITest). ' +
20
- 'Returns an empty string if the clipboard is empty.',
21
- parameters: z.object({
22
- sessionId: z
23
- .string()
24
- .optional()
25
- .describe('Session ID to target. If omitted, uses the active session.'),
26
- }),
27
- annotations: {
28
- readOnlyHint: true,
29
- openWorldHint: false,
30
- },
31
- execute: async (args, _context) => {
32
- const resolved = resolveDriver(args.sessionId);
33
- if (!resolved.ok) {
34
- return resolved.result;
35
- }
36
- const { driver } = resolved;
37
- try {
38
- const content = await getClipboard(driver);
39
- if (!content) {
40
- return textResult('Clipboard is empty.');
41
- }
42
- return textResult(`Clipboard content: ${content}`);
43
- }
44
- catch (err) {
45
- return errorResult(`Failed to get clipboard content. err: ${toolErrorMessage(err)}`);
46
- }
47
- },
48
- });
49
- // ─── Set Clipboard ────────────────────────────────────────────────────────
50
- const setClipboardSchema = z.object({
51
- content: z
52
- .string()
53
- .describe('The plain text content to write to the device clipboard'),
54
- sessionId: z
55
- .string()
56
- .optional()
57
- .describe('Session ID to target. If omitted, uses the active session.'),
58
- });
59
39
  server.addTool({
60
- name: 'appium_mobile_set_clipboard',
61
- description: 'Set the device clipboard to the provided plain text. ' +
62
- 'Works on Android (UiAutomator2) and iOS (XCUITest). ' +
63
- 'Useful for pre-filling clipboard content before testing paste operations, ' +
64
- 'or for injecting long strings without typing them character by character.',
65
- parameters: setClipboardSchema,
40
+ name: 'appium_mobile_clipboard',
41
+ description: 'Read or set the device clipboard as plain text (Android UiAutomator2 / iOS XCUITest). ' +
42
+ 'action=get returns current text; action=set requires content.',
43
+ parameters: schema,
66
44
  annotations: {
67
45
  readOnlyHint: false,
68
46
  openWorldHint: false,
69
47
  },
70
48
  execute: async (args, _context) => {
71
- const resolved = resolveDriver(args.sessionId);
72
- if (!resolved.ok) {
73
- return resolved.result;
74
- }
75
- const { driver } = resolved;
76
49
  try {
77
- await setClipboard(driver, args.content);
78
- return textResult(`Successfully set clipboard content to: ${args.content}`);
50
+ switch (args.action) {
51
+ case 'get':
52
+ return await handleGet(args.sessionId);
53
+ case 'set': {
54
+ if (args.content === undefined) {
55
+ return errorResult('content is required for set action');
56
+ }
57
+ return await handleSet(args.sessionId, args.content);
58
+ }
59
+ }
79
60
  }
80
61
  catch (err) {
81
- return errorResult(`Failed to set clipboard content. err: ${toolErrorMessage(err)}`);
62
+ return errorResult(`Failed to ${args.action} clipboard. err: ${toolErrorMessage(err)}`);
82
63
  }
83
64
  },
84
65
  });
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../src/tools/interactions/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,MAAe;IAC/C,6EAA6E;IAE7E,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,6BAA6B;QACnC,WAAW,EACT,mEAAmE;YACnE,sDAAsD;YACtD,oDAAoD;QACtD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;SAC1E,CAAC;QACF,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EACZ,IAA4B,EAC5B,QAA6C,EACrB,EAAE;YAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,QAAQ,CAAC,MAAM,CAAC;YACzB,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;YAE5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO,UAAU,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,OAAO,WAAW,CAChB,yCAAyC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CACjE,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,6EAA6E;IAE7E,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;QAClC,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,CAAC,yDAAyD,CAAC;QACtE,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,6BAA6B;QACnC,WAAW,EACT,uDAAuD;YACvD,sDAAsD;YACtD,4EAA4E;YAC5E,2EAA2E;QAC7E,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EACZ,IAAwC,EACxC,QAA6C,EACrB,EAAE;YAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,QAAQ,CAAC,MAAM,CAAC;YACzB,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;YAE5B,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzC,OAAO,UAAU,CACf,0CAA0C,IAAI,CAAC,OAAO,EAAE,CACzD,CAAC;YACJ,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,OAAO,WAAW,CAChB,yCAAyC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CACjE,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../src/tools/interactions/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACpB,QAAQ,CACP,mFAAmF,CACpF;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,kEAAkE,CACnE;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;CAC1E,CAAC,CAAC;AAIH,KAAK,UAAU,SAAS,CAAC,SAAkB;IACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,UAAU,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,SAA6B,EAC7B,OAAe;IAEf,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,MAAe;IAC/C,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EACT,wFAAwF;YACxF,+DAA+D;QACjE,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EACZ,IAAmB,EACnB,QAA6C,EACrB,EAAE;YAC1B,IAAI,CAAC;gBACH,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpB,KAAK,KAAK;wBACR,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACzC,KAAK,KAAK,CAAC,CAAC,CAAC;wBACX,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;4BAC/B,OAAO,WAAW,CAAC,oCAAoC,CAAC,CAAC;wBAC3D,CAAC;wBACD,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,OAAO,WAAW,CAChB,aAAa,IAAI,CAAC,MAAM,oBAAoB,gBAAgB,CAAC,GAAG,CAAC,EAAE,CACpE,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Single-call tool to prepare an iOS real device for Appium testing.
3
+ *
4
+ * Two-mode flow:
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.
11
+ *
12
+ * After a successful run, create_session calls should pass the returned
13
+ * `capabilitiesHint` so Appium installs and launches the signed prebuilt WDA
14
+ * bundle instead of rebuilding it.
15
+ */
16
+ import type { FastMCP } from 'fastmcp';
17
+ export default function prepareIosRealDevice(server: FastMCP): void;
18
+ //# sourceMappingURL=prepare-ios-real-device.d.ts.map
@@ -0,0 +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"}