appium-mcp 1.85.6 → 1.85.7
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 +10 -0
- package/README.md +3 -0
- package/dist/tools/session/create-session.d.ts.map +1 -1
- package/dist/tools/session/create-session.js +24 -16
- package/dist/tools/session/create-session.js.map +1 -1
- package/dist/tools/session/select-device.d.ts +22 -4
- package/dist/tools/session/select-device.d.ts.map +1 -1
- package/dist/tools/session/select-device.js +53 -37
- package/dist/tools/session/select-device.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/tools/session/create-session.ts +27 -20
- package/src/tools/session/select-device.ts +77 -40
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## [1.85.7](https://github.com/appium/appium-mcp/compare/v1.85.6...v1.85.7) (2026-06-16)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* **otel:** add OTEL_RESOURCE_ATTRIBUTES env ([#408](https://github.com/appium/appium-mcp/issues/408)) ([d4cbbfb](https://github.com/appium/appium-mcp/commit/d4cbbfbbefd7520853d8fd2e58e6fe6e4a8628e9))
|
|
6
|
+
|
|
7
|
+
### Code Refactoring
|
|
8
|
+
|
|
9
|
+
* store local selected device as one class ([#406](https://github.com/appium/appium-mcp/issues/406)) ([a44107e](https://github.com/appium/appium-mcp/commit/a44107e144d6c8221515689913d52e6f492b63a6))
|
|
10
|
+
|
|
1
11
|
## [1.85.6](https://github.com/appium/appium-mcp/compare/v1.85.5...v1.85.6) (2026-06-14)
|
|
2
12
|
|
|
3
13
|
### Miscellaneous Chores
|
package/README.md
CHANGED
|
@@ -165,6 +165,7 @@ This will automatically configure the MCP server for use with Claude Code. Make
|
|
|
165
165
|
| `OTEL_SERVICE_NAME` | Optional | Service name reported to the OpenTelemetry collector (example: `appium-mcp`). |
|
|
166
166
|
| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Optional | OTLP/HTTP traces endpoint (example: `http://127.0.0.1:4318/v1/traces`). |
|
|
167
167
|
| `OTEL_TRACES_SAMPLER` | Optional | Trace sampling strategy; `parentbased_always_on` samples new root traces and follows parent decisions. |
|
|
168
|
+
| `OTEL_RESOURCE_ATTRIBUTES` | Optional | Comma-separated `key=value` pairs attached as resource attributes to every span (example: `testcase.id=my-test-123,team=platform`). |
|
|
168
169
|
|
|
169
170
|
### OpenTelemetry tracing
|
|
170
171
|
|
|
@@ -174,6 +175,8 @@ OpenTelemetry tracing is disabled by default. Set `APPIUM_MCP_OTEL_ENABLED=true`
|
|
|
174
175
|
APPIUM_MCP_OTEL_ENABLED=true
|
|
175
176
|
# Optional: include sanitized non-sensitive argument values in spans.
|
|
176
177
|
# APPIUM_MCP_OTEL_INCLUDE_ARGUMENT_VALUES=true
|
|
178
|
+
# Optional: attach custom key=value pairs to every span (e.g. test case ID, team name).
|
|
179
|
+
# OTEL_RESOURCE_ATTRIBUTES=testcase.id=my-test-123,team=platform
|
|
177
180
|
OTEL_SERVICE_NAME=appium-mcp
|
|
178
181
|
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://127.0.0.1:4318/v1/traces
|
|
179
182
|
OTEL_TRACES_SAMPLER=parentbased_always_on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-session.d.ts","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-session.d.ts","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAepD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,wCAAyC,CAAC;AAG5E,UAAU,YAAY;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AASD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,YAAY,GACzB,YAAY,CAQd;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC3C,cAAc,EAAE,OAAO,GACtB,YAAY,CAqCd;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,GACtC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC3C,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,YAAY,CAAC,CA8DvB;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,EAChD,eAAe,CAAC,EAAE,MAAM,GACvB,aAAa,GAAG,SAAS,CAe3B;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAKN;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,QAAQ,EAAE,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,aAAa,CAAC,CAmIzB;AA2FD,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { getPortFromUrl } from '../../utils/url.js';
|
|
|
5
5
|
import { AndroidUiautomator2Driver } from 'appium-uiautomator2-driver';
|
|
6
6
|
import { XCUITestDriver } from 'appium-xcuitest-driver';
|
|
7
7
|
import { setSession, listSessions } from '../../session-store.js';
|
|
8
|
-
import {
|
|
8
|
+
import { clearSelectedDevice, getSelectedLocalDevice, } from './select-device.js';
|
|
9
9
|
import { IOSManager } from '../../devicemanager/ios-manager.js';
|
|
10
10
|
import log from '../../logger.js';
|
|
11
11
|
import { createUIResource, createSessionDashboardUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
|
|
@@ -40,8 +40,9 @@ export function buildAndroidCapabilities(configCaps, customCaps, isRemoteServer)
|
|
|
40
40
|
'appium:automationName': 'UiAutomator2',
|
|
41
41
|
'appium:deviceName': 'Android Device',
|
|
42
42
|
};
|
|
43
|
-
const
|
|
44
|
-
|
|
43
|
+
const selectedLocalDevice = getSelectedLocalDevice();
|
|
44
|
+
const selectedDeviceUdid = !isRemoteServer && selectedLocalDevice?.platform === 'android'
|
|
45
|
+
? selectedLocalDevice?.udid
|
|
45
46
|
: undefined;
|
|
46
47
|
const additionalCaps = {
|
|
47
48
|
'appium:settings[actionAcknowledgmentTimeout]': 0,
|
|
@@ -57,7 +58,10 @@ export function buildAndroidCapabilities(configCaps, customCaps, isRemoteServer)
|
|
|
57
58
|
...(selectedDeviceUdid && { 'appium:udid': selectedDeviceUdid }),
|
|
58
59
|
...customCaps,
|
|
59
60
|
};
|
|
60
|
-
if (
|
|
61
|
+
if (selectedLocalDevice) {
|
|
62
|
+
// clear the selected device since we're now using it to create a session,
|
|
63
|
+
// so it doesn't affect future session creations that don't specify a device.
|
|
64
|
+
// Clearing it later would cause race conditions if multiple session creations happen in parallel.
|
|
61
65
|
clearSelectedDevice();
|
|
62
66
|
}
|
|
63
67
|
return filterEmptyCapabilities(capabilities);
|
|
@@ -72,7 +76,8 @@ export async function validateIOSDeviceSelection(deviceType) {
|
|
|
72
76
|
const iosManager = IOSManager.getInstance();
|
|
73
77
|
const devices = await iosManager.getDevicesByType(deviceType);
|
|
74
78
|
if (devices.length > 1) {
|
|
75
|
-
const
|
|
79
|
+
const selectedLocalDevice = getSelectedLocalDevice();
|
|
80
|
+
const selectedDevice = selectedLocalDevice?.udid;
|
|
76
81
|
if (!selectedDevice) {
|
|
77
82
|
throw new Error(`Multiple iOS ${deviceType === 'simulator' ? 'simulators' : 'devices'} found (${devices.length}). Use select_device with platform=ios and iosDeviceType=${deviceType} to choose one, then call appium_session_management with action=create.`);
|
|
78
83
|
}
|
|
@@ -82,16 +87,15 @@ export async function validateIOSDeviceSelection(deviceType) {
|
|
|
82
87
|
* Build iOS capabilities by merging defaults, config, device selection, and custom capabilities
|
|
83
88
|
*/
|
|
84
89
|
export async function buildIOSCapabilities(configCaps, customCaps, isRemoteServer) {
|
|
85
|
-
const
|
|
90
|
+
const selectedLocalDevice = getSelectedLocalDevice();
|
|
91
|
+
const selectedIOSDevice = !isRemoteServer && selectedLocalDevice?.platform === 'ios'
|
|
92
|
+
? selectedLocalDevice
|
|
93
|
+
: null;
|
|
94
|
+
const deviceType = selectedIOSDevice?.type || null;
|
|
86
95
|
await validateIOSDeviceSelection(deviceType);
|
|
87
96
|
// Get selected device info BEFORE constructing defaultCaps so we can use the actual device name
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
? getSelectedDevice()
|
|
91
|
-
: undefined;
|
|
92
|
-
const selectedDeviceInfo = hasSelectedIOSDevice
|
|
93
|
-
? getSelectedDeviceInfo()
|
|
94
|
-
: undefined;
|
|
97
|
+
const selectedDeviceUdid = selectedIOSDevice?.udid;
|
|
98
|
+
const selectedDeviceInfo = selectedIOSDevice?.info;
|
|
95
99
|
log.debug('Selected device info:', selectedDeviceInfo);
|
|
96
100
|
const defaultCaps = {
|
|
97
101
|
platformName: 'iOS',
|
|
@@ -124,7 +128,10 @@ export async function buildIOSCapabilities(configCaps, customCaps, isRemoteServe
|
|
|
124
128
|
// customCaps should override additionalCaps.
|
|
125
129
|
...customCaps,
|
|
126
130
|
};
|
|
127
|
-
if (
|
|
131
|
+
if (selectedIOSDevice) {
|
|
132
|
+
// clear the selected device since we're now using it to create a session,
|
|
133
|
+
// so it doesn't affect future session creations that don't specify a device.
|
|
134
|
+
// Clearing it later would cause race conditions if multiple session creations happen in parallel.
|
|
128
135
|
clearSelectedDevice();
|
|
129
136
|
}
|
|
130
137
|
return filterEmptyCapabilities(capabilities);
|
|
@@ -136,7 +143,8 @@ export function validateLocalCreatePlatformMatch(platform, remoteServerUrl) {
|
|
|
136
143
|
if (remoteServerUrl || platform === 'general') {
|
|
137
144
|
return undefined;
|
|
138
145
|
}
|
|
139
|
-
const
|
|
146
|
+
const selectedLocalDevice = getSelectedLocalDevice();
|
|
147
|
+
const selectedPlatform = selectedLocalDevice?.platform;
|
|
140
148
|
if (selectedPlatform && selectedPlatform !== platform) {
|
|
141
149
|
return errorResult(`platform=${platform} does not match select_device (platform=${selectedPlatform}).`);
|
|
142
150
|
}
|
|
@@ -274,7 +282,7 @@ function buildCreateSessionFailureMessage(error, ctx) {
|
|
|
274
282
|
}
|
|
275
283
|
const caps = ctx.finalCapabilities ?? {};
|
|
276
284
|
const hasDeviceTarget = Boolean(caps['appium:udid'] || caps['appium:deviceName']) ||
|
|
277
|
-
Boolean(
|
|
285
|
+
Boolean(getSelectedLocalDevice());
|
|
278
286
|
if (!hasDeviceTarget &&
|
|
279
287
|
(ctx.platform === 'ios' || ctx.platform === 'android')) {
|
|
280
288
|
return `${base} For local sessions without appium:udid (or a prior select_device), use select_device with a matching platform or pass target device capabilities, then action=create.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export declare class SelectedLocalDevice {
|
|
2
|
+
/**
|
|
3
|
+
* Represents a selected local device for session creation.
|
|
4
|
+
* This is used to store the user's device selection from the select_device tool.
|
|
5
|
+
*/
|
|
6
|
+
private _udid;
|
|
7
|
+
private _platform;
|
|
8
|
+
private _type;
|
|
9
|
+
private _info;
|
|
10
|
+
constructor(udid: string | null, platform: 'android' | 'ios' | null, type: 'simulator' | 'real' | null, info: any);
|
|
11
|
+
get udid(): string | null;
|
|
12
|
+
get platform(): 'android' | 'ios' | null;
|
|
13
|
+
get type(): 'simulator' | 'real' | null;
|
|
14
|
+
get info(): any;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @returns The currently selected local device, or null if no device is selected.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getSelectedLocalDevice(): SelectedLocalDevice | null;
|
|
20
|
+
/**
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
5
23
|
export declare function clearSelectedDevice(): void;
|
|
6
24
|
export default function selectDevice(server: any): void;
|
|
7
25
|
//# sourceMappingURL=select-device.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-device.d.ts","sourceRoot":"","sources":["../../../src/tools/session/select-device.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"select-device.d.ts","sourceRoot":"","sources":["../../../src/tools/session/select-device.ts"],"names":[],"mappings":"AA0BA,qBAAa,mBAAmB;IAC9B;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,KAAK,CAAM;gBAGjB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,IAAI,EAClC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,EACjC,IAAI,EAAE,GAAG;IAQX,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED,IAAI,QAAQ,IAAI,SAAS,GAAG,KAAK,GAAG,IAAI,CAEvC;IAED,IAAI,IAAI,IAAI,WAAW,GAAG,MAAM,GAAG,IAAI,CAEtC;IAED,IAAI,IAAI,IAAI,GAAG,CAEd;CACF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,GAAG,IAAI,CAEnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAqEtD"}
|
|
@@ -7,28 +7,47 @@ import { z } from 'zod';
|
|
|
7
7
|
import log from '../../logger.js';
|
|
8
8
|
import { createUIResource, createDevicePickerUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
|
|
9
9
|
import { errorResult, textResult, toolErrorMessage } from '../tool-response.js';
|
|
10
|
-
// Store selected device globally
|
|
11
|
-
let
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
// Store selected local device globally
|
|
11
|
+
let selectedLocalDevice = null;
|
|
12
|
+
export class SelectedLocalDevice {
|
|
13
|
+
/**
|
|
14
|
+
* Represents a selected local device for session creation.
|
|
15
|
+
* This is used to store the user's device selection from the select_device tool.
|
|
16
|
+
*/
|
|
17
|
+
_udid;
|
|
18
|
+
_platform;
|
|
19
|
+
_type;
|
|
20
|
+
_info;
|
|
21
|
+
constructor(udid, platform, type, info) {
|
|
22
|
+
this._udid = udid;
|
|
23
|
+
this._platform = platform;
|
|
24
|
+
this._type = type;
|
|
25
|
+
this._info = info;
|
|
26
|
+
}
|
|
27
|
+
get udid() {
|
|
28
|
+
return this._udid;
|
|
29
|
+
}
|
|
30
|
+
get platform() {
|
|
31
|
+
return this._platform;
|
|
32
|
+
}
|
|
33
|
+
get type() {
|
|
34
|
+
return this._type;
|
|
35
|
+
}
|
|
36
|
+
get info() {
|
|
37
|
+
return this._info;
|
|
38
|
+
}
|
|
23
39
|
}
|
|
24
|
-
|
|
25
|
-
|
|
40
|
+
/**
|
|
41
|
+
* @returns The currently selected local device, or null if no device is selected.
|
|
42
|
+
*/
|
|
43
|
+
export function getSelectedLocalDevice() {
|
|
44
|
+
return selectedLocalDevice;
|
|
26
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
27
49
|
export function clearSelectedDevice() {
|
|
28
|
-
|
|
29
|
-
selectedDevicePlatform = null;
|
|
30
|
-
selectedDeviceType = null;
|
|
31
|
-
selectedDeviceInfo = null;
|
|
50
|
+
selectedLocalDevice = null;
|
|
32
51
|
}
|
|
33
52
|
export default function selectDevice(server) {
|
|
34
53
|
server.addTool({
|
|
@@ -108,12 +127,9 @@ function selectAndroidDevice(deviceUdid, devices) {
|
|
|
108
127
|
if (!selectedDevice) {
|
|
109
128
|
return errorResult(`Device with UDID "${deviceUdid}" not found. Available devices: ${devices.map((d) => d.udid).join(', ')}. Call select_device again with deviceUdid set to one of these values.`);
|
|
110
129
|
}
|
|
111
|
-
selectedDeviceUdid = deviceUdid;
|
|
112
|
-
selectedDevicePlatform = 'android';
|
|
113
|
-
selectedDeviceType = null;
|
|
114
|
-
selectedDeviceInfo = selectedDevice;
|
|
115
130
|
log.info(`Device selected: ${deviceUdid}`);
|
|
116
|
-
|
|
131
|
+
selectedLocalDevice = new SelectedLocalDevice(deviceUdid, 'android', null, selectedDevice);
|
|
132
|
+
return selectedLocalDevice;
|
|
117
133
|
}
|
|
118
134
|
/**
|
|
119
135
|
* Format device selection response for Android
|
|
@@ -175,12 +191,12 @@ function selectIOSDevice(deviceUdid, devices, iosDeviceType) {
|
|
|
175
191
|
result: errorResult(`Device with UDID "${deviceUdid}" not found. Available devices: ${deviceList}. Call select_device again with deviceUdid set to one of these values.`),
|
|
176
192
|
};
|
|
177
193
|
}
|
|
178
|
-
selectedDeviceUdid = deviceUdid;
|
|
179
|
-
selectedDevicePlatform = 'ios';
|
|
180
|
-
selectedDeviceType = iosDeviceType;
|
|
181
|
-
selectedDeviceInfo = selectedDevice;
|
|
182
194
|
log.info(`iOS ${iosDeviceType} selected: ${selectedDevice.name} (${deviceUdid})`);
|
|
183
|
-
|
|
195
|
+
selectedLocalDevice = new SelectedLocalDevice(deviceUdid, 'ios', iosDeviceType, selectedDevice);
|
|
196
|
+
return {
|
|
197
|
+
ok: true,
|
|
198
|
+
device: selectedLocalDevice,
|
|
199
|
+
};
|
|
184
200
|
}
|
|
185
201
|
/**
|
|
186
202
|
* Format device selection response for iOS
|
|
@@ -217,17 +233,17 @@ async function handleAndroidDeviceSelection(deviceUdid) {
|
|
|
217
233
|
}
|
|
218
234
|
const { devices } = listed;
|
|
219
235
|
if (deviceUdid) {
|
|
220
|
-
const
|
|
221
|
-
if (
|
|
222
|
-
return
|
|
236
|
+
const selected = selectAndroidDevice(deviceUdid, devices);
|
|
237
|
+
if (!(selected instanceof SelectedLocalDevice)) {
|
|
238
|
+
return selected;
|
|
223
239
|
}
|
|
224
240
|
return formatAndroidSelectionResponse(deviceUdid);
|
|
225
241
|
}
|
|
226
242
|
// Auto-select when only one device is available
|
|
227
243
|
if (devices.length === 1) {
|
|
228
|
-
const
|
|
229
|
-
if (
|
|
230
|
-
return
|
|
244
|
+
const selected = selectAndroidDevice(devices[0].udid, devices);
|
|
245
|
+
if (!(selected instanceof SelectedLocalDevice)) {
|
|
246
|
+
return selected;
|
|
231
247
|
}
|
|
232
248
|
return formatAndroidSelectionResponse(devices[0].udid);
|
|
233
249
|
}
|
|
@@ -255,7 +271,7 @@ async function handleIOSDeviceSelection(iosDeviceType, deviceUdid) {
|
|
|
255
271
|
if (!selected.ok) {
|
|
256
272
|
return selected.result;
|
|
257
273
|
}
|
|
258
|
-
return formatIOSSelectionResponse(selected.device.name, deviceUdid);
|
|
274
|
+
return formatIOSSelectionResponse(selected.device.info.name, deviceUdid);
|
|
259
275
|
}
|
|
260
276
|
// Auto-select when only one device is available
|
|
261
277
|
if (devices.length === 1) {
|
|
@@ -263,7 +279,7 @@ async function handleIOSDeviceSelection(iosDeviceType, deviceUdid) {
|
|
|
263
279
|
if (!selected.ok) {
|
|
264
280
|
return selected.result;
|
|
265
281
|
}
|
|
266
|
-
return formatIOSSelectionResponse(selected.device.name, devices[0].udid);
|
|
282
|
+
return formatIOSSelectionResponse(selected.device.info.name, devices[0].udid);
|
|
267
283
|
}
|
|
268
284
|
return formatIOSListResponse(devices, iosDeviceType);
|
|
269
285
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-device.js","sourceRoot":"","sources":["../../../src/tools/session/select-device.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,
|
|
1
|
+
{"version":3,"file":"select-device.js","sourceRoot":"","sources":["../../../src/tools/session/select-device.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
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.85.
|
|
6
|
+
"version": "1.85.7",
|
|
7
7
|
"packages": [
|
|
8
8
|
{
|
|
9
9
|
"registryType": "npm",
|
|
10
10
|
"identifier": "appium-mcp",
|
|
11
|
-
"version": "1.85.
|
|
11
|
+
"version": "1.85.7",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
}
|
|
@@ -6,11 +6,8 @@ import { AndroidUiautomator2Driver } from 'appium-uiautomator2-driver';
|
|
|
6
6
|
import { XCUITestDriver } from 'appium-xcuitest-driver';
|
|
7
7
|
import { setSession, listSessions } from '../../session-store.js';
|
|
8
8
|
import {
|
|
9
|
-
getSelectedDevice,
|
|
10
|
-
getSelectedDevicePlatform,
|
|
11
|
-
getSelectedDeviceType,
|
|
12
|
-
getSelectedDeviceInfo,
|
|
13
9
|
clearSelectedDevice,
|
|
10
|
+
getSelectedLocalDevice,
|
|
14
11
|
} from './select-device.js';
|
|
15
12
|
import { IOSManager } from '../../devicemanager/ios-manager.js';
|
|
16
13
|
import log from '../../logger.js';
|
|
@@ -76,9 +73,10 @@ export function buildAndroidCapabilities(
|
|
|
76
73
|
'appium:deviceName': 'Android Device',
|
|
77
74
|
};
|
|
78
75
|
|
|
76
|
+
const selectedLocalDevice = getSelectedLocalDevice();
|
|
79
77
|
const selectedDeviceUdid =
|
|
80
|
-
!isRemoteServer &&
|
|
81
|
-
?
|
|
78
|
+
!isRemoteServer && selectedLocalDevice?.platform === 'android'
|
|
79
|
+
? selectedLocalDevice?.udid
|
|
82
80
|
: undefined;
|
|
83
81
|
|
|
84
82
|
const additionalCaps = {
|
|
@@ -97,7 +95,10 @@ export function buildAndroidCapabilities(
|
|
|
97
95
|
...customCaps,
|
|
98
96
|
};
|
|
99
97
|
|
|
100
|
-
if (
|
|
98
|
+
if (selectedLocalDevice) {
|
|
99
|
+
// clear the selected device since we're now using it to create a session,
|
|
100
|
+
// so it doesn't affect future session creations that don't specify a device.
|
|
101
|
+
// Clearing it later would cause race conditions if multiple session creations happen in parallel.
|
|
101
102
|
clearSelectedDevice();
|
|
102
103
|
}
|
|
103
104
|
|
|
@@ -118,7 +119,8 @@ export async function validateIOSDeviceSelection(
|
|
|
118
119
|
const devices = await iosManager.getDevicesByType(deviceType);
|
|
119
120
|
|
|
120
121
|
if (devices.length > 1) {
|
|
121
|
-
const
|
|
122
|
+
const selectedLocalDevice = getSelectedLocalDevice();
|
|
123
|
+
const selectedDevice = selectedLocalDevice?.udid;
|
|
122
124
|
if (!selectedDevice) {
|
|
123
125
|
throw new Error(
|
|
124
126
|
`Multiple iOS ${deviceType === 'simulator' ? 'simulators' : 'devices'} found (${devices.length}). Use select_device with platform=ios and iosDeviceType=${deviceType} to choose one, then call appium_session_management with action=create.`
|
|
@@ -135,18 +137,18 @@ export async function buildIOSCapabilities(
|
|
|
135
137
|
customCaps: Record<string, any> | undefined,
|
|
136
138
|
isRemoteServer: boolean
|
|
137
139
|
): Promise<Capabilities> {
|
|
138
|
-
const
|
|
140
|
+
const selectedLocalDevice = getSelectedLocalDevice();
|
|
141
|
+
const selectedIOSDevice =
|
|
142
|
+
!isRemoteServer && selectedLocalDevice?.platform === 'ios'
|
|
143
|
+
? selectedLocalDevice
|
|
144
|
+
: null;
|
|
145
|
+
|
|
146
|
+
const deviceType = selectedIOSDevice?.type || null;
|
|
139
147
|
await validateIOSDeviceSelection(deviceType);
|
|
140
148
|
|
|
141
149
|
// Get selected device info BEFORE constructing defaultCaps so we can use the actual device name
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
const selectedDeviceUdid = hasSelectedIOSDevice
|
|
145
|
-
? getSelectedDevice()
|
|
146
|
-
: undefined;
|
|
147
|
-
const selectedDeviceInfo = hasSelectedIOSDevice
|
|
148
|
-
? getSelectedDeviceInfo()
|
|
149
|
-
: undefined;
|
|
150
|
+
const selectedDeviceUdid = selectedIOSDevice?.udid;
|
|
151
|
+
const selectedDeviceInfo = selectedIOSDevice?.info;
|
|
150
152
|
|
|
151
153
|
log.debug('Selected device info:', selectedDeviceInfo);
|
|
152
154
|
|
|
@@ -188,7 +190,10 @@ export async function buildIOSCapabilities(
|
|
|
188
190
|
...customCaps,
|
|
189
191
|
};
|
|
190
192
|
|
|
191
|
-
if (
|
|
193
|
+
if (selectedIOSDevice) {
|
|
194
|
+
// clear the selected device since we're now using it to create a session,
|
|
195
|
+
// so it doesn't affect future session creations that don't specify a device.
|
|
196
|
+
// Clearing it later would cause race conditions if multiple session creations happen in parallel.
|
|
192
197
|
clearSelectedDevice();
|
|
193
198
|
}
|
|
194
199
|
|
|
@@ -206,7 +211,9 @@ export function validateLocalCreatePlatformMatch(
|
|
|
206
211
|
return undefined;
|
|
207
212
|
}
|
|
208
213
|
|
|
209
|
-
const
|
|
214
|
+
const selectedLocalDevice = getSelectedLocalDevice();
|
|
215
|
+
|
|
216
|
+
const selectedPlatform = selectedLocalDevice?.platform;
|
|
210
217
|
if (selectedPlatform && selectedPlatform !== platform) {
|
|
211
218
|
return errorResult(
|
|
212
219
|
`platform=${platform} does not match select_device (platform=${selectedPlatform}).`
|
|
@@ -415,7 +422,7 @@ function buildCreateSessionFailureMessage(
|
|
|
415
422
|
const caps: Record<string, any> = ctx.finalCapabilities ?? {};
|
|
416
423
|
const hasDeviceTarget =
|
|
417
424
|
Boolean(caps['appium:udid'] || caps['appium:deviceName']) ||
|
|
418
|
-
Boolean(
|
|
425
|
+
Boolean(getSelectedLocalDevice());
|
|
419
426
|
|
|
420
427
|
if (
|
|
421
428
|
!hasDeviceTarget &&
|
|
@@ -13,40 +13,68 @@ import {
|
|
|
13
13
|
import type { ContentResult } from 'fastmcp';
|
|
14
14
|
import { errorResult, textResult, toolErrorMessage } from '../tool-response.js';
|
|
15
15
|
|
|
16
|
-
// Store selected device globally
|
|
17
|
-
let
|
|
18
|
-
let selectedDevicePlatform: 'android' | 'ios' | null = null;
|
|
19
|
-
let selectedDeviceType: 'simulator' | 'real' | null = null;
|
|
20
|
-
let selectedDeviceInfo: any = null;
|
|
16
|
+
// Store selected local device globally
|
|
17
|
+
let selectedLocalDevice: SelectedLocalDevice | null = null;
|
|
21
18
|
|
|
22
19
|
type DevicesOk = { ok: true; devices: any[] };
|
|
23
20
|
|
|
24
21
|
type DevicesFail = { ok: false; result: ContentResult };
|
|
25
22
|
|
|
26
|
-
type SelectIOSOk = { ok: true; device:
|
|
23
|
+
type SelectIOSOk = { ok: true; device: SelectedLocalDevice };
|
|
27
24
|
|
|
28
25
|
type SelectIOSFail = { ok: false; result: ContentResult };
|
|
29
26
|
|
|
30
|
-
export
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
export class SelectedLocalDevice {
|
|
28
|
+
/**
|
|
29
|
+
* Represents a selected local device for session creation.
|
|
30
|
+
* This is used to store the user's device selection from the select_device tool.
|
|
31
|
+
*/
|
|
32
|
+
private _udid: string | null;
|
|
33
|
+
private _platform: 'android' | 'ios' | null;
|
|
34
|
+
private _type: 'simulator' | 'real' | null;
|
|
35
|
+
private _info: any;
|
|
36
|
+
|
|
37
|
+
constructor(
|
|
38
|
+
udid: string | null,
|
|
39
|
+
platform: 'android' | 'ios' | null,
|
|
40
|
+
type: 'simulator' | 'real' | null,
|
|
41
|
+
info: any
|
|
42
|
+
) {
|
|
43
|
+
this._udid = udid;
|
|
44
|
+
this._platform = platform;
|
|
45
|
+
this._type = type;
|
|
46
|
+
this._info = info;
|
|
47
|
+
}
|
|
33
48
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
49
|
+
get udid(): string | null {
|
|
50
|
+
return this._udid;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
get platform(): 'android' | 'ios' | null {
|
|
54
|
+
return this._platform;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
get type(): 'simulator' | 'real' | null {
|
|
58
|
+
return this._type;
|
|
59
|
+
}
|
|
37
60
|
|
|
38
|
-
|
|
39
|
-
|
|
61
|
+
get info(): any {
|
|
62
|
+
return this._info;
|
|
63
|
+
}
|
|
40
64
|
}
|
|
41
|
-
|
|
42
|
-
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @returns The currently selected local device, or null if no device is selected.
|
|
68
|
+
*/
|
|
69
|
+
export function getSelectedLocalDevice(): SelectedLocalDevice | null {
|
|
70
|
+
return selectedLocalDevice;
|
|
43
71
|
}
|
|
44
72
|
|
|
73
|
+
/**
|
|
74
|
+
* @returns
|
|
75
|
+
*/
|
|
45
76
|
export function clearSelectedDevice(): void {
|
|
46
|
-
|
|
47
|
-
selectedDevicePlatform = null;
|
|
48
|
-
selectedDeviceType = null;
|
|
49
|
-
selectedDeviceInfo = null;
|
|
77
|
+
selectedLocalDevice = null;
|
|
50
78
|
}
|
|
51
79
|
|
|
52
80
|
export default function selectDevice(server: any): void {
|
|
@@ -145,7 +173,7 @@ async function getAndroidDevices(): Promise<DevicesOk | DevicesFail> {
|
|
|
145
173
|
function selectAndroidDevice(
|
|
146
174
|
deviceUdid: string,
|
|
147
175
|
devices: any[]
|
|
148
|
-
): ContentResult |
|
|
176
|
+
): ContentResult | SelectedLocalDevice {
|
|
149
177
|
const selectedDevice = devices.find((d) => d.udid === deviceUdid);
|
|
150
178
|
if (!selectedDevice) {
|
|
151
179
|
return errorResult(
|
|
@@ -153,12 +181,14 @@ function selectAndroidDevice(
|
|
|
153
181
|
);
|
|
154
182
|
}
|
|
155
183
|
|
|
156
|
-
selectedDeviceUdid = deviceUdid;
|
|
157
|
-
selectedDevicePlatform = 'android';
|
|
158
|
-
selectedDeviceType = null;
|
|
159
|
-
selectedDeviceInfo = selectedDevice;
|
|
160
184
|
log.info(`Device selected: ${deviceUdid}`);
|
|
161
|
-
|
|
185
|
+
selectedLocalDevice = new SelectedLocalDevice(
|
|
186
|
+
deviceUdid,
|
|
187
|
+
'android',
|
|
188
|
+
null,
|
|
189
|
+
selectedDevice
|
|
190
|
+
);
|
|
191
|
+
return selectedLocalDevice;
|
|
162
192
|
}
|
|
163
193
|
|
|
164
194
|
/**
|
|
@@ -256,15 +286,19 @@ function selectIOSDevice(
|
|
|
256
286
|
};
|
|
257
287
|
}
|
|
258
288
|
|
|
259
|
-
selectedDeviceUdid = deviceUdid;
|
|
260
|
-
selectedDevicePlatform = 'ios';
|
|
261
|
-
selectedDeviceType = iosDeviceType;
|
|
262
|
-
selectedDeviceInfo = selectedDevice;
|
|
263
289
|
log.info(
|
|
264
290
|
`iOS ${iosDeviceType} selected: ${selectedDevice.name} (${deviceUdid})`
|
|
265
291
|
);
|
|
266
|
-
|
|
267
|
-
|
|
292
|
+
selectedLocalDevice = new SelectedLocalDevice(
|
|
293
|
+
deviceUdid,
|
|
294
|
+
'ios',
|
|
295
|
+
iosDeviceType,
|
|
296
|
+
selectedDevice
|
|
297
|
+
);
|
|
298
|
+
return {
|
|
299
|
+
ok: true,
|
|
300
|
+
device: selectedLocalDevice,
|
|
301
|
+
};
|
|
268
302
|
}
|
|
269
303
|
|
|
270
304
|
/**
|
|
@@ -331,18 +365,18 @@ async function handleAndroidDeviceSelection(
|
|
|
331
365
|
const { devices } = listed;
|
|
332
366
|
|
|
333
367
|
if (deviceUdid) {
|
|
334
|
-
const
|
|
335
|
-
if (
|
|
336
|
-
return
|
|
368
|
+
const selected = selectAndroidDevice(deviceUdid, devices);
|
|
369
|
+
if (!(selected instanceof SelectedLocalDevice)) {
|
|
370
|
+
return selected;
|
|
337
371
|
}
|
|
338
372
|
return formatAndroidSelectionResponse(deviceUdid);
|
|
339
373
|
}
|
|
340
374
|
|
|
341
375
|
// Auto-select when only one device is available
|
|
342
376
|
if (devices.length === 1) {
|
|
343
|
-
const
|
|
344
|
-
if (
|
|
345
|
-
return
|
|
377
|
+
const selected = selectAndroidDevice(devices[0].udid, devices);
|
|
378
|
+
if (!(selected instanceof SelectedLocalDevice)) {
|
|
379
|
+
return selected;
|
|
346
380
|
}
|
|
347
381
|
return formatAndroidSelectionResponse(devices[0].udid);
|
|
348
382
|
}
|
|
@@ -380,7 +414,7 @@ async function handleIOSDeviceSelection(
|
|
|
380
414
|
if (!selected.ok) {
|
|
381
415
|
return selected.result;
|
|
382
416
|
}
|
|
383
|
-
return formatIOSSelectionResponse(selected.device.name, deviceUdid);
|
|
417
|
+
return formatIOSSelectionResponse(selected.device.info.name, deviceUdid);
|
|
384
418
|
}
|
|
385
419
|
|
|
386
420
|
// Auto-select when only one device is available
|
|
@@ -389,7 +423,10 @@ async function handleIOSDeviceSelection(
|
|
|
389
423
|
if (!selected.ok) {
|
|
390
424
|
return selected.result;
|
|
391
425
|
}
|
|
392
|
-
return formatIOSSelectionResponse(
|
|
426
|
+
return formatIOSSelectionResponse(
|
|
427
|
+
selected.device.info.name,
|
|
428
|
+
devices[0].udid
|
|
429
|
+
);
|
|
393
430
|
}
|
|
394
431
|
|
|
395
432
|
return formatIOSListResponse(devices, iosDeviceType!);
|