appium-mcp 1.92.2 → 1.92.4
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.92.4](https://github.com/appium/appium-mcp/compare/v1.92.3...v1.92.4) (2026-08-16)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **app-management:** surface app list failures instead of caching an empty list ([#489](https://github.com/appium/appium-mcp/issues/489)) ([f2d38a4](https://github.com/appium/appium-mcp/commit/f2d38a467ddd8845d8aed4908875066e0d2dea18))
|
|
6
|
+
|
|
7
|
+
## [1.92.3](https://github.com/appium/appium-mcp/compare/v1.92.2...v1.92.3) (2026-08-15)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **app-management:** resolve app names against rehydrated sessions ([#488](https://github.com/appium/appium-mcp/issues/488)) ([f268e87](https://github.com/appium/appium-mcp/commit/f268e87ec871b7a39fee1553c2c652799d5210b8))
|
|
12
|
+
|
|
1
13
|
## [1.92.2](https://github.com/appium/appium-mcp/compare/v1.92.1...v1.92.2) (2026-08-13)
|
|
2
14
|
|
|
3
15
|
### Bug Fixes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getSessionId,
|
|
2
|
-
import { noActiveDriverSessionMessage } from '../tool-response.js';
|
|
1
|
+
import { getSessionId, getPlatformName, PLATFORM, isXCUITestDriverSession } from '../../session-store.js';
|
|
2
|
+
import { noActiveDriverSessionMessage, resolveDriver } from '../tool-response.js';
|
|
3
3
|
import { listAppsFromDevice } from './list-apps.js';
|
|
4
4
|
const CACHE_TTL_MS = 60_000; // 1 minute
|
|
5
5
|
const appListCache = new Map();
|
|
@@ -71,10 +71,11 @@ async function getInstalledApps(sessionId) {
|
|
|
71
71
|
if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
|
|
72
72
|
return cached.apps;
|
|
73
73
|
}
|
|
74
|
-
const
|
|
75
|
-
if (!
|
|
74
|
+
const resolved = await resolveDriver(sessionId);
|
|
75
|
+
if (!resolved.ok) {
|
|
76
76
|
throw new Error(noActiveDriverSessionMessage(sessionId));
|
|
77
77
|
}
|
|
78
|
+
const { driver } = resolved;
|
|
78
79
|
const platform = getPlatformName(driver);
|
|
79
80
|
let apps;
|
|
80
81
|
const isSimulator = isXCUITestDriverSession(driver) ? driver.isSimulator() : false;
|
|
@@ -85,6 +86,10 @@ async function getInstalledApps(sessionId) {
|
|
|
85
86
|
listAppsFromDevice(driver, 'User'),
|
|
86
87
|
listAppsFromDevice(driver, 'System'),
|
|
87
88
|
]);
|
|
89
|
+
const failures = results.filter((result) => result.status === 'rejected');
|
|
90
|
+
if (failures.length === results.length) {
|
|
91
|
+
throw failures[0].reason;
|
|
92
|
+
}
|
|
88
93
|
const seen = new Set();
|
|
89
94
|
apps = [];
|
|
90
95
|
for (const result of results) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-app-id.js","sourceRoot":"","sources":["../../../src/tools/app-management/resolve-app-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"resolve-app-id.js","sourceRoot":"","sources":["../../../src/tools/app-management/resolve-app-id.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-mcp",
|
|
3
|
-
"version": "1.92.
|
|
3
|
+
"version": "1.92.4",
|
|
4
4
|
"description": "Intelligent MCP server providing AI assistants with powerful tools and resources for Appium mobile automation",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/appium/appium-mcp/issues"
|
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.92.
|
|
6
|
+
"version": "1.92.4",
|
|
7
7
|
"packages": [
|
|
8
8
|
{
|
|
9
9
|
"registryType": "npm",
|
|
10
10
|
"identifier": "appium-mcp",
|
|
11
|
-
"version": "1.92.
|
|
11
|
+
"version": "1.92.4",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type {XCUITestDriver} from 'appium-xcuitest-driver';
|
|
2
2
|
|
|
3
|
-
import {getSessionId,
|
|
4
|
-
import {noActiveDriverSessionMessage} from '../tool-response.js';
|
|
3
|
+
import {getSessionId, getPlatformName, PLATFORM, isXCUITestDriverSession} from '../../session-store.js';
|
|
4
|
+
import {noActiveDriverSessionMessage, resolveDriver} from '../tool-response.js';
|
|
5
5
|
import {listAppsFromDevice} from './list-apps.js';
|
|
6
6
|
|
|
7
7
|
interface CacheEntry {
|
|
@@ -89,10 +89,11 @@ async function getInstalledApps(sessionId?: string): Promise<{packageName: strin
|
|
|
89
89
|
return cached.apps;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
const
|
|
93
|
-
if (!
|
|
92
|
+
const resolved = await resolveDriver(sessionId);
|
|
93
|
+
if (!resolved.ok) {
|
|
94
94
|
throw new Error(noActiveDriverSessionMessage(sessionId));
|
|
95
95
|
}
|
|
96
|
+
const {driver} = resolved;
|
|
96
97
|
|
|
97
98
|
const platform = getPlatformName(driver);
|
|
98
99
|
|
|
@@ -106,6 +107,10 @@ async function getInstalledApps(sessionId?: string): Promise<{packageName: strin
|
|
|
106
107
|
listAppsFromDevice(driver, 'User'),
|
|
107
108
|
listAppsFromDevice(driver, 'System'),
|
|
108
109
|
]);
|
|
110
|
+
const failures = results.filter((result) => result.status === 'rejected');
|
|
111
|
+
if (failures.length === results.length) {
|
|
112
|
+
throw failures[0].reason;
|
|
113
|
+
}
|
|
109
114
|
const seen = new Set<string>();
|
|
110
115
|
apps = [];
|
|
111
116
|
for (const result of results) {
|