appium-mcp 1.54.0 → 1.56.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.
- package/CHANGELOG.md +12 -0
- package/README.md +15 -16
- package/dist/tools/app-management/activate-app.d.ts +2 -2
- package/dist/tools/app-management/activate-app.d.ts.map +1 -1
- package/dist/tools/app-management/activate-app.js +21 -58
- package/dist/tools/app-management/activate-app.js.map +1 -1
- package/dist/tools/app-management/app.d.ts +6 -0
- package/dist/tools/app-management/app.d.ts.map +1 -0
- package/dist/tools/app-management/app.js +139 -0
- package/dist/tools/app-management/app.js.map +1 -0
- package/dist/tools/app-management/background-app.d.ts +2 -3
- package/dist/tools/app-management/background-app.d.ts.map +1 -1
- package/dist/tools/app-management/background-app.js +32 -61
- package/dist/tools/app-management/background-app.js.map +1 -1
- package/dist/tools/app-management/clear-app.d.ts +2 -2
- package/dist/tools/app-management/clear-app.d.ts.map +1 -1
- package/dist/tools/app-management/clear-app.js +23 -58
- package/dist/tools/app-management/clear-app.js.map +1 -1
- package/dist/tools/app-management/deep-link.d.ts +2 -2
- package/dist/tools/app-management/deep-link.d.ts.map +1 -1
- package/dist/tools/app-management/deep-link.js +52 -87
- package/dist/tools/app-management/deep-link.js.map +1 -1
- package/dist/tools/app-management/install-app.d.ts +2 -2
- package/dist/tools/app-management/install-app.d.ts.map +1 -1
- package/dist/tools/app-management/install-app.js +19 -45
- package/dist/tools/app-management/install-app.js.map +1 -1
- package/dist/tools/app-management/is-app-installed.d.ts +2 -2
- package/dist/tools/app-management/is-app-installed.d.ts.map +1 -1
- package/dist/tools/app-management/is-app-installed.js +43 -75
- package/dist/tools/app-management/is-app-installed.js.map +1 -1
- package/dist/tools/app-management/list-apps.d.ts +2 -2
- package/dist/tools/app-management/list-apps.d.ts.map +1 -1
- package/dist/tools/app-management/list-apps.js +21 -42
- package/dist/tools/app-management/list-apps.js.map +1 -1
- package/dist/tools/app-management/query-app-state.d.ts +2 -2
- package/dist/tools/app-management/query-app-state.d.ts.map +1 -1
- package/dist/tools/app-management/query-app-state.js +24 -57
- package/dist/tools/app-management/query-app-state.js.map +1 -1
- package/dist/tools/app-management/resolve-app-id.js +1 -1
- package/dist/tools/app-management/resolve-app-id.js.map +1 -1
- package/dist/tools/app-management/terminate-app.d.ts +2 -2
- package/dist/tools/app-management/terminate-app.d.ts.map +1 -1
- package/dist/tools/app-management/terminate-app.js +21 -56
- package/dist/tools/app-management/terminate-app.js.map +1 -1
- package/dist/tools/app-management/uninstall-app.d.ts +2 -2
- package/dist/tools/app-management/uninstall-app.d.ts.map +1 -1
- package/dist/tools/app-management/uninstall-app.js +36 -68
- package/dist/tools/app-management/uninstall-app.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -26
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/session/geolocation.d.ts +1 -3
- package/dist/tools/session/geolocation.d.ts.map +1 -1
- package/dist/tools/session/geolocation.js +109 -168
- package/dist/tools/session/geolocation.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/resources/submodules.zip +0 -0
- package/src/tools/app-management/activate-app.ts +24 -69
- package/src/tools/app-management/app.ts +171 -0
- package/src/tools/app-management/background-app.ts +37 -70
- package/src/tools/app-management/clear-app.ts +27 -65
- package/src/tools/app-management/deep-link.ts +62 -104
- package/src/tools/app-management/install-app.ts +23 -47
- package/src/tools/app-management/is-app-installed.ts +47 -83
- package/src/tools/app-management/list-apps.ts +27 -54
- package/src/tools/app-management/query-app-state.ts +27 -63
- package/src/tools/app-management/resolve-app-id.ts +1 -1
- package/src/tools/app-management/terminate-app.ts +25 -63
- package/src/tools/app-management/uninstall-app.ts +41 -77
- package/src/tools/index.ts +4 -30
- package/src/tools/session/geolocation.ts +136 -184
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [1.56.0](https://github.com/appium/appium-mcp/compare/v1.55.0...v1.56.0) (2026-04-13)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* **app:** consolidate app commands ([#255](https://github.com/appium/appium-mcp/issues/255)) ([bad8cdc](https://github.com/appium/appium-mcp/commit/bad8cdc266b1646f8748bd73e5a6102689e03b7b))
|
|
6
|
+
|
|
7
|
+
## [1.55.0](https://github.com/appium/appium-mcp/compare/v1.54.0...v1.55.0) (2026-04-13)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* consolidate geolocation functionality into a single tool ([#256](https://github.com/appium/appium-mcp/issues/256)) ([9cdedbd](https://github.com/appium/appium-mcp/commit/9cdedbd876ee70e85be17a786cb22069af65f9c0))
|
|
12
|
+
|
|
1
13
|
## [1.54.0](https://github.com/appium/appium-mcp/compare/v1.53.1...v1.54.0) (2026-04-11)
|
|
2
14
|
|
|
3
15
|
### Features
|
package/README.md
CHANGED
|
@@ -274,7 +274,7 @@ The following tools return lightweight text-only responses when NO_UI is enabled
|
|
|
274
274
|
- `select_device` - Returns device list as text without picker UI
|
|
275
275
|
- `create_session` - Returns session info as text without dashboard UI
|
|
276
276
|
- `appium_context` - Returns context list as text with `action=list` without switcher UI
|
|
277
|
-
- `
|
|
277
|
+
- `appium_app` (action=`list`) - Returns app list as JSON without interactive UI
|
|
278
278
|
|
|
279
279
|
**When to Enable NO_UI:**
|
|
280
280
|
|
|
@@ -347,26 +347,25 @@ The default regex pattern allows any URL that starts with `http://` or `https://
|
|
|
347
347
|
| `appium_swipe` | Swipe the screen in a direction (left, right, up, down) or between custom coordinates |
|
|
348
348
|
| `appium_get_page_source` | Get the page source (XML) from the current screen |
|
|
349
349
|
| `appium_orientation` | Get or set device/screen orientation with `action` = `get` or `set` (requires `orientation` for set). |
|
|
350
|
-
| `
|
|
351
|
-
| `appium_get_geolocation` | Get the current GPS coordinates (latitude, longitude, altitude) of the device. |
|
|
352
|
-
| `appium_reset_geolocation` | Reset the simulated/mocked geolocation back to the system default. On iOS, clears the simulated location. On Android real devices, removes the mock location provider. Not supported on Android emulators. |
|
|
350
|
+
| `appium_geolocation` | Get, set, or reset the device GPS coordinates with `action` = `get`, `set`, or `reset`. For `set`, provide `latitude` and `longitude` (and optional `altitude` on Android). Not supported on Android emulators for `reset`. |
|
|
353
351
|
| `appium_screen_recording` | Start or stop screen recording with `action` = `start` or `stop`. On stop, returns the saved MP4 path. |
|
|
354
352
|
| `appium_mobile_device_info` | Get device information, battery status, or current device time. Use `action` = `info` (model, OS version, locale, timezone, screen density, etc.), `battery` (level as percentage and charging state), or `time` (current device time; accepts an optional `format` moment.js string, defaults to ISO 8601). Works on both iOS and Android. |
|
|
355
353
|
|
|
356
354
|
### App Management
|
|
357
355
|
|
|
358
|
-
| Tool
|
|
359
|
-
|
|
360
|
-
| `
|
|
361
|
-
| `
|
|
362
|
-
| `
|
|
363
|
-
| `
|
|
364
|
-
| `
|
|
365
|
-
| `
|
|
366
|
-
| `
|
|
367
|
-
| `
|
|
368
|
-
| `
|
|
369
|
-
| `
|
|
356
|
+
| Tool | Action | Description |
|
|
357
|
+
|---------------|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
358
|
+
| `appium_app` | `activate` | Activate (launch/bring to foreground) a specified app by bundle ID or name |
|
|
359
|
+
| `appium_app` | `terminate` | Terminate (close) a specified app |
|
|
360
|
+
| `appium_app` | `install` | Install an app on the device from a file path |
|
|
361
|
+
| `appium_app` | `uninstall` | Uninstall an app from the device by bundle ID or name |
|
|
362
|
+
| `appium_app` | `list` | List all installed apps on the device (Android and iOS) |
|
|
363
|
+
| `appium_app` | `is_installed` | Check whether an app is installed. Package name for Android, bundle ID for iOS. |
|
|
364
|
+
| `appium_app` | `query_state` | Query the current state of an app: 0=not installed, 1=not running, 2=background suspended, 3=background, 4=foreground |
|
|
365
|
+
| `appium_app` | `background` | Background the current app for a duration (optional; defaults to 5 seconds) |
|
|
366
|
+
| `appium_app` | `clear` | Clear app data and cache without uninstalling (`mobile: clearApp`). Android: stop the app first when possible. iOS: **Simulator only**; not supported on real devices. |
|
|
367
|
+
| `appium_app` | `deep_link` | Open a deep link URL with the default or a specified app
|
|
368
|
+
| `appium_mobile_permissions`| Get, update, or reset app permissions in one tool (`action`: get / update / reset) | Android: list or change runtime permissions. iOS Simulator: get/set privacy via bundle id; reset (`action=reset`) applies to the AUT on sim and device. |
|
|
370
369
|
|
|
371
370
|
### Test Generation & Documentation
|
|
372
371
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
1
|
+
import type { ContentResult } from 'fastmcp';
|
|
2
|
+
export declare function activate(id: string, sessionId?: string): Promise<ContentResult>;
|
|
3
3
|
//# sourceMappingURL=activate-app.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activate-app.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/activate-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"activate-app.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/activate-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAoBxB"}
|
|
@@ -1,62 +1,25 @@
|
|
|
1
1
|
import { getDriver } from '../../session-store.js';
|
|
2
|
-
import { z } from 'zod';
|
|
3
2
|
import { activateApp as _activateApp } from '../../command.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
name: 'appium_activate_app',
|
|
26
|
-
description: 'Activate app by id or human-readable name. Either id or name must be provided.',
|
|
27
|
-
parameters: activateAppSchema,
|
|
28
|
-
annotations: {
|
|
29
|
-
readOnlyHint: false,
|
|
30
|
-
openWorldHint: false,
|
|
31
|
-
},
|
|
32
|
-
execute: async (args, _context) => {
|
|
33
|
-
const driver = getDriver(args.sessionId);
|
|
34
|
-
if (!driver) {
|
|
35
|
-
throw new Error('No driver found');
|
|
36
|
-
}
|
|
37
|
-
const appId = await resolveId(args.id, args.name, args.sessionId);
|
|
38
|
-
try {
|
|
39
|
-
await _activateApp(driver, appId);
|
|
40
|
-
return {
|
|
41
|
-
content: [
|
|
42
|
-
{
|
|
43
|
-
type: 'text',
|
|
44
|
-
text: `App ${appId} activated correctly.`,
|
|
45
|
-
},
|
|
46
|
-
],
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
catch (err) {
|
|
50
|
-
return {
|
|
51
|
-
content: [
|
|
52
|
-
{
|
|
53
|
-
type: 'text',
|
|
54
|
-
text: `Error activating the app ${appId}: ${err.toString()}`,
|
|
55
|
-
},
|
|
56
|
-
],
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
});
|
|
3
|
+
export async function activate(id, sessionId) {
|
|
4
|
+
try {
|
|
5
|
+
const driver = getDriver(sessionId);
|
|
6
|
+
if (!driver) {
|
|
7
|
+
return { content: [{ type: 'text', text: 'No driver found' }] };
|
|
8
|
+
}
|
|
9
|
+
await _activateApp(driver, id);
|
|
10
|
+
return {
|
|
11
|
+
content: [{ type: 'text', text: `App ${id} activated correctly.` }],
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
return {
|
|
16
|
+
content: [
|
|
17
|
+
{
|
|
18
|
+
type: 'text',
|
|
19
|
+
text: `Error activating the app ${id}: ${err.toString()}`,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
61
24
|
}
|
|
62
25
|
//# sourceMappingURL=activate-app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activate-app.js","sourceRoot":"","sources":["../../../src/tools/app-management/activate-app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"activate-app.js","sourceRoot":"","sources":["../../../src/tools/app-management/activate-app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,EAAU,EACV,SAAkB;IAElB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAClE,CAAC;QACD,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;SACpE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,4BAA4B,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE;iBAC1D;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FastMCP } from 'fastmcp';
|
|
2
|
+
declare const APP_ACTIONS: readonly ["activate", "terminate", "install", "uninstall", "list", "is_installed", "query_state", "background", "clear", "deep_link"];
|
|
3
|
+
export type AppAction = (typeof APP_ACTIONS)[number];
|
|
4
|
+
export default function app(server: FastMCP): void;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AActD,QAAA,MAAM,WAAW,uIAWP,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAwErD,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAuEjD"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { resolveAppId, resolveId } from './resolve-app-id.js';
|
|
3
|
+
import { activate } from './activate-app.js';
|
|
4
|
+
import { terminate } from './terminate-app.js';
|
|
5
|
+
import { install } from './install-app.js';
|
|
6
|
+
import { uninstall } from './uninstall-app.js';
|
|
7
|
+
import { list } from './list-apps.js';
|
|
8
|
+
import { isInstalled } from './is-app-installed.js';
|
|
9
|
+
import { queryState } from './query-app-state.js';
|
|
10
|
+
import { background, DEFAULT_BACKGROUND_SECONDS } from './background-app.js';
|
|
11
|
+
import { clear } from './clear-app.js';
|
|
12
|
+
import { deepLink } from './deep-link.js';
|
|
13
|
+
const APP_ACTIONS = [
|
|
14
|
+
'activate',
|
|
15
|
+
'terminate',
|
|
16
|
+
'install',
|
|
17
|
+
'uninstall',
|
|
18
|
+
'list',
|
|
19
|
+
'is_installed',
|
|
20
|
+
'query_state',
|
|
21
|
+
'background',
|
|
22
|
+
'clear',
|
|
23
|
+
'deep_link',
|
|
24
|
+
];
|
|
25
|
+
const schema = z.object({
|
|
26
|
+
action: z
|
|
27
|
+
.enum(APP_ACTIONS)
|
|
28
|
+
.describe('Action to perform. ' +
|
|
29
|
+
'activate: bring app to foreground (requires id or name). ' +
|
|
30
|
+
'terminate: stop a running app (requires id or name). ' +
|
|
31
|
+
'install: install from file path (requires path). ' +
|
|
32
|
+
'uninstall: remove from device (requires id or name; optional keepData for Android). ' +
|
|
33
|
+
'list: list installed apps (optional applicationType for iOS). ' +
|
|
34
|
+
'is_installed: check if app is installed (requires id or name). ' +
|
|
35
|
+
'query_state: get state 0=not installed,1=not running,2=background suspended,3=background,4=foreground (requires id or name). ' +
|
|
36
|
+
'background: send foreground app to background (optional seconds, default 5). ' +
|
|
37
|
+
'clear: clear app data without uninstalling (requires id or name). ' +
|
|
38
|
+
'deep_link: open a URL with an app (requires url; optional id or name).'),
|
|
39
|
+
id: z
|
|
40
|
+
.string()
|
|
41
|
+
.optional()
|
|
42
|
+
.describe('App identifier (package name for Android, bundle ID for iOS). Takes precedence over name. Required for: activate, terminate, uninstall, is_installed, query_state, clear.'),
|
|
43
|
+
name: z
|
|
44
|
+
.string()
|
|
45
|
+
.optional()
|
|
46
|
+
.describe('Human-readable app name (e.g. "Spotify"). Used to resolve the app id. Required (as alternative to id) for: activate, terminate, uninstall, is_installed, query_state, clear.'),
|
|
47
|
+
path: z
|
|
48
|
+
.string()
|
|
49
|
+
.optional()
|
|
50
|
+
.describe('Path to the app file to install. Required for: install.'),
|
|
51
|
+
keepData: z
|
|
52
|
+
.boolean()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe('Keep app data and cache after uninstall. Android only. Used with: uninstall.'),
|
|
55
|
+
applicationType: z
|
|
56
|
+
.enum(['User', 'System'])
|
|
57
|
+
.optional()
|
|
58
|
+
.describe('iOS only: filter by "User" (default) or "System" apps. Used with: list.'),
|
|
59
|
+
seconds: z
|
|
60
|
+
.number()
|
|
61
|
+
.min(-1)
|
|
62
|
+
.max(86400)
|
|
63
|
+
.optional()
|
|
64
|
+
.describe(`Seconds to keep the app in the background. Defaults to ${DEFAULT_BACKGROUND_SECONDS}. Use -1 to stay in background without auto-resuming. Used with: background.`),
|
|
65
|
+
url: z
|
|
66
|
+
.string()
|
|
67
|
+
.optional()
|
|
68
|
+
.describe('Deep link URL to open (e.g. https://example.com, myapp://path). Required for: deep_link.'),
|
|
69
|
+
waitForLaunch: z
|
|
70
|
+
.boolean()
|
|
71
|
+
.optional()
|
|
72
|
+
.describe('Android only. If false, ADB does not wait for the activity to return. Defaults to true. Used with: deep_link.'),
|
|
73
|
+
sessionId: z
|
|
74
|
+
.string()
|
|
75
|
+
.optional()
|
|
76
|
+
.describe('Session ID to target. If omitted, uses the active session.'),
|
|
77
|
+
});
|
|
78
|
+
export default function app(server) {
|
|
79
|
+
server.addTool({
|
|
80
|
+
name: 'appium_app',
|
|
81
|
+
description: `Manage apps on the device. Use the action parameter to choose what to do: ${APP_ACTIONS.join(', ')}.`,
|
|
82
|
+
parameters: schema,
|
|
83
|
+
annotations: {
|
|
84
|
+
readOnlyHint: false,
|
|
85
|
+
openWorldHint: false,
|
|
86
|
+
},
|
|
87
|
+
execute: async (args, _context) => {
|
|
88
|
+
const { action, sessionId } = args;
|
|
89
|
+
if (action === 'list') {
|
|
90
|
+
return list(args.applicationType, sessionId);
|
|
91
|
+
}
|
|
92
|
+
if (action === 'background') {
|
|
93
|
+
return background(args.seconds ?? DEFAULT_BACKGROUND_SECONDS, sessionId);
|
|
94
|
+
}
|
|
95
|
+
if (action === 'install') {
|
|
96
|
+
if (!args.path) {
|
|
97
|
+
return {
|
|
98
|
+
content: [{ type: 'text', text: 'path is required for install' }],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return install(args.path, sessionId);
|
|
102
|
+
}
|
|
103
|
+
if (action === 'deep_link') {
|
|
104
|
+
if (!args.url) {
|
|
105
|
+
return {
|
|
106
|
+
content: [{ type: 'text', text: 'url is required for deep_link' }],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
const appId = args.id ??
|
|
110
|
+
(args.name ? await resolveAppId(args.name, sessionId) : undefined);
|
|
111
|
+
return deepLink(args.url, appId, args.waitForLaunch, sessionId);
|
|
112
|
+
}
|
|
113
|
+
// activate, terminate, uninstall, is_installed, query_state, clear — all require id or name
|
|
114
|
+
const id = await resolveId(args.id, args.name, sessionId);
|
|
115
|
+
if (action === 'activate') {
|
|
116
|
+
return activate(id, sessionId);
|
|
117
|
+
}
|
|
118
|
+
if (action === 'terminate') {
|
|
119
|
+
return terminate(id, sessionId);
|
|
120
|
+
}
|
|
121
|
+
if (action === 'uninstall') {
|
|
122
|
+
return uninstall(id, args.keepData, sessionId);
|
|
123
|
+
}
|
|
124
|
+
if (action === 'is_installed') {
|
|
125
|
+
return isInstalled(id, sessionId);
|
|
126
|
+
}
|
|
127
|
+
if (action === 'query_state') {
|
|
128
|
+
return queryState(id, sessionId);
|
|
129
|
+
}
|
|
130
|
+
if (action === 'clear') {
|
|
131
|
+
return clear(id, sessionId);
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
content: [{ type: 'text', text: `Unknown action: ${action}` }],
|
|
135
|
+
};
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tools/app-management/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
/** When `seconds` is omitted, MCP clients often send `{}` — a middle ground so the transition is visible without a long wait. */
|
|
1
|
+
import type { ContentResult } from 'fastmcp';
|
|
3
2
|
export declare const DEFAULT_BACKGROUND_SECONDS = 5;
|
|
4
|
-
export
|
|
3
|
+
export declare function background(seconds: number, sessionId?: string): Promise<ContentResult>;
|
|
5
4
|
//# sourceMappingURL=background-app.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-app.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/background-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"background-app.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/background-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAiCxB"}
|
|
@@ -1,66 +1,37 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
import { getDriver } from '../../session-store.js';
|
|
3
2
|
import { execute } from '../../command.js';
|
|
4
|
-
/** When `seconds` is omitted, MCP clients often send `{}` — a middle ground so the transition is visible without a long wait. */
|
|
5
3
|
export const DEFAULT_BACKGROUND_SECONDS = 5;
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
? 'The app should stay in the background until you bring it back (e.g. appium_activate_app).'
|
|
39
|
-
: 'The app is sent to the background, then brought back automatically after the wait.';
|
|
40
|
-
return {
|
|
41
|
-
content: [
|
|
42
|
-
{
|
|
43
|
-
type: 'text',
|
|
44
|
-
text: `Background completed (${seconds}s). ${resumeHint}\n\n` +
|
|
45
|
-
`Tips if you saw little or no change: (1) Short positive durations (e.g. 2s) are easy to miss—try 8–15 seconds to see the home/recents screen clearly. ` +
|
|
46
|
-
`(2) The foreground app must be the one you expect—use appium_activate_app with the package/bundle id first if needed. ` +
|
|
47
|
-
`(3) Some OEMs minimize animation; use appium_screenshot before and after to verify.`,
|
|
48
|
-
},
|
|
49
|
-
],
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
54
|
-
return {
|
|
55
|
-
content: [
|
|
56
|
-
{
|
|
57
|
-
type: 'text',
|
|
58
|
-
text: `Failed to background app. Error: ${message}`,
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
});
|
|
4
|
+
export async function background(seconds, sessionId) {
|
|
5
|
+
try {
|
|
6
|
+
const driver = getDriver(sessionId);
|
|
7
|
+
if (!driver) {
|
|
8
|
+
return { content: [{ type: 'text', text: 'No driver found' }] };
|
|
9
|
+
}
|
|
10
|
+
await execute(driver, 'mobile: backgroundApp', { seconds });
|
|
11
|
+
const resumeHint = seconds < 0
|
|
12
|
+
? 'The app should stay in the background until you bring it back (e.g. action=activate).'
|
|
13
|
+
: 'The app is sent to the background, then brought back automatically after the wait.';
|
|
14
|
+
return {
|
|
15
|
+
content: [
|
|
16
|
+
{
|
|
17
|
+
type: 'text',
|
|
18
|
+
text: `Background completed (${seconds}s). ${resumeHint}\n\n` +
|
|
19
|
+
`Tips if you saw little or no change: (1) Short positive durations (e.g. 2s) are easy to miss—try 8–15 seconds to see the home/recents screen clearly. ` +
|
|
20
|
+
`(2) The foreground app must be the one you expect—use action=activate with the package/bundle id first if needed. ` +
|
|
21
|
+
`(3) Some OEMs minimize animation; use appium_screenshot before and after to verify.`,
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
return {
|
|
28
|
+
content: [
|
|
29
|
+
{
|
|
30
|
+
type: 'text',
|
|
31
|
+
text: `Failed to background app. Error: ${err.toString()}`,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
65
36
|
}
|
|
66
37
|
//# sourceMappingURL=background-app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-app.js","sourceRoot":"","sources":["../../../src/tools/app-management/background-app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"background-app.js","sourceRoot":"","sources":["../../../src/tools/app-management/background-app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,SAAkB;IAElB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAClE,CAAC;QACD,MAAM,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,UAAU,GACd,OAAO,GAAG,CAAC;YACT,CAAC,CAAC,uFAAuF;YACzF,CAAC,CAAC,oFAAoF,CAAC;QAC3F,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,yBAAyB,OAAO,OAAO,UAAU,MAAM;wBACvD,wJAAwJ;wBACxJ,oHAAoH;wBACpH,qFAAqF;iBACxF;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oCAAoC,GAAG,CAAC,QAAQ,EAAE,EAAE;iBAC3D;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
1
|
+
import type { ContentResult } from 'fastmcp';
|
|
2
|
+
export declare function clear(id: string, sessionId?: string): Promise<ContentResult>;
|
|
3
3
|
//# sourceMappingURL=clear-app.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear-app.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/clear-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"clear-app.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/clear-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,wBAAsB,KAAK,CACzB,EAAE,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAuBxB"}
|
|
@@ -1,62 +1,27 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
import { getDriver, getPlatformName, PLATFORM } from '../../session-store.js';
|
|
3
2
|
import { execute } from '../../command.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
'Android: uses `pm clear` (package name); stop the app first for reliable results on devices and emulators. ' +
|
|
28
|
-
'iOS: Simulator only (bundle ID); `mobile: clearApp` is not supported on real devices.',
|
|
29
|
-
parameters: schema,
|
|
30
|
-
execute: async (args) => {
|
|
31
|
-
const driver = getDriver(args.sessionId);
|
|
32
|
-
if (!driver) {
|
|
33
|
-
throw new Error('No driver found');
|
|
34
|
-
}
|
|
35
|
-
const id = await resolveId(args.id, args.name, args.sessionId);
|
|
36
|
-
try {
|
|
37
|
-
const platform = getPlatformName(driver);
|
|
38
|
-
const params = platform === PLATFORM.android ? { appId: id } : { bundleId: id };
|
|
39
|
-
await execute(driver, 'mobile: clearApp', params);
|
|
40
|
-
return {
|
|
41
|
-
content: [
|
|
42
|
-
{
|
|
43
|
-
type: 'text',
|
|
44
|
-
text: 'App data cleared successfully',
|
|
45
|
-
},
|
|
46
|
-
],
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
catch (err) {
|
|
50
|
-
return {
|
|
51
|
-
content: [
|
|
52
|
-
{
|
|
53
|
-
type: 'text',
|
|
54
|
-
text: `Failed to clear app data. err: ${err.toString()}`,
|
|
55
|
-
},
|
|
56
|
-
],
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
});
|
|
3
|
+
export async function clear(id, sessionId) {
|
|
4
|
+
try {
|
|
5
|
+
const driver = getDriver(sessionId);
|
|
6
|
+
if (!driver) {
|
|
7
|
+
return { content: [{ type: 'text', text: 'No driver found' }] };
|
|
8
|
+
}
|
|
9
|
+
const platform = getPlatformName(driver);
|
|
10
|
+
const params = platform === PLATFORM.android ? { appId: id } : { bundleId: id };
|
|
11
|
+
await execute(driver, 'mobile: clearApp', params);
|
|
12
|
+
return {
|
|
13
|
+
content: [{ type: 'text', text: 'App data cleared successfully' }],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
return {
|
|
18
|
+
content: [
|
|
19
|
+
{
|
|
20
|
+
type: 'text',
|
|
21
|
+
text: `Failed to clear app data. err: ${err.toString()}`,
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
61
26
|
}
|
|
62
27
|
//# sourceMappingURL=clear-app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear-app.js","sourceRoot":"","sources":["../../../src/tools/app-management/clear-app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"clear-app.js","sourceRoot":"","sources":["../../../src/tools/app-management/clear-app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAU,EACV,SAAkB;IAElB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAClE,CAAC;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,GACV,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACnE,MAAM,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,kCAAkC,GAAG,CAAC,QAAQ,EAAE,EAAE;iBACzD;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
1
|
+
import type { ContentResult } from 'fastmcp';
|
|
2
|
+
export declare function deepLink(url: string, appId?: string, waitForLaunch?: boolean, sessionId?: string): Promise<ContentResult>;
|
|
3
3
|
//# sourceMappingURL=deep-link.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-link.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/deep-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deep-link.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/deep-link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAa7C,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,OAAO,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CA2DxB"}
|