appium-mcp 1.76.0 → 1.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +169 -70
  3. package/dist/cli/index.d.ts +2 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +49 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/command.js +1 -1
  8. package/dist/command.js.map +1 -1
  9. package/dist/core.d.ts +12 -0
  10. package/dist/core.d.ts.map +1 -0
  11. package/dist/core.js +10 -0
  12. package/dist/core.js.map +1 -0
  13. package/dist/create-server.d.ts +50 -0
  14. package/dist/create-server.d.ts.map +1 -0
  15. package/dist/create-server.js +180 -0
  16. package/dist/create-server.js.map +1 -0
  17. package/dist/index.js +2 -36
  18. package/dist/index.js.map +1 -1
  19. package/dist/plugin.d.ts +209 -0
  20. package/dist/plugin.d.ts.map +1 -0
  21. package/dist/plugin.js +367 -0
  22. package/dist/plugin.js.map +1 -0
  23. package/dist/server.d.ts +1 -2
  24. package/dist/server.d.ts.map +1 -1
  25. package/dist/server.js +2 -67
  26. package/dist/server.js.map +1 -1
  27. package/dist/session-store.d.ts +8 -8
  28. package/dist/session-store.d.ts.map +1 -1
  29. package/dist/session-store.js +3 -2
  30. package/dist/session-store.js.map +1 -1
  31. package/dist/tests/__mocks__/@appium/support.d.ts +54 -61
  32. package/dist/tests/__mocks__/@appium/support.d.ts.map +1 -1
  33. package/dist/tests/__mocks__/@appium/support.js +42 -70
  34. package/dist/tests/__mocks__/@appium/support.js.map +1 -1
  35. package/dist/tests/create-server.test.d.ts +2 -0
  36. package/dist/tests/create-server.test.d.ts.map +1 -0
  37. package/dist/tests/create-server.test.js +253 -0
  38. package/dist/tests/create-server.test.js.map +1 -0
  39. package/dist/tests/plugin.test.d.ts +2 -0
  40. package/dist/tests/plugin.test.d.ts.map +1 -0
  41. package/dist/tests/plugin.test.js +340 -0
  42. package/dist/tests/plugin.test.js.map +1 -0
  43. package/dist/tests/tools/llm-wording.test.js +4 -1
  44. package/dist/tests/tools/llm-wording.test.js.map +1 -1
  45. package/dist/tests/verify.test.d.ts +2 -0
  46. package/dist/tests/verify.test.d.ts.map +1 -0
  47. package/dist/tests/verify.test.js +133 -0
  48. package/dist/tests/verify.test.js.map +1 -0
  49. package/dist/tests/vision-finder.test.d.ts +1 -1
  50. package/dist/tests/vision-finder.test.js +24 -6
  51. package/dist/tests/vision-finder.test.js.map +1 -1
  52. package/package.json +13 -1
  53. package/scripts/verify-names.mjs +12 -0
  54. package/server.json +2 -2
  55. package/src/cli/index.ts +58 -0
  56. package/src/command.ts +1 -1
  57. package/src/core.ts +28 -0
  58. package/src/create-server.ts +252 -0
  59. package/src/index.ts +2 -42
  60. package/src/plugin.ts +557 -0
  61. package/src/resources/submodules.zip +0 -0
  62. package/src/server.ts +2 -87
  63. package/src/session-store.ts +12 -11
@@ -1 +1 @@
1
- {"version":3,"file":"vision-finder.test.js","sourceRoot":"","sources":["../../src/tests/vision-finder.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vision-finder.test.js","sourceRoot":"","sources":["../../src/tests/vision-finder.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "appium-mcp",
3
3
  "mcpName": "io.github.appium/appium-mcp",
4
- "version": "1.76.0",
4
+ "version": "1.78.0",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
@@ -12,6 +12,17 @@
12
12
  },
13
13
  "main": "dist/index.js",
14
14
  "types": "dist/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js"
19
+ },
20
+ "./core": {
21
+ "types": "./dist/core.d.ts",
22
+ "import": "./dist/core.js"
23
+ },
24
+ "./package.json": "./package.json"
25
+ },
15
26
  "bin": {
16
27
  "appium-mcp": "dist/index.js"
17
28
  },
