appium-mcp 1.88.4 → 1.89.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 CHANGED
@@ -1,3 +1,15 @@
1
+ ## [1.89.0](https://github.com/appium/appium-mcp/compare/v1.88.5...v1.89.0) (2026-07-26)
2
+
3
+ ### Features
4
+
5
+ * add payload-free tool result size telemetry ([#476](https://github.com/appium/appium-mcp/issues/476)) ([ca0262d](https://github.com/appium/appium-mcp/commit/ca0262d38a18747f08c1f08c94099c7b82150272))
6
+
7
+ ## [1.88.5](https://github.com/appium/appium-mcp/compare/v1.88.4...v1.88.5) (2026-07-26)
8
+
9
+ ### Performance Improvements
10
+
11
+ * cap tool discovery at 45k characters ([#475](https://github.com/appium/appium-mcp/issues/475)) ([2624412](https://github.com/appium/appium-mcp/commit/2624412367e5a2e4cd5ababc15a9fb4c2ffc25c9))
12
+
1
13
  ## [1.88.4](https://github.com/appium/appium-mcp/compare/v1.88.3...v1.88.4) (2026-07-25)
2
14
 
3
15
  ### Miscellaneous Chores
package/README.md CHANGED
@@ -189,6 +189,8 @@ OTEL_TRACES_SAMPLER=parentbased_always_on
189
189
 
190
190
  When enabled, appium-mcp creates spans for MCP tool calls, prompt loads, resource reads, and resource template reads. Error status is recorded for thrown operation errors and MCP tool results marked with `isError`. Span attributes intentionally avoid raw screenshots, XML page source, prompts, credentials, and other high-cardinality or sensitive payloads.
191
191
 
192
+ Tool spans include payload-free result-size attributes: `mcp.tool.result.content_count`, `content_types`, `text_chars`, `resource_count`, `resource_text_chars`, `image_count`, `audio_count`, `base64_chars`, and `base64_bytes_estimate` (all prefixed with `mcp.tool.result.`). `content_types` contains only known MCP types or `other`; payload values, resource URIs, MIME types, and unknown type strings are never recorded. Sizes are counted directly from known result fields without serializing or copying the complete result.
193
+
192
194
  For local trace inspection, use the Jaeger setup in `tools/telemetry`:
193
195
 
194
196
  ```bash
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,iBAAiB,aAEiD,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,iBAAiB,aAA8D,CAAC"}
package/dist/schema.js CHANGED
@@ -1,5 +1,3 @@
1
1
  import { z } from 'zod';
2
- export const elementUUIDScheme = z
3
- .string()
4
- .describe('The uuid of the element returned by appium_find_element to click');
2
+ export const elementUUIDScheme = z.string().describe('Element ID from appium_find_element.');
5
3
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,QAAQ,CAAC,kEAAkE,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC"}
@@ -25,6 +25,14 @@ export declare function installTelemetryWrappers(server: FastMCP): void;
25
25
  * @returns A new tool definition with telemetry spans around the execute function.
26
26
  */
27
27
  export declare function wrapToolWithTelemetry(toolDef: ToolDef): ToolDef;
28
+ /**
29
+ * Builds payload-free size attributes for a tool result.
30
+ *
31
+ * This intentionally counts known MCP content fields directly instead of
32
+ * serializing the whole result. Large page sources, UI HTML, and base64 data
33
+ * therefore are not copied or recorded in telemetry.
34
+ */
35
+ export declare function safeToolResultSizeAttributes(result: unknown): Record<string, number | string[]>;
28
36
  export declare function safeInputValueAttributes(args: unknown): Record<string, string | number | boolean | string[]>;
29
37
  export {};
30
38
  //# sourceMappingURL=wrapOperations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapOperations.d.ts","sourceRoot":"","sources":["../../src/telemetry/wrapOperations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAMrC,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAUjD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAwB9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAoB/D;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,CAmB5G"}
1
+ {"version":3,"file":"wrapOperations.d.ts","sourceRoot":"","sources":["../../src/telemetry/wrapOperations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAMrC,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAYjD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAwB9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAsB/D;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAwE/F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,CAmB5G"}
@@ -7,6 +7,7 @@
7
7
  import { isSensitiveKey } from '../utils/sensitive.js';
8
8
  import { isArgumentValueTelemetryEnabled, safeAttributeValue, safeInputKeys, safeSessionId } from './attributes.js';
9
9
  import { getActiveSpan, SpanStatusCode, withSpan } from './tracer.js';
10
+ const SAFE_TOOL_CONTENT_TYPES = new Set(['audio', 'image', 'resource', 'resource_link', 'text']);
10
11
  /**
11
12
  * Installs telemetry wrappers on the given FastMCP server instance. This should be
12
13
  * called early in the server setup process, before registering any tools, prompts,
@@ -50,14 +51,88 @@ export function wrapToolWithTelemetry(toolDef) {
50
51
  ...toolDef,
51
52
  execute: async (args, context) => withSpan(`tools/call ${toolName}`, toolAttributes(toolName, args), async () => {
52
53
  const result = await execute(args, context);
54
+ const span = getActiveSpan();
55
+ span?.setAttributes(safeToolResultSizeAttributes(result));
53
56
  if (isErrorResult(result)) {
54
- getActiveSpan()?.setStatus({ code: SpanStatusCode.ERROR });
55
- getActiveSpan()?.setAttribute('mcp.tool.result.is_error', true);
57
+ span?.setStatus({ code: SpanStatusCode.ERROR });
58
+ span?.setAttribute('mcp.tool.result.is_error', true);
56
59
  }
57
60
  return result;
58
61
  }),
59
62
  };
60
63
  }
64
+ /**
65
+ * Builds payload-free size attributes for a tool result.
66
+ *
67
+ * This intentionally counts known MCP content fields directly instead of
68
+ * serializing the whole result. Large page sources, UI HTML, and base64 data
69
+ * therefore are not copied or recorded in telemetry.
70
+ */
71
+ export function safeToolResultSizeAttributes(result) {
72
+ if (typeof result === 'string') {
73
+ return { 'mcp.tool.result.text_chars': result.length };
74
+ }
75
+ if (!isRecord(result) || !Array.isArray(result.content)) {
76
+ return {};
77
+ }
78
+ const contentTypes = new Set();
79
+ let textChars = 0;
80
+ let resourceCount = 0;
81
+ let resourceTextChars = 0;
82
+ let imageCount = 0;
83
+ let audioCount = 0;
84
+ let base64Chars = 0;
85
+ let base64BytesEstimate = 0;
86
+ for (const content of result.content) {
87
+ if (!isRecord(content)) {
88
+ contentTypes.add('other');
89
+ continue;
90
+ }
91
+ const contentType = typeof content.type === 'string' && SAFE_TOOL_CONTENT_TYPES.has(content.type) ? content.type : 'other';
92
+ contentTypes.add(contentType);
93
+ if (contentType === 'text' && typeof content.text === 'string') {
94
+ textChars += content.text.length;
95
+ continue;
96
+ }
97
+ if (contentType === 'image' || contentType === 'audio') {
98
+ if (contentType === 'image') {
99
+ imageCount += 1;
100
+ }
101
+ else {
102
+ audioCount += 1;
103
+ }
104
+ if (typeof content.data === 'string') {
105
+ base64Chars += content.data.length;
106
+ base64BytesEstimate += estimateBase64DecodedBytes(content.data);
107
+ }
108
+ continue;
109
+ }
110
+ if (contentType === 'resource') {
111
+ resourceCount += 1;
112
+ if (isRecord(content.resource)) {
113
+ if (typeof content.resource.text === 'string') {
114
+ resourceTextChars += content.resource.text.length;
115
+ }
116
+ if (typeof content.resource.blob === 'string') {
117
+ base64Chars += content.resource.blob.length;
118
+ base64BytesEstimate += estimateBase64DecodedBytes(content.resource.blob);
119
+ }
120
+ }
121
+ }
122
+ }
123
+ const attributes = {
124
+ 'mcp.tool.result.content_count': result.content.length,
125
+ 'mcp.tool.result.content_types': [...contentTypes].sort(),
126
+ 'mcp.tool.result.text_chars': textChars,
127
+ 'mcp.tool.result.resource_count': resourceCount,
128
+ 'mcp.tool.result.resource_text_chars': resourceTextChars,
129
+ 'mcp.tool.result.image_count': imageCount,
130
+ 'mcp.tool.result.audio_count': audioCount,
131
+ 'mcp.tool.result.base64_chars': base64Chars,
132
+ 'mcp.tool.result.base64_bytes_estimate': base64BytesEstimate,
133
+ };
134
+ return attributes;
135
+ }
61
136
  export function safeInputValueAttributes(args) {
62
137
  if (!isArgumentValueTelemetryEnabled()) {
63
138
  return {};
@@ -150,4 +225,24 @@ function inputKeyAttributes(args) {
150
225
  function isErrorResult(result) {
151
226
  return (!!result && typeof result === 'object' && 'isError' in result && result.isError === true);
152
227
  }
228
+ function isRecord(value) {
229
+ return !!value && typeof value === 'object' && !Array.isArray(value);
230
+ }
231
+ function estimateBase64DecodedBytes(value) {
232
+ const commaIndex = value.indexOf(',');
233
+ const hasDataUriPrefix = commaIndex >= 7 && value.slice(commaIndex - 7, commaIndex).toLowerCase() === ';base64';
234
+ const contentStart = hasDataUriPrefix ? commaIndex + 1 : 0;
235
+ const encodedLength = value.length - contentStart;
236
+ if (encodedLength <= 0) {
237
+ return 0;
238
+ }
239
+ let padding = 0;
240
+ if (value.endsWith('==')) {
241
+ padding = 2;
242
+ }
243
+ else if (value.endsWith('=')) {
244
+ padding = 1;
245
+ }
246
+ return Math.max(0, Math.floor((encodedLength * 3) / 4) - padding);
247
+ }
153
248
  //# sourceMappingURL=wrapOperations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapOperations.js","sourceRoot":"","sources":["../../src/telemetry/wrapOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrapOperations.js","sourceRoot":"","sources":["../../src/telemetry/wrapOperations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,OAAO,EAAC,MAAM,SAAS,CAAC;AAgBpD,QAAA,MAAM,WAAW,uIAWP,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AA4DrD,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA4EjD"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,OAAO,EAAC,MAAM,SAAS,CAAC;AAgBpD,QAAA,MAAM,WAAW,uIAWP,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AA8BrD,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA4EjD"}
@@ -26,54 +26,32 @@ const APP_ACTIONS = [
26
26
  const schema = z.object({
27
27
  action: z
28
28
  .enum(APP_ACTIONS)
29
- .describe('Action to perform. ' +
30
- 'activate: bring app to foreground (requires id or name). ' +
31
- 'terminate: stop a running app (requires id or name). ' +
32
- 'install: install from file path (requires path). ' +
33
- 'uninstall: remove from device (requires id or name; optional keepData for Android). ' +
34
- 'list: list installed apps (optional applicationType for iOS). ' +
35
- 'is_installed: check if app is installed (requires id or name). ' +
29
+ .describe('activate: foreground app; terminate: stop app; is_installed: check installation; ' +
30
+ 'clear: clear app data without uninstalling (all require id or name). ' +
31
+ 'install: requires path. uninstall: requires id/name; Android keepData is optional. ' +
32
+ 'list: optional iOS applicationType. ' +
36
33
  'query_state: get state 0=not installed,1=not running,2=background suspended,3=background,4=foreground (requires id or name). ' +
37
- 'background: send foreground app to background (optional seconds, default 5). ' +
38
- 'clear: clear app data without uninstalling (requires id or name). ' +
39
- 'deep_link: open a URL with an app (requires url; optional id or name).'),
40
- id: z
41
- .string()
42
- .optional()
43
- .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.'),
44
- name: z
45
- .string()
46
- .optional()
47
- .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.'),
48
- path: z.string().optional().describe('Path to the app file to install. Required for: install.'),
49
- keepData: z
50
- .boolean()
51
- .optional()
52
- .describe('Keep app data and cache after uninstall. Android only. Used with: uninstall.'),
53
- applicationType: z
54
- .enum(['User', 'System'])
55
- .optional()
56
- .describe('iOS only: filter by "User" (default) or "System" apps. Used with: list.'),
34
+ 'background: send foreground app to background; optional seconds (default 5). ' +
35
+ 'deep_link: requires url; id/name is optional.'),
36
+ id: z.string().optional().describe('Android package or iOS bundle ID; takes precedence over name.'),
37
+ name: z.string().optional().describe('Human-readable app name resolved to an ID; alternative to id.'),
38
+ path: z.string().optional().describe('App file path; required for install.'),
39
+ keepData: z.boolean().optional().describe('Android uninstall: preserve app data and cache.'),
40
+ applicationType: z.enum(['User', 'System']).optional().describe('iOS list filter: User (default) or System.'),
57
41
  seconds: z
58
42
  .number()
59
43
  .min(-1)
60
44
  .max(86400)
61
45
  .optional()
62
- .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.`),
63
- url: z
64
- .string()
65
- .optional()
66
- .describe('Deep link URL to open (e.g. https://example.com, myapp://path). Required for: deep_link.'),
67
- waitForLaunch: z
68
- .boolean()
69
- .optional()
70
- .describe('Android only. If false, ADB does not wait for the activity to return. Defaults to true. Used with: deep_link.'),
46
+ .describe(`Background duration; default ${DEFAULT_BACKGROUND_SECONDS}. Use -1 to remain in background.`),
47
+ url: z.string().optional().describe('URL for deep_link (e.g. https://example.com or myapp://path).'),
48
+ waitForLaunch: z.boolean().optional().describe('Android deep_link: wait for the activity to return; default true.'),
71
49
  sessionId: z.string().optional().describe('Session ID to target. If omitted, uses the active session.'),
72
50
  });
73
51
  export default function app(server) {
74
52
  server.addTool({
75
53
  name: 'appium_app_lifecycle',
76
- description: `Manage apps on the device. Use the action parameter to choose what to do: ${APP_ACTIONS.join(', ')}.`,
54
+ description: 'Manage app lifecycle, installation, state, data, and deep links.',
77
55
  parameters: schema,
78
56
  annotations: {
79
57
  readOnlyHint: false,
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tools/app-management/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tools/app-management/app.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,OAAO,EAAC,MAAM,SAAS,CAAC;AAUpD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA0J/D"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/tools/app-management/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,OAAO,EAAC,MAAM,SAAS,CAAC;AAUpD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAsJ/D"}
@@ -14,13 +14,11 @@ export default function mobilePermissions(server) {
14
14
  id: z
15
15
  .string()
16
16
  .optional()
17
- .describe('App identifier (package name for Android, bundle ID for iOS). Takes precedence over name. ' +
18
- 'Optional for Android (defaults to the app under test). Required for iOS get and update.'),
17
+ .describe('App ID; overrides name. Android defaults to the app under test; required for iOS get/update.'),
19
18
  name: z
20
19
  .string()
21
20
  .optional()
22
- .describe('Human-readable app name (e.g. "Spotify"). Used to resolve the app id. ' +
23
- 'Optional for Android (defaults to the app under test). Required (as alternative to id) for iOS get and update.'),
21
+ .describe('App name resolved to an ID. Android defaults to the app under test; alternative to id for iOS get/update.'),
24
22
  sessionId: z.string().optional().describe('Session ID to target. If omitted, uses the active session.'),
25
23
  permissionFilter: z
26
24
  .enum(['denied', 'granted', 'requested'])
@@ -47,7 +45,7 @@ export default function mobilePermissions(server) {
47
45
  });
48
46
  server.addTool({
49
47
  name: 'appium_mobile_permissions',
50
- description: 'Manage mobile app permissions in one place. action=get: Android lists runtime permissions for a package; iOS Simulator reads one service state for an app (needs id or name + service). action=update: Android changes permissions (grant/revoke or AppOps); iOS Simulator sets privacy via access map (needs id or name + access). action=reset: iOS only — resets one privacy service for the AUT (needs service).',
48
+ description: 'Get/update Android app permissions or iOS Simulator privacy services; reset iOS privacy prompts. See action-specific parameters.',
51
49
  parameters: schema,
52
50
  annotations: {
53
51
  readOnlyHint: false,
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/tools/app-management/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/tools/app-management/permissions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"screen-recording.d.ts","sourceRoot":"","sources":["../../../src/tools/interactions/screen-recording.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,OAAO,EAAC,MAAM,SAAS,CAAC;AAQpD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,YAAY,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC5D,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0GAA0G;IAC1G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+GAA+G;IAC/G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+HAA+H;IAC/H,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CAAC;CAC/E;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,gGAAgG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0GAA0G;IAC1G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAkDD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA0F7D"}
1
+ {"version":3,"file":"screen-recording.d.ts","sourceRoot":"","sources":["../../../src/tools/interactions/screen-recording.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,OAAO,EAAC,MAAM,SAAS,CAAC;AAQpD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,YAAY,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC5D,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0GAA0G;IAC1G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+GAA+G;IAC/G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+HAA+H;IAC/H,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CAAC;CAC/E;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,gGAAgG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0GAA0G;IAC1G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAyCD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA0F7D"}
@@ -15,19 +15,14 @@ async function saveRecording(base64Video) {
15
15
  return filepath;
16
16
  }
17
17
  const screenRecordingSchema = z.object({
18
- action: z
19
- .enum(['start', 'stop'])
20
- .describe('Use start to begin recording. Use stop to end the current recording, retrieve it from the driver, and save it to disk.'),
18
+ action: z.enum(['start', 'stop']).describe('start begins recording; stop ends, retrieves, and saves it.'),
21
19
  timeLimit: z
22
20
  .number()
23
21
  .int()
24
22
  .min(1)
25
23
  .optional()
26
- .describe('Maximum recording duration in seconds for the underlying recorder. This does not automatically stop and save the recording through this tool; call action="stop" to retrieve/save the video. iOS default: 180 (max 4200). Android default: 180 (max 1800).'),
27
- forceRestart: z
28
- .boolean()
29
- .optional()
30
- .describe('If true, stop any active recording immediately and start a new one without returning the previous video. Default: false.'),
24
+ .describe('Recorder limit in seconds; it does not retrieve/save automatically, so call stop. iOS default 180/max 4200; Android default 180/max 1800.'),
25
+ forceRestart: z.boolean().optional().describe('Restart and discard any active recording; default false.'),
31
26
  videoQuality: z
32
27
  .enum(['low', 'medium', 'high', 'photo'])
33
28
  .optional()
@@ -1 +1 @@
1
- {"version":3,"file":"screen-recording.js","sourceRoot":"","sources":["../../../src/tools/interactions/screen-recording.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen-recording.js","sourceRoot":"","sources":["../../../src/tools/interactions/screen-recording.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.88.4",
3
+ "version": "1.89.0",
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"
@@ -7,7 +7,7 @@ import {fileURLToPath} from 'node:url';
7
7
  import {Client} from '@modelcontextprotocol/sdk/client/index.js';
8
8
  import {StdioClientTransport} from '@modelcontextprotocol/sdk/client/stdio.js';
9
9
 
10
- const MAX_DISCOVERY_CHARS = 47_000;
10
+ const MAX_DISCOVERY_CHARS = 45_000;
11
11
  const ESTIMATED_CHARS_PER_TOKEN = 4;
12
12
  const LARGEST_TOOL_COUNT = 10;
13
13
 
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.88.4",
6
+ "version": "1.89.0",
7
7
  "packages": [
8
8
  {
9
9
  "registryType": "npm",
10
10
  "identifier": "appium-mcp",
11
- "version": "1.88.4",
11
+ "version": "1.89.0",
12
12
  "transport": {
13
13
  "type": "stdio"
14
14
  }
package/src/schema.ts CHANGED
@@ -1,5 +1,3 @@
1
1
  import {z} from 'zod';
2
2
 
3
- export const elementUUIDScheme = z
4
- .string()
5
- .describe('The uuid of the element returned by appium_find_element to click');
3
+ export const elementUUIDScheme = z.string().describe('Element ID from appium_find_element.');
@@ -21,6 +21,8 @@ type PromptLoad = NonNullable<PromptDef['load']>;
21
21
  type ResourceLoad = NonNullable<ResourceDef['load']>;
22
22
  type ResourceTemplateLoad = NonNullable<ResourceTemplateDef['load']>;
23
23
 
24
+ const SAFE_TOOL_CONTENT_TYPES = new Set(['audio', 'image', 'resource', 'resource_link', 'text']);
25
+
24
26
  /**
25
27
  * Installs telemetry wrappers on the given FastMCP server instance. This should be
26
28
  * called early in the server setup process, before registering any tools, prompts,
@@ -77,15 +79,98 @@ export function wrapToolWithTelemetry(toolDef: ToolDef): ToolDef {
77
79
  execute: async (args, context) =>
78
80
  withSpan(`tools/call ${toolName}`, toolAttributes(toolName, args), async () => {
79
81
  const result = await execute(args, context);
82
+ const span = getActiveSpan();
83
+ span?.setAttributes(safeToolResultSizeAttributes(result));
80
84
  if (isErrorResult(result)) {
81
- getActiveSpan()?.setStatus({code: SpanStatusCode.ERROR});
82
- getActiveSpan()?.setAttribute('mcp.tool.result.is_error', true);
85
+ span?.setStatus({code: SpanStatusCode.ERROR});
86
+ span?.setAttribute('mcp.tool.result.is_error', true);
83
87
  }
84
88
  return result;
85
89
  }),
86
90
  };
87
91
  }
88
92
 
93
+ /**
94
+ * Builds payload-free size attributes for a tool result.
95
+ *
96
+ * This intentionally counts known MCP content fields directly instead of
97
+ * serializing the whole result. Large page sources, UI HTML, and base64 data
98
+ * therefore are not copied or recorded in telemetry.
99
+ */
100
+ export function safeToolResultSizeAttributes(result: unknown): Record<string, number | string[]> {
101
+ if (typeof result === 'string') {
102
+ return {'mcp.tool.result.text_chars': result.length};
103
+ }
104
+ if (!isRecord(result) || !Array.isArray(result.content)) {
105
+ return {};
106
+ }
107
+
108
+ const contentTypes = new Set<string>();
109
+ let textChars = 0;
110
+ let resourceCount = 0;
111
+ let resourceTextChars = 0;
112
+ let imageCount = 0;
113
+ let audioCount = 0;
114
+ let base64Chars = 0;
115
+ let base64BytesEstimate = 0;
116
+
117
+ for (const content of result.content) {
118
+ if (!isRecord(content)) {
119
+ contentTypes.add('other');
120
+ continue;
121
+ }
122
+
123
+ const contentType =
124
+ typeof content.type === 'string' && SAFE_TOOL_CONTENT_TYPES.has(content.type) ? content.type : 'other';
125
+ contentTypes.add(contentType);
126
+
127
+ if (contentType === 'text' && typeof content.text === 'string') {
128
+ textChars += content.text.length;
129
+ continue;
130
+ }
131
+
132
+ if (contentType === 'image' || contentType === 'audio') {
133
+ if (contentType === 'image') {
134
+ imageCount += 1;
135
+ } else {
136
+ audioCount += 1;
137
+ }
138
+ if (typeof content.data === 'string') {
139
+ base64Chars += content.data.length;
140
+ base64BytesEstimate += estimateBase64DecodedBytes(content.data);
141
+ }
142
+ continue;
143
+ }
144
+
145
+ if (contentType === 'resource') {
146
+ resourceCount += 1;
147
+ if (isRecord(content.resource)) {
148
+ if (typeof content.resource.text === 'string') {
149
+ resourceTextChars += content.resource.text.length;
150
+ }
151
+ if (typeof content.resource.blob === 'string') {
152
+ base64Chars += content.resource.blob.length;
153
+ base64BytesEstimate += estimateBase64DecodedBytes(content.resource.blob);
154
+ }
155
+ }
156
+ }
157
+ }
158
+
159
+ const attributes: Record<string, number | string[]> = {
160
+ 'mcp.tool.result.content_count': result.content.length,
161
+ 'mcp.tool.result.content_types': [...contentTypes].sort(),
162
+ 'mcp.tool.result.text_chars': textChars,
163
+ 'mcp.tool.result.resource_count': resourceCount,
164
+ 'mcp.tool.result.resource_text_chars': resourceTextChars,
165
+ 'mcp.tool.result.image_count': imageCount,
166
+ 'mcp.tool.result.audio_count': audioCount,
167
+ 'mcp.tool.result.base64_chars': base64Chars,
168
+ 'mcp.tool.result.base64_bytes_estimate': base64BytesEstimate,
169
+ };
170
+
171
+ return attributes;
172
+ }
173
+
89
174
  export function safeInputValueAttributes(args: unknown): Record<string, string | number | boolean | string[]> {
90
175
  if (!isArgumentValueTelemetryEnabled()) {
91
176
  return {};
@@ -213,3 +298,25 @@ function isErrorResult(result: unknown): boolean {
213
298
  !!result && typeof result === 'object' && 'isError' in result && (result as {isError?: unknown}).isError === true
214
299
  );
215
300
  }
301
+
302
+ function isRecord(value: unknown): value is Record<string, unknown> {
303
+ return !!value && typeof value === 'object' && !Array.isArray(value);
304
+ }
305
+
306
+ function estimateBase64DecodedBytes(value: string): number {
307
+ const commaIndex = value.indexOf(',');
308
+ const hasDataUriPrefix = commaIndex >= 7 && value.slice(commaIndex - 7, commaIndex).toLowerCase() === ';base64';
309
+ const contentStart = hasDataUriPrefix ? commaIndex + 1 : 0;
310
+ const encodedLength = value.length - contentStart;
311
+ if (encodedLength <= 0) {
312
+ return 0;
313
+ }
314
+
315
+ let padding = 0;
316
+ if (value.endsWith('==')) {
317
+ padding = 2;
318
+ } else if (value.endsWith('=')) {
319
+ padding = 1;
320
+ }
321
+ return Math.max(0, Math.floor((encodedLength * 3) / 4) - padding);
322
+ }
@@ -33,64 +33,34 @@ const schema = z.object({
33
33
  action: z
34
34
  .enum(APP_ACTIONS)
35
35
  .describe(
36
- 'Action to perform. ' +
37
- 'activate: bring app to foreground (requires id or name). ' +
38
- 'terminate: stop a running app (requires id or name). ' +
39
- 'install: install from file path (requires path). ' +
40
- 'uninstall: remove from device (requires id or name; optional keepData for Android). ' +
41
- 'list: list installed apps (optional applicationType for iOS). ' +
42
- 'is_installed: check if app is installed (requires id or name). ' +
36
+ 'activate: foreground app; terminate: stop app; is_installed: check installation; ' +
37
+ 'clear: clear app data without uninstalling (all require id or name). ' +
38
+ 'install: requires path. uninstall: requires id/name; Android keepData is optional. ' +
39
+ 'list: optional iOS applicationType. ' +
43
40
  'query_state: get state 0=not installed,1=not running,2=background suspended,3=background,4=foreground (requires id or name). ' +
44
- 'background: send foreground app to background (optional seconds, default 5). ' +
45
- 'clear: clear app data without uninstalling (requires id or name). ' +
46
- 'deep_link: open a URL with an app (requires url; optional id or name).',
41
+ 'background: send foreground app to background; optional seconds (default 5). ' +
42
+ 'deep_link: requires url; id/name is optional.',
47
43
  ),
48
- id: z
49
- .string()
50
- .optional()
51
- .describe(
52
- 'App identifier (package name for Android, bundle ID for iOS). Takes precedence over name. Required for: activate, terminate, uninstall, is_installed, query_state, clear.',
53
- ),
54
- name: z
55
- .string()
56
- .optional()
57
- .describe(
58
- '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.',
59
- ),
60
- path: z.string().optional().describe('Path to the app file to install. Required for: install.'),
61
- keepData: z
62
- .boolean()
63
- .optional()
64
- .describe('Keep app data and cache after uninstall. Android only. Used with: uninstall.'),
65
- applicationType: z
66
- .enum(['User', 'System'])
67
- .optional()
68
- .describe('iOS only: filter by "User" (default) or "System" apps. Used with: list.'),
44
+ id: z.string().optional().describe('Android package or iOS bundle ID; takes precedence over name.'),
45
+ name: z.string().optional().describe('Human-readable app name resolved to an ID; alternative to id.'),
46
+ path: z.string().optional().describe('App file path; required for install.'),
47
+ keepData: z.boolean().optional().describe('Android uninstall: preserve app data and cache.'),
48
+ applicationType: z.enum(['User', 'System']).optional().describe('iOS list filter: User (default) or System.'),
69
49
  seconds: z
70
50
  .number()
71
51
  .min(-1)
72
52
  .max(86400)
73
53
  .optional()
74
- .describe(
75
- `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.`,
76
- ),
77
- url: z
78
- .string()
79
- .optional()
80
- .describe('Deep link URL to open (e.g. https://example.com, myapp://path). Required for: deep_link.'),
81
- waitForLaunch: z
82
- .boolean()
83
- .optional()
84
- .describe(
85
- 'Android only. If false, ADB does not wait for the activity to return. Defaults to true. Used with: deep_link.',
86
- ),
54
+ .describe(`Background duration; default ${DEFAULT_BACKGROUND_SECONDS}. Use -1 to remain in background.`),
55
+ url: z.string().optional().describe('URL for deep_link (e.g. https://example.com or myapp://path).'),
56
+ waitForLaunch: z.boolean().optional().describe('Android deep_link: wait for the activity to return; default true.'),
87
57
  sessionId: z.string().optional().describe('Session ID to target. If omitted, uses the active session.'),
88
58
  });
89
59
 
90
60
  export default function app(server: FastMCP): void {
91
61
  server.addTool({
92
62
  name: 'appium_app_lifecycle',
93
- description: `Manage apps on the device. Use the action parameter to choose what to do: ${APP_ACTIONS.join(', ')}.`,
63
+ description: 'Manage app lifecycle, installation, state, data, and deep links.',
94
64
  parameters: schema,
95
65
  annotations: {
96
66
  readOnlyHint: false,
@@ -20,16 +20,12 @@ export default function mobilePermissions(server: FastMCP): void {
20
20
  id: z
21
21
  .string()
22
22
  .optional()
23
- .describe(
24
- 'App identifier (package name for Android, bundle ID for iOS). Takes precedence over name. ' +
25
- 'Optional for Android (defaults to the app under test). Required for iOS get and update.',
26
- ),
23
+ .describe('App ID; overrides name. Android defaults to the app under test; required for iOS get/update.'),
27
24
  name: z
28
25
  .string()
29
26
  .optional()
30
27
  .describe(
31
- 'Human-readable app name (e.g. "Spotify"). Used to resolve the app id. ' +
32
- 'Optional for Android (defaults to the app under test). Required (as alternative to id) for iOS get and update.',
28
+ 'App name resolved to an ID. Android defaults to the app under test; alternative to id for iOS get/update.',
33
29
  ),
34
30
  sessionId: z.string().optional().describe('Session ID to target. If omitted, uses the active session.'),
35
31
  permissionFilter: z
@@ -65,7 +61,7 @@ export default function mobilePermissions(server: FastMCP): void {
65
61
  server.addTool({
66
62
  name: 'appium_mobile_permissions',
67
63
  description:
68
- 'Manage mobile app permissions in one place. action=get: Android lists runtime permissions for a package; iOS Simulator reads one service state for an app (needs id or name + service). action=update: Android changes permissions (grant/revoke or AppOps); iOS Simulator sets privacy via access map (needs id or name + access). action=reset: iOS only — resets one privacy service for the AUT (needs service).',
64
+ 'Get/update Android app permissions or iOS Simulator privacy services; reset iOS privacy prompts. See action-specific parameters.',
69
65
  parameters: schema,
70
66
  annotations: {
71
67
  readOnlyHint: false,
@@ -62,25 +62,16 @@ async function saveRecording(base64Video: string): Promise<string> {
62
62
  }
63
63
 
64
64
  const screenRecordingSchema = z.object({
65
- action: z
66
- .enum(['start', 'stop'])
67
- .describe(
68
- 'Use start to begin recording. Use stop to end the current recording, retrieve it from the driver, and save it to disk.',
69
- ),
65
+ action: z.enum(['start', 'stop']).describe('start begins recording; stop ends, retrieves, and saves it.'),
70
66
  timeLimit: z
71
67
  .number()
72
68
  .int()
73
69
  .min(1)
74
70
  .optional()
75
71
  .describe(
76
- 'Maximum recording duration in seconds for the underlying recorder. This does not automatically stop and save the recording through this tool; call action="stop" to retrieve/save the video. iOS default: 180 (max 4200). Android default: 180 (max 1800).',
77
- ),
78
- forceRestart: z
79
- .boolean()
80
- .optional()
81
- .describe(
82
- 'If true, stop any active recording immediately and start a new one without returning the previous video. Default: false.',
72
+ 'Recorder limit in seconds; it does not retrieve/save automatically, so call stop. iOS default 180/max 4200; Android default 180/max 1800.',
83
73
  ),
74
+ forceRestart: z.boolean().optional().describe('Restart and discard any active recording; default false.'),
84
75
  videoQuality: z
85
76
  .enum(['low', 'medium', 'high', 'photo'])
86
77
  .optional()