@@ -26,6 +37,7 @@
26
37
  "inspect": "npx fastmcp inspect src/index.js",
27
38
  "dev:built": "node dist/index.js",
28
39
  "inspect:built": "npx @modelcontextprotocol/inspector node dist/index.js",
40
+ "verify:names": "node scripts/verify-names.mjs",
29
41
  "test": "NODE_OPTIONS=--experimental-vm-modules jest",
30
42
  "test:locators": "NODE_OPTIONS=--experimental-vm-modules jest src/tests/generate-all-locators.test.ts",
31
43
  "lint": "eslint src --ext .ts",
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ import { formatVerificationReport, verifyAppiumMcpNames } from '../dist/plugin.js';
3
+
4
+ const report = verifyAppiumMcpNames();
5
+ const output = formatVerificationReport(report);
6
+ if (report.ok) {
7
+ console.log(output);
8
+ process.exit(0);
9
+ } else {
10
+ console.log(output);
11
+ process.exit(1);
12
+ }
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.76.0",
6
+ "version": "1.78.0",
7
7
  "packages": [
8
8
  {
9
9
  "registryType": "npm",
10
10
  "identifier": "appium-mcp",
11
- "version": "1.76.0",
11
+ "version": "1.78.0",
12
12
  "transport": {
13
13
  "type": "stdio"
14
14
  }
@@ -0,0 +1,58 @@
1
+ import log from '../logger.js';
2
+
3
+ export async function runCli(
4
+ args: string[] = process.argv.slice(2)
5
+ ): Promise<void> {
6
+ const command = args[0];
7
+ if (command === '--help' || command === '-h' || command === 'help') {
8
+ printHelp();
9
+ } else {
10
+ await startServer(args);
11
+ }
12
+ }
13
+
14
+ function printHelp(): void {
15
+ log.info(`Usage: appium-mcp [command] [options]
16
+
17
+ Options:
18
+ --httpStream Start with httpStream transport
19
+ --port=<port> Port for httpStream transport (default: 8080)
20
+ --help Show this help message`);
21
+ }
22
+
23
+ async function startServer(args: string[]): Promise<void> {
24
+ const useHttpStream = args.includes('--httpStream');
25
+ const port =
26
+ args.find((arg) => arg.startsWith('--port='))?.split('=')[1] || '8080';
27
+
28
+ log.info('Starting MCP Appium MCP Server...');
29
+
30
+ try {
31
+ const { default: server } = await import('../server.js');
32
+
33
+ if (useHttpStream) {
34
+ await server.start({
35
+ transportType: 'httpStream',
36
+ httpStream: {
37
+ endpoint: '/sse',
38
+ port: parseInt(port, 10),
39
+ },
40
+ });
41
+
42
+ log.info(
43
+ `Server started with httpStream transport on http://localhost:${port}/sse`
44
+ );
45
+ log.info('Waiting for client connections...');
46
+ } else {
47
+ await server.start({
48
+ transportType: 'stdio',
49
+ });
50
+
51
+ log.info('Server started with stdio transport');
52
+ log.info('Waiting for client connections...');
53
+ }
54
+ } catch (error: any) {
55
+ log.error('Error starting server:', error);
56
+ process.exit(1);
57
+ }
58
+ }
package/src/command.ts CHANGED
@@ -252,7 +252,7 @@ export async function elementClick(
252
252
  'WEBVIEW_'
253
253
  )
254
254
  ) {
255
- const caps = getSessionInfo(driver.sessionId);
255
+ const caps = getSessionInfo(driver.sessionId || undefined);
256
256
  const settings = await getSessionDriverSettings(driver);
257
257
  // nativeWebTap === true means we should use the native tap (elementClick) even in webview context
258
258
  if (
package/src/core.ts ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Public extension API for building custom Appium MCP servers.
3
+ *
4
+ * Import from `appium-mcp/core` when composing the default Appium MCP server
5
+ * with organization-specific plugins, tools, prompts, resources, and lifecycle
6
+ * hooks.
7
+ */
8
+ export { createAppiumMcpServer } from './create-server.js';
9
+ export type { CreateAppiumMcpServerOptions } from './create-server.js';
10
+ export {
11
+ AppiumMcpCore,
12
+ formatVerificationReport,
13
+ McpRegistry,
14
+ PluginManager,
15
+ verifyAppiumMcpNames,
16
+ } from './plugin.js';
17
+ export type {
18
+ AppiumMcpPlugin,
19
+ PluginContext,
20
+ PluginSessionContext,
21
+ ToolCallContext,
22
+ ToolCallResult,
23
+ VerificationDuplicate,
24
+ VerificationDuplicateKind,
25
+ VerificationEntry,
26
+ VerificationReport,
27
+ VerifyAppiumMcpNamesOptions,
28
+ } from './plugin.js';
@@ -0,0 +1,252 @@
1
+ /**
2
+ * createAppiumMcpServer — public factory for custom Appium MCP servers.
3
+ *
4
+ * Usage:
5
+ * ```ts
6
+ * import { createAppiumMcpServer } from 'appium-mcp/core';
7
+ *
8
+ * const server = createAppiumMcpServer({
9
+ * plugins: [new CheckoutPlugin(), new LoginGuardPlugin()],
10
+ * });
11
+ *
12
+ * await server.start({ transportType: 'stdio' });
13
+ * ```
14
+ */
15
+
16
+ import { FastMCP } from 'fastmcp';
17
+ import pkg from '../package.json' with { type: 'json' };
18
+ import registerTools from './tools/index.js';
19
+ import registerResources from './resources/index.js';
20
+ import { safeDeleteAllSessions, listSessions } from './session-store.js';
21
+ import log from './logger.js';
22
+ import { PluginManager } from './plugin.js';
23
+ import type { AppiumMcpPlugin } from './plugin.js';
24
+
25
+ const SERVER_VERSION = pkg.version as `${number}.${number}.${number}`;
26
+
27
+ const SERVER_INSTRUCTIONS = [
28
+ 'Appium mobile automation through MCP. Defaults that avoid broken flows:',
29
+ '- Establish a driver session first: select_device and appium_session_management (action=create) for local/embedded mode, or attach to a remote session when the user supplies a server URL.',
30
+ '- Call only tools this server actually registers (appium_find_element, appium_gesture, appium_session_management, etc.); do not invent tool names or aliases.',
31
+ '- Prefer stable locators: accessibility id and id before long xpath; use xpath only when nothing else works.',
32
+ '- Use appium_gesture for taps and drags; when something is off-screen, use action=scroll_to_element instead of spamming appium_find_element alone.',
33
+ '- For local Appium install, doctor, or smoke tests, run appium_skills before guessing commands.',
34
+ ].join('\n');
35
+
36
+ export interface CreateAppiumMcpServerOptions {
37
+ /**
38
+ * List of plugins to register with the server.
39
+ * Plugin names should be unique; duplicate names are skipped with a warning.
40
+ * Plugins are initialized in registration order.
41
+ */
42
+ plugins?: AppiumMcpPlugin[];
43
+
44
+ /**
45
+ * Override the server name shown to MCP clients.
46
+ * @default 'MCP Appium'
47
+ */
48
+ serverName?: string;
49
+
50
+ /**
51
+ * Override the server version shown to MCP clients.
52
+ * @default package.json version
53
+ */
54
+ serverVersion?: `${number}.${number}.${number}`;
55
+
56
+ /**
57
+ * Additional instructions appended to the default SERVER_INSTRUCTIONS.
58
+ */
59
+ additionalInstructions?: string;
60
+ }
61
+
62
+ type DisconnectSessionPolicy = 'delete_all' | 'skip';
63
+
64
+ // ---------------------------------------------------------------------------
65
+ // Internal helpers
66
+ // ---------------------------------------------------------------------------
67
+
68
+ /**
69
+ * Factory function that creates and wires a fully-configured Appium MCP server,
70
+ * with optional plugin support.
71
+ *
72
+ * This is the main public entry point for building a custom Appium-based MCP
73
+ * server. It replicates the setup that the default `server.ts` performs, while
74
+ * also registering plugin tools and lifecycle hooks.
75
+ *
76
+ * @returns A configured `FastMCP` instance ready to be `start()`-ed.
77
+ */
78
+ export function createAppiumMcpServer(
79
+ options: CreateAppiumMcpServerOptions = {}
80
+ ): FastMCP {
81
+ const {
82
+ plugins = [],
83
+ serverName = 'MCP Appium',
84
+ serverVersion = SERVER_VERSION,
85
+ additionalInstructions,
86
+ } = options;
87
+
88
+ const instructions = additionalInstructions
89
+ ? `${SERVER_INSTRUCTIONS}\n${additionalInstructions}`
90
+ : SERVER_INSTRUCTIONS;
91
+
92
+ const server = new FastMCP({
93
+ name: serverName,
94
+ version: serverVersion,
95
+ instructions,
96
+ });
97
+
98
+ // -------------------------------------------------------------------------
99
+ // 1. Install plugin hooks BEFORE registering any tools so that every built-in
100
+ // and plugin tool is wrapped with beforeCall / afterCall.
101
+ // -------------------------------------------------------------------------
102
+ const manager = new PluginManager(server);
103
+ if (plugins.length > 0) {
104
+ manager.register(plugins);
105
+ }
106
+
107
+ // -------------------------------------------------------------------------
108
+ // 2. Register plugin tools (before built-ins so plugins appear first in the
109
+ // tool list, but either order is fine – adjust if needed).
110
+ // -------------------------------------------------------------------------
111
+ manager.registerPluginCapabilities();
112
+
113
+ // -------------------------------------------------------------------------
114
+ // 3. Register built-in Appium MCP resources and tools.
115
+ // -------------------------------------------------------------------------
116
+ registerResources(server);
117
+ registerTools(server);
118
+
119
+ // -------------------------------------------------------------------------
120
+ // 4. Initialize plugins (after all tools are registered so plugins can look
121
+ // up built-in tools via the PluginContext if needed).
122
+ // -------------------------------------------------------------------------
123
+ let activeClientCount = 0;
124
+ let pluginInitialized = false;
125
+
126
+ // Track plugin initialization and destruction promises to avoid race conditions
127
+ // when clients connect/disconnect in quick succession.
128
+ let pluginInitializePromise: Promise<void> | null = null;
129
+ let pluginDestroyPromise: Promise<void> | null = null;
130
+
131
+ /**
132
+ * To avoid unnecessary plugin initialization and destruction when clients connect and disconnect,
133
+ * we lazily initialize plugins on the first client connection, and only destroy plugins
134
+ * after the last client disconnects.
135
+ * @returns
136
+ */
137
+ const ensurePluginsInitialized = async (): Promise<void> => {
138
+ if (plugins.length === 0) {
139
+ return;
140
+ }
141
+
142
+ if (pluginDestroyPromise != null) {
143
+ await pluginDestroyPromise;
144
+ }
145
+
146
+ if (pluginInitialized) {
147
+ return;
148
+ }
149
+
150
+ pluginInitializePromise ??= (async () => {
151
+ try {
152
+ await manager.initialize();
153
+ pluginInitialized = true;
154
+ } finally {
155
+ pluginInitializePromise = null;
156
+ }
157
+ })();
158
+
159
+ await pluginInitializePromise;
160
+ };
161
+
162
+ /**
163
+ * Destroys plugins only if there are no active clients and plugins have been initialized.
164
+ * @returns
165
+ */
166
+ const destroyPluginsIfIdle = async (): Promise<void> => {
167
+ if (plugins.length === 0) {
168
+ return;
169
+ }
170
+
171
+ if (pluginInitializePromise != null) {
172
+ await pluginInitializePromise;
173
+ }
174
+
175
+ if (activeClientCount > 0 || !pluginInitialized) {
176
+ return;
177
+ }
178
+
179
+ pluginDestroyPromise ??= (async () => {
180
+ try {
181
+ await manager.destroy();
182
+ pluginInitialized = false;
183
+ } finally {
184
+ pluginDestroyPromise = null;
185
+ }
186
+ })();
187
+
188
+ await pluginDestroyPromise;
189
+ };
190
+
191
+ // -------------------------------------------------------------------------
192
+ // 5. Wire connect / disconnect lifecycle events.
193
+ // -------------------------------------------------------------------------
194
+ server.on('connect', async (event) => {
195
+ log.info('Client connected:', event.session);
196
+ activeClientCount += 1;
197
+
198
+ // Lazy plugin initialization on first connection.
199
+ await ensurePluginsInitialized();
200
+ });
201
+
202
+ server.on('disconnect', async (event) => {
203
+ log.info('Client disconnected:', event.session);
204
+ activeClientCount = Math.max(0, activeClientCount - 1);
205
+
206
+ if (activeClientCount > 0) {
207
+ return;
208
+ }
209
+
210
+ const policy = disconnectSessionPolicyFromEnv();
211
+ const ownedSessions = listSessions().filter(
212
+ (session) => session.ownership === 'owned'
213
+ );
214
+
215
+ if (ownedSessions.length > 0 && policy === 'skip') {
216
+ log.info(
217
+ `${ownedSessions.length} owned session(s) retained after MCP disconnect ` +
218
+ '(APPIUM_MCP_ON_CLIENT_DISCONNECT=skip).'
219
+ );
220
+ } else if (ownedSessions.length > 0) {
221
+ try {
222
+ log.info(
223
+ `${ownedSessions.length} owned session(s) detected on disconnect, cleaning up...`
224
+ );
225
+ const deletedCount = await safeDeleteAllSessions();
226
+ log.info(
227
+ `${deletedCount} session(s) cleaned up successfully on disconnect.`
228
+ );
229
+ } catch (error) {
230
+ log.error('Error cleaning up session on disconnect:', error);
231
+ }
232
+ }
233
+
234
+ // Destroy plugins when the last MCP client disconnects.
235
+ await destroyPluginsIfIdle();
236
+ });
237
+
238
+ return server;
239
+ }
240
+
241
+ function disconnectSessionPolicyFromEnv(): DisconnectSessionPolicy {
242
+ const raw = process.env.APPIUM_MCP_ON_CLIENT_DISCONNECT?.trim().toLowerCase();
243
+ if (raw === 'skip') {
244
+ return 'skip';
245
+ }
246
+ if (raw !== 'delete_all') {
247
+ log.warn(
248
+ `APPIUM_MCP_ON_CLIENT_DISCONNECT="${raw}" is not recognized; defaulting to delete_all`
249
+ );
250
+ }
251
+ return 'delete_all';
252
+ }
package/src/index.ts CHANGED
@@ -1,45 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import server from './server.js';
4
- import log from './logger.js';
3
+ import { runCli } from './cli/index.js';
5
4
 
6
- // Parse command line arguments
7
- const args = process.argv.slice(2);
8
- const useHttpStream = args.includes('--httpStream');
9
- const port =
10
- args.find((arg) => arg.startsWith('--port='))?.split('=')[1] || '8080';
11
-
12
- async function startServer(): Promise<void> {
13
- log.info('Starting MCP Appium MCP Server...');
14
-
15
- try {
16
- if (useHttpStream) {
17
- await server.start({
18
- transportType: 'httpStream',
19
- httpStream: {
20
- endpoint: '/sse',
21
- port: parseInt(port, 10),
22
- },
23
- });
24
-
25
- log.info(
26
- `Server started with httpStream transport on http://localhost:${port}/sse`
27
- );
28
- log.info('Waiting for client connections...');
29
- } else {
30
- // Start with stdio transport
31
- await server.start({
32
- transportType: 'stdio',
33
- });
34
-
35
- log.info('Server started with stdio transport');
36
- log.info('Waiting for client connections...');
37
- }
38
- } catch (error: any) {
39
- log.error('Error starting server:', error);
40
- process.exit(1);
41
- }
42
- }
43
-
44
- // Start the server
45
- void startServer();
5
+ void runCli();