appium-mcp 1.82.0 → 1.82.1

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 (33) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/server.d.ts.map +1 -1
  3. package/dist/server.js +4 -1
  4. package/dist/server.js.map +1 -1
  5. package/dist/tests/tools/documentation/appium-skills.test.js +2 -6
  6. package/dist/tests/tools/documentation/appium-skills.test.js.map +1 -1
  7. package/dist/tests/tools/documentation/plugin.test.d.ts +2 -0
  8. package/dist/tests/tools/documentation/plugin.test.d.ts.map +1 -0
  9. package/dist/tests/tools/documentation/plugin.test.js +34 -0
  10. package/dist/tests/tools/documentation/plugin.test.js.map +1 -0
  11. package/dist/tools/documentation/answer-appium.d.ts +7 -1
  12. package/dist/tools/documentation/answer-appium.d.ts.map +1 -1
  13. package/dist/tools/documentation/answer-appium.js +26 -31
  14. package/dist/tools/documentation/answer-appium.js.map +1 -1
  15. package/dist/tools/documentation/appium-skills.d.ts +4 -1
  16. package/dist/tools/documentation/appium-skills.d.ts.map +1 -1
  17. package/dist/tools/documentation/appium-skills.js +70 -72
  18. package/dist/tools/documentation/appium-skills.js.map +1 -1
  19. package/dist/tools/documentation/plugin.d.ts +14 -0
  20. package/dist/tools/documentation/plugin.d.ts.map +1 -0
  21. package/dist/tools/documentation/plugin.js +19 -0
  22. package/dist/tools/documentation/plugin.js.map +1 -0
  23. package/dist/tools/index.d.ts.map +1 -1
  24. package/dist/tools/index.js +0 -5
  25. package/dist/tools/index.js.map +1 -1
  26. package/package.json +1 -1
  27. package/server.json +2 -2
  28. package/src/resources/submodules.zip +0 -0
  29. package/src/server.ts +4 -1
  30. package/src/tools/documentation/answer-appium.ts +33 -32
  31. package/src/tools/documentation/appium-skills.ts +98 -103
  32. package/src/tools/documentation/plugin.ts +21 -0
  33. package/src/tools/index.ts +0 -6
package/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## [1.82.1](https://github.com/appium/appium-mcp/compare/v1.82.0...v1.82.1) (2026-06-03)
2
+
3
+ ### Miscellaneous Chores
4
+
5
+ * refactor documentation part as a plugin style ([#376](https://github.com/appium/appium-mcp/issues/376)) ([42ab1ed](https://github.com/appium/appium-mcp/commit/42ab1edb3d3e7ab4564f7930112dad9554a4d117))
6
+
1
7
  ## [1.82.0](https://github.com/appium/appium-mcp/compare/v1.81.7...v1.82.0) (2026-06-02)
2
8
 
3
9
  ### Features
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,MAAM,iEAA0B,CAAC;AACvC,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,iEAEV,CAAC;AACH,eAAe,MAAM,CAAC"}
package/dist/server.js CHANGED
@@ -1,4 +1,7 @@
1
1
  import { createAppiumMcpServer } from './create-server.js';
2
- const server = createAppiumMcpServer();
2
+ import { AppiumDocumentation } from './tools/documentation/plugin.js';
3
+ const server = createAppiumMcpServer({
4
+ plugins: [new AppiumDocumentation()],
5
+ });
3
6
  export default server;
4
7
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;AACvC,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,MAAM,GAAG,qBAAqB,CAAC;IACnC,OAAO,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC;CACrC,CAAC,CAAC;AACH,eAAe,MAAM,CAAC"}
@@ -11,13 +11,9 @@ jest.unstable_mockModule('webdriver', () => ({ default: {} }));
11
11
  await jest.unstable_mockModule('../../../logger', () => ({
12
12
  default: { debug: () => { }, info: () => { }, warn: () => { }, error: () => { } },
13
13
  }));
14
- const appiumSkills = (await import('../../../tools/documentation/appium-skills.js')).default;
14
+ const { appiumSkillsTool } = await import('../../../tools/documentation/appium-skills.js');
15
15
  function getRegisteredTool() {
16
- const addTool = jest.fn();
17
- const server = { addTool };
18
- appiumSkills(server);
19
- expect(addTool).toHaveBeenCalledTimes(1);
20
- return addTool.mock.calls[0][0];
16
+ return appiumSkillsTool;
21
17
  }
22
18
  async function runTool(args) {
23
19
  const tool = getRegisteredTool();
@@ -1 +1 @@
1
- {"version":3,"file":"appium-skills.test.js","sourceRoot":"","sources":["../../../../src/tests/tools/documentation/appium-skills.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appium-skills.test.js","sourceRoot":"","sources":["../../../../src/tests/tools/documentation/appium-skills.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plugin.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/tools/documentation/plugin.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { describe, expect, jest, test } from '@jest/globals';
2
+ jest.unstable_mockModule('appium-uiautomator2-driver', () => ({
3
+ AndroidUiautomator2Driver: class {
4
+ },
5
+ }));
6
+ jest.unstable_mockModule('appium-xcuitest-driver', () => ({
7
+ XCUITestDriver: class {
8
+ },
9
+ }));
10
+ jest.unstable_mockModule('webdriver', () => ({ default: {} }));
11
+ await jest.unstable_mockModule('../../../logger', () => ({
12
+ default: { debug: () => { }, info: () => { }, warn: () => { }, error: () => { } },
13
+ }));
14
+ const { AppiumDocumentation } = await import('../../../tools/documentation/plugin.js');
15
+ describe('AppiumDocumentation plugin', () => {
16
+ test('registers documentation query and skills tools', () => {
17
+ const tools = [];
18
+ const registry = {
19
+ addTool(toolDef) {
20
+ tools.push(toolDef);
21
+ },
22
+ };
23
+ new AppiumDocumentation().register(registry);
24
+ expect(tools.map((tool) => tool.name)).toEqual([
25
+ 'appium_documentation_query',
26
+ 'appium_skills',
27
+ ]);
28
+ expect(tools[1].annotations).toEqual({
29
+ readOnlyHint: true,
30
+ openWorldHint: false,
31
+ });
32
+ });
33
+ });
34
+ //# sourceMappingURL=plugin.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.test.js","sourceRoot":"","sources":["../../../../src/tests/tools/documentation/plugin.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE7D,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,yBAAyB,EAAE;KAAQ;CACpC,CAAC,CAAC,CAAC;AACJ,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxD,cAAc,EAAE;KAAQ;CACzB,CAAC,CAAC,CAAC;AACJ,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAE/D,MAAM,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvD,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE;CAC9E,CAAC,CAAC,CAAC;AAEJ,MAAM,EAAE,mBAAmB,EAAE,GAC3B,MAAM,MAAM,CAAC,wCAAwC,CAAC,CAAC;AAOzD,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG;YACf,OAAO,CAAC,OAAgB;gBACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;SACF,CAAC;QAEF,IAAI,mBAAmB,EAAE,CAAC,QAAQ,CAAC,QAAiB,CAAC,CAAC;QAEtD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7C,4BAA4B;YAC5B,eAAe;SAChB,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;YACnC,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +1,8 @@
1
- export default function answerAppium(server: any): void;
1
+ /**
2
+ * Tool to query indexed Appium documentation.
3
+ */
4
+ import type { FastMCP } from 'fastmcp';
5
+ type ToolDef = Parameters<FastMCP['addTool']>[0];
6
+ export declare const appiumDocumentationQueryTool: ToolDef;
7
+ export {};
2
8
  //# sourceMappingURL=answer-appium.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"answer-appium.d.ts","sourceRoot":"","sources":["../../../src/tools/documentation/answer-appium.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAqCtD"}
1
+ {"version":3,"file":"answer-appium.d.ts","sourceRoot":"","sources":["../../../src/tools/documentation/answer-appium.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMvC,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjD,eAAO,MAAM,4BAA4B,EAAE,OAmC1C,CAAC"}
@@ -1,43 +1,38 @@
1
- /**
2
- * Tool to select mobile platform before creating a session
3
- */
4
1
  import { z } from 'zod';
5
2
  import { answerAppiumQuery, initializeAppiumDocumentation } from './index.js';
6
3
  import log from '../../logger.js';
7
4
  import { errorResult, textResult } from '../tool-response.js';
8
- export default function answerAppium(server) {
9
- server.addTool({
10
- name: 'appium_documentation_query',
11
- description: `Query Appium documentation using RAG (Retrieval-Augmented Generation).
5
+ export const appiumDocumentationQueryTool = {
6
+ name: 'appium_documentation_query',
7
+ description: `Query Appium documentation using RAG (Retrieval-Augmented Generation).
12
8
  This tool searches through indexed Appium documentation to answer questions about Appium features, setup, configuration, drivers, and usage.
13
9
  `,
14
- parameters: z.object({
15
- query: z
16
- .string()
17
- .describe('The question or query about Appium documentation'),
18
- }),
19
- execute: async (args, _context) => {
20
- const query = args.query;
21
- if (!query) {
22
- return errorResult('Query parameter is required');
23
- }
10
+ parameters: z.object({
11
+ query: z
12
+ .string()
13
+ .describe('The question or query about Appium documentation'),
14
+ }),
15
+ execute: async (args, _context) => {
16
+ const query = args.query;
17
+ if (!query) {
18
+ return errorResult('Query parameter is required');
19
+ }
20
+ try {
21
+ const result = await answerAppiumQuery({ query });
22
+ return textResult(result.answer);
23
+ }
24
+ catch (_docError) {
25
+ // If documentation query fails, try to initialize and retry once
24
26
  try {
27
+ log.info('Documentation not initialized, initializing now...');
28
+ await initializeAppiumDocumentation();
25
29
  const result = await answerAppiumQuery({ query });
26
30
  return textResult(result.answer);
27
31
  }
28
- catch (_docError) {
29
- // If documentation query fails, try to initialize and retry once
30
- try {
31
- log.info('Documentation not initialized, initializing now...');
32
- await initializeAppiumDocumentation();
33
- const result = await answerAppiumQuery({ query });
34
- return textResult(result.answer);
35
- }
36
- catch (retryError) {
37
- return errorResult(`Error querying Appium documentation: ${retryError.message}. Please ensure the documentation is indexed first.`);
38
- }
32
+ catch (retryError) {
33
+ return errorResult(`Error querying Appium documentation: ${retryError.message}. Please ensure the documentation is indexed first.`);
39
34
  }
40
- },
41
- });
42
- }
35
+ }
36
+ },
37
+ };
43
38
  //# sourceMappingURL=answer-appium.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"answer-appium.js","sourceRoot":"","sources":["../../../src/tools/documentation/answer-appium.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,MAAW;IAC9C,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE;;OAEV;QACH,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CAAC,kDAAkD,CAAC;SAChE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,QAAa,EAAgB,EAAE;YACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,6BAA6B,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClD,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,iEAAiE;gBACjE,IAAI,CAAC;oBACH,GAAG,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;oBAC/D,MAAM,6BAA6B,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;oBAClD,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,OAAO,WAAW,CAChB,wCACG,UAAoB,CAAC,OACxB,qDAAqD,CACtD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"answer-appium.js","sourceRoot":"","sources":["../../../src/tools/documentation/answer-appium.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI9D,MAAM,CAAC,MAAM,4BAA4B,GAAY;IACnD,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE;;OAER;IACL,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CAAC,kDAAkD,CAAC;KAChE,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,QAAa,EAAgB,EAAE;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,WAAW,CAAC,6BAA6B,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,iEAAiE;YACjE,IAAI,CAAC;gBACH,GAAG,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBAC/D,MAAM,6BAA6B,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClD,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,OAAO,WAAW,CAChB,wCACG,UAAoB,CAAC,OACxB,qDAAqD,CACtD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -1,2 +1,5 @@
1
- export default function appiumSkills(server: any): void;
1
+ import type { FastMCP } from 'fastmcp';
2
+ type ToolDef = Parameters<FastMCP['addTool']>[0];
3
+ export declare const appiumSkillsTool: ToolDef;
4
+ export {};
2
5
  //# sourceMappingURL=appium-skills.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appium-skills.d.ts","sourceRoot":"","sources":["../../../src/tools/documentation/appium-skills.ts"],"names":[],"mappings":"AA4CA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CA4GtD"}
1
+ {"version":3,"file":"appium-skills.d.ts","sourceRoot":"","sources":["../../../src/tools/documentation/appium-skills.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAUvC,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAkCjD,eAAO,MAAM,gBAAgB,EAAE,OAqG9B,CAAC"}
@@ -32,79 +32,77 @@ const TEMPLATE_HEADINGS = {
32
32
  'troubleshoot:uiautomator2': 'Troubleshooting',
33
33
  'troubleshoot:xcuitest': 'Troubleshooting',
34
34
  };
35
- export default function appiumSkills(server) {
36
- server.addTool({
37
- name: 'appium_skills',
38
- description: `Return ordered Appium setup or troubleshooting skills from the vendored appium/skills repository.
35
+ export const appiumSkillsTool = {
36
+ name: 'appium_skills',
37
+ description: `Return ordered Appium setup or troubleshooting skills from the vendored appium/skills repository.
39
38
  Use this before preparing a LOCAL Appium environment or diagnosing local prerequisite issues.`,
40
- parameters: z.object({
41
- platform: z.enum(['android', 'ios']).describe('Target local platform.'),
42
- driver: z
43
- .enum(['uiautomator2', 'espresso', 'xcuitest'])
44
- .describe('Target Appium automation driver.'),
45
- mode: z
46
- .enum(['setup', 'troubleshoot'])
47
- .optional()
48
- .default('setup')
49
- .describe('Whether to prepare an environment or troubleshoot an existing failure.'),
50
- realDevice: z
51
- .boolean()
52
- .optional()
53
- .default(false)
54
- .describe('For ios + xcuitest only: true for a physical device, false for simulator setup.'),
55
- includeOptional: z
56
- .array(z.enum(['ffmpeg', 'bundletool']))
57
- .optional()
58
- .default([])
59
- .describe('Optional shared skills to include when explicitly requested.'),
60
- }),
61
- annotations: {
62
- readOnlyHint: true,
63
- openWorldHint: false,
64
- },
65
- execute: async (rawArgs) => {
66
- const parsed = (rawArgs ?? {});
67
- const args = {
68
- platform: parsed.platform,
69
- driver: parsed.driver,
70
- mode: parsed.mode ?? 'setup',
71
- realDevice: parsed.realDevice ?? false,
72
- includeOptional: Array.isArray(parsed.includeOptional)
73
- ? parsed.includeOptional
74
- : [],
75
- };
76
- const { skillNames, ignoredOptional } = getSkillNames(args);
77
- log.info(`Loading Appium skills for ${args.platform}/${args.driver} (${args.mode}) from ${ROOT}`);
78
- const agentsMarkdown = await readMarkdown(AGENTS_PATH);
79
- const promptTemplate = getPromptTemplate(agentsMarkdown, getTemplateHeading(args.mode, args.driver, args.realDevice));
80
- const skillContents = await Promise.all(skillNames.map(async (skillName) => ({
81
- name: skillName,
82
- markdown: await readMarkdown(SKILL_PATH(skillName)),
83
- })));
84
- const lines = [
85
- `Appium skills for ${args.platform}/${args.driver}`,
86
- `Mode: ${args.mode}`,
87
- `Real device: ${args.realDevice ? 'yes' : 'no'}`,
88
- '',
89
- 'Recommended skill order:',
90
- ...skillNames.map((skillName, index) => `${index + 1}. ${skillName}`),
91
- ];
92
- if (ignoredOptional.length) {
93
- lines.push('', `Ignored optional skills: ${ignoredOptional.join(', ')}`);
94
- }
95
- lines.push('', 'Source files:', '- AGENTS.md');
96
- lines.push(...skillNames.map((skillName) => `- skills/${skillName}/SKILL.md`));
97
- if (promptTemplate) {
98
- lines.push('', 'Prompt template:', '```text', promptTemplate, '```');
99
- }
100
- lines.push('', '--- AGENTS.md ---', agentsMarkdown.trim());
101
- for (const skill of skillContents) {
102
- lines.push('', `--- skills/${skill.name}/SKILL.md ---`, skill.markdown.trim());
103
- }
104
- return textResult(lines.join('\n'));
105
- },
106
- });
107
- }
39
+ parameters: z.object({
40
+ platform: z.enum(['android', 'ios']).describe('Target local platform.'),
41
+ driver: z
42
+ .enum(['uiautomator2', 'espresso', 'xcuitest'])
43
+ .describe('Target Appium automation driver.'),
44
+ mode: z
45
+ .enum(['setup', 'troubleshoot'])
46
+ .optional()
47
+ .default('setup')
48
+ .describe('Whether to prepare an environment or troubleshoot an existing failure.'),
49
+ realDevice: z
50
+ .boolean()
51
+ .optional()
52
+ .default(false)
53
+ .describe('For ios + xcuitest only: true for a physical device, false for simulator setup.'),
54
+ includeOptional: z
55
+ .array(z.enum(['ffmpeg', 'bundletool']))
56
+ .optional()
57
+ .default([])
58
+ .describe('Optional shared skills to include when explicitly requested.'),
59
+ }),
60
+ annotations: {
61
+ readOnlyHint: true,
62
+ openWorldHint: false,
63
+ },
64
+ execute: async (rawArgs) => {
65
+ const parsed = (rawArgs ?? {});
66
+ const args = {
67
+ platform: parsed.platform,
68
+ driver: parsed.driver,
69
+ mode: parsed.mode ?? 'setup',
70
+ realDevice: parsed.realDevice ?? false,
71
+ includeOptional: Array.isArray(parsed.includeOptional)
72
+ ? parsed.includeOptional
73
+ : [],
74
+ };
75
+ const { skillNames, ignoredOptional } = getSkillNames(args);
76
+ log.info(`Loading Appium skills for ${args.platform}/${args.driver} (${args.mode}) from ${ROOT}`);
77
+ const agentsMarkdown = await readMarkdown(AGENTS_PATH);
78
+ const promptTemplate = getPromptTemplate(agentsMarkdown, getTemplateHeading(args.mode, args.driver, args.realDevice));
79
+ const skillContents = await Promise.all(skillNames.map(async (skillName) => ({
80
+ name: skillName,
81
+ markdown: await readMarkdown(SKILL_PATH(skillName)),
82
+ })));
83
+ const lines = [
84
+ `Appium skills for ${args.platform}/${args.driver}`,
85
+ `Mode: ${args.mode}`,
86
+ `Real device: ${args.realDevice ? 'yes' : 'no'}`,
87
+ '',
88
+ 'Recommended skill order:',
89
+ ...skillNames.map((skillName, index) => `${index + 1}. ${skillName}`),
90
+ ];
91
+ if (ignoredOptional.length) {
92
+ lines.push('', `Ignored optional skills: ${ignoredOptional.join(', ')}`);
93
+ }
94
+ lines.push('', 'Source files:', '- AGENTS.md');
95
+ lines.push(...skillNames.map((skillName) => `- skills/${skillName}/SKILL.md`));
96
+ if (promptTemplate) {
97
+ lines.push('', 'Prompt template:', '```text', promptTemplate, '```');
98
+ }
99
+ lines.push('', '--- AGENTS.md ---', agentsMarkdown.trim());
100
+ for (const skill of skillContents) {
101
+ lines.push('', `--- skills/${skill.name}/SKILL.md ---`, skill.markdown.trim());
102
+ }
103
+ return textResult(lines.join('\n'));
104
+ },
105
+ };
108
106
  /**
109
107
  * Get the list of skill names to return based on the input arguments,
110
108
  * and determine which optional skills were ignored.
@@ -1 +1 @@
1
- {"version":3,"file":"appium-skills.js","sourceRoot":"","sources":["../../../src/tools/documentation/appium-skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAOjD,MAAM,IAAI,GAAG,0BAA0B,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AACvE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACjD,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAE9C,MAAM,YAAY,GAAwD;IACxE,OAAO,EAAE;QACP,YAAY,EAAE;YACZ,wBAAwB;YACxB,2BAA2B;YAC3B,gCAAgC;SACjC;QACD,QAAQ,EAAE;YACR,wBAAwB;YACxB,2BAA2B;YAC3B,4BAA4B;SAC7B;KACF;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,wBAAwB,EAAE,4BAA4B,CAAC;KACnE;CACF,CAAC;AAEF,MAAM,iBAAiB,GAA2B;IAChD,oBAAoB,EAAE,cAAc;IACpC,gBAAgB,EAAE,UAAU;IAC5B,gBAAgB,EAAE,UAAU;IAC5B,qBAAqB,EAAE,sBAAsB;IAC7C,2BAA2B,EAAE,iBAAiB;IAC9C,uBAAuB,EAAE,iBAAiB;CAC3C,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,MAAW;IAC9C,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE;oGACmF;QAChG,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACvE,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;iBAC9C,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,IAAI,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;iBAC/B,QAAQ,EAAE;iBACV,OAAO,CAAC,OAAO,CAAC;iBAChB,QAAQ,CACP,wEAAwE,CACzE;YACH,UAAU,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,iFAAiF,CAClF;YACH,eAAe,EAAE,CAAC;iBACf,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;iBACvC,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CACP,8DAA8D,CAC/D;SACJ,CAAC;QACF,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,OAAY,EAAgB,EAAE;YAC5C,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,EAAE,CAM3B,CAAC;YACH,MAAM,IAAI,GAAG;gBACX,QAAQ,EAAE,MAAM,CAAC,QAAoB;gBACrC,MAAM,EAAE,MAAM,CAAC,MAAgB;gBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,OAAO;gBAC5B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;gBACtC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;oBACpD,CAAC,CAAC,MAAM,CAAC,eAAe;oBACxB,CAAC,CAAC,EAAE;aACP,CAAC;YACF,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,GAAG,CAAC,IAAI,CACN,6BAA6B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,UAAU,IAAI,EAAE,CACxF,CAAC;YAEF,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;YACvD,MAAM,cAAc,GAAG,iBAAiB,CACtC,cAAc,EACd,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAC5D,CAAC;YACF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;gBACnC,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,MAAM,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aACpD,CAAC,CAAC,CACJ,CAAC;YAEF,MAAM,KAAK,GAAG;gBACZ,qBAAqB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;gBACnD,SAAS,IAAI,CAAC,IAAI,EAAE;gBACpB,gBAAgB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;gBAChD,EAAE;gBACF,0BAA0B;gBAC1B,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;aACtE,CAAC;YAEF,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CACR,EAAE,EACF,4BAA4B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzD,CAAC;YACJ,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,SAAS,WAAW,CAAC,CACnE,CAAC;YAEF,IAAI,cAAc,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,cAAc,KAAK,CAAC,IAAI,eAAe,EACvC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CACtB,CAAC;YACJ,CAAC;YAED,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAMtB;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAErE,IAAI,UAAU,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,IAAI,KAAK,cAAc,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,2HAA2H,CAC5H,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,QAAQ,KAAK,SAAS;YACpB,CAAC,CAAC,mDAAmD;YACrD,CAAC,CAAC,mDAAmD,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IACnC,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,eAAe,GAAoB,EAAE,CAAC;IAC5C,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAU,EACV,MAAc,EACd,UAAmB;IAEnB,OAAO,CACL,iBAAiB,CACf,GAAG,IAAI,IAAI,MAAM,GAAG,UAAU,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACpE,IAAI,IAAI,CACV,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,cAAsB,EACtB,OAAsB;IAEtB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,sDAAsD,CACtG,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"appium-skills.js","sourceRoot":"","sources":["../../../src/tools/documentation/appium-skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQjD,MAAM,IAAI,GAAG,0BAA0B,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AACvE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACjD,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAE9C,MAAM,YAAY,GAAwD;IACxE,OAAO,EAAE;QACP,YAAY,EAAE;YACZ,wBAAwB;YACxB,2BAA2B;YAC3B,gCAAgC;SACjC;QACD,QAAQ,EAAE;YACR,wBAAwB;YACxB,2BAA2B;YAC3B,4BAA4B;SAC7B;KACF;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,wBAAwB,EAAE,4BAA4B,CAAC;KACnE;CACF,CAAC;AAEF,MAAM,iBAAiB,GAA2B;IAChD,oBAAoB,EAAE,cAAc;IACpC,gBAAgB,EAAE,UAAU;IAC5B,gBAAgB,EAAE,UAAU;IAC5B,qBAAqB,EAAE,sBAAsB;IAC7C,2BAA2B,EAAE,iBAAiB;IAC9C,uBAAuB,EAAE,iBAAiB;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE;oGACqF;IAClG,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACvE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;aAC9C,QAAQ,CAAC,kCAAkC,CAAC;QAC/C,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;aAC/B,QAAQ,EAAE;aACV,OAAO,CAAC,OAAO,CAAC;aAChB,QAAQ,CACP,wEAAwE,CACzE;QACH,UAAU,EAAE,CAAC;aACV,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,iFAAiF,CAClF;QACH,eAAe,EAAE,CAAC;aACf,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;aACvC,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,8DAA8D,CAAC;KAC5E,CAAC;IACF,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,KAAK;KACrB;IACD,OAAO,EAAE,KAAK,EAAE,OAAY,EAAgB,EAAE;QAC5C,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,EAAE,CAM3B,CAAC;QACH,MAAM,IAAI,GAAG;YACX,QAAQ,EAAE,MAAM,CAAC,QAAoB;YACrC,MAAM,EAAE,MAAM,CAAC,MAAgB;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,OAAO;YAC5B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;YACtC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;gBACpD,CAAC,CAAC,MAAM,CAAC,eAAe;gBACxB,CAAC,CAAC,EAAE;SACP,CAAC;QACF,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAE5D,GAAG,CAAC,IAAI,CACN,6BAA6B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,UAAU,IAAI,EAAE,CACxF,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,iBAAiB,CACtC,cAAc,EACd,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAC5D,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SACpD,CAAC,CAAC,CACJ,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,qBAAqB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;YACnD,SAAS,IAAI,CAAC,IAAI,EAAE;YACpB,gBAAgB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YAChD,EAAE;YACF,0BAA0B;YAC1B,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;SACtE,CAAC;QAEF,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,4BAA4B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,SAAS,WAAW,CAAC,CACnE,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,cAAc,KAAK,CAAC,IAAI,eAAe,EACvC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CACtB,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;CACF,CAAC;AAEF;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAMtB;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAErE,IAAI,UAAU,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,IAAI,KAAK,cAAc,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,2HAA2H,CAC5H,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,QAAQ,KAAK,SAAS;YACpB,CAAC,CAAC,mDAAmD;YACrD,CAAC,CAAC,mDAAmD,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IACnC,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,eAAe,GAAoB,EAAE,CAAC;IAC5C,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAU,EACV,MAAc,EACd,UAAmB;IAEnB,OAAO,CACL,iBAAiB,CACf,GAAG,IAAI,IAAI,MAAM,GAAG,UAAU,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACpE,IAAI,IAAI,CACV,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,cAAsB,EACtB,OAAsB;IAEtB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,sDAAsD,CACtG,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AppiumMcpPlugin, McpRegistry } from '../../plugin.js';
2
+ /**
3
+ * Appium documentation plugin.
4
+ *
5
+ * Registers the documentation-focused tools:
6
+ * - appium_documentation_query
7
+ * - appium_skills
8
+ */
9
+ export declare class AppiumDocumentation implements AppiumMcpPlugin {
10
+ readonly name = "appium-documentation";
11
+ readonly version: string;
12
+ register(registry: McpRegistry): void;
13
+ }
14
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/tools/documentation/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKpE;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,IAAI,0BAA0B;IACvC,QAAQ,CAAC,OAAO,SAAe;IAE/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;CAItC"}
@@ -0,0 +1,19 @@
1
+ import { appiumDocumentationQueryTool } from './answer-appium.js';
2
+ import { appiumSkillsTool } from './appium-skills.js';
3
+ import pkg from '../../../package.json' with { type: 'json' };
4
+ /**
5
+ * Appium documentation plugin.
6
+ *
7
+ * Registers the documentation-focused tools:
8
+ * - appium_documentation_query
9
+ * - appium_skills
10
+ */
11
+ export class AppiumDocumentation {
12
+ name = 'appium-documentation';
13
+ version = pkg.version;
14
+ register(registry) {
15
+ registry.addTool(appiumDocumentationQueryTool);
16
+ registry.addTool(appiumSkillsTool);
17
+ }
18
+ }
19
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/tools/documentation/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,GAAG,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,OAAO,mBAAmB;IACrB,IAAI,GAAG,sBAAsB,CAAC;IAC9B,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE/B,QAAQ,CAAC,QAAqB;QAC5B,QAAQ,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC/C,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AAwCtD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAuJ3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AAsCtD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAmJ3D"}
@@ -1,6 +1,4 @@
1
1
  import log from '../logger.js';
2
- import answerAppium from './documentation/answer-appium.js';
3
- import appiumSkills from './documentation/appium-skills.js';
4
2
  import session from './session/session.js';
5
3
  import generateLocators from './test-generation/locators.js';
6
4
  import selectDevice from './session/select-device.js';
@@ -152,9 +150,6 @@ export default function registerTools(server) {
152
150
  // Test Generation
153
151
  generateLocators(server);
154
152
  generateTest(server);
155
- // Documentation
156
- answerAppium(server);
157
- appiumSkills(server);
158
153
  // AI (vision-based fallback) — gated; only registered when explicitly enabled.
159
154
  assertAIConfig();
160
155
  if (isAIEnabled()) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.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.82.0",
4
+ "version": "1.82.1",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
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.82.0",
6
+ "version": "1.82.1",
7
7
  "packages": [
8
8
  {
9
9
  "registryType": "npm",
10
10
  "identifier": "appium-mcp",
11
- "version": "1.82.0",
11
+ "version": "1.82.1",
12
12
  "transport": {
13
13
  "type": "stdio"
14
14
  }
Binary file
package/src/server.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  import { createAppiumMcpServer } from './create-server.js';
2
+ import { AppiumDocumentation } from './tools/documentation/plugin.js';
2
3
 
3
- const server = createAppiumMcpServer();
4
+ const server = createAppiumMcpServer({
5
+ plugins: [new AppiumDocumentation()],
6
+ });
4
7
  export default server;
@@ -1,46 +1,47 @@
1
1
  /**
2
- * Tool to select mobile platform before creating a session
2
+ * Tool to query indexed Appium documentation.
3
3
  */
4
+ import type { FastMCP } from 'fastmcp';
4
5
  import { z } from 'zod';
5
6
  import { answerAppiumQuery, initializeAppiumDocumentation } from './index.js';
6
7
  import log from '../../logger.js';
7
8
  import { errorResult, textResult } from '../tool-response.js';
8
9
 
9
- export default function answerAppium(server: any): void {
10
- server.addTool({
11
- name: 'appium_documentation_query',
12
- description: `Query Appium documentation using RAG (Retrieval-Augmented Generation).
10
+ type ToolDef = Parameters<FastMCP['addTool']>[0];
11
+
12
+ export const appiumDocumentationQueryTool: ToolDef = {
13
+ name: 'appium_documentation_query',
14
+ description: `Query Appium documentation using RAG (Retrieval-Augmented Generation).
13
15
  This tool searches through indexed Appium documentation to answer questions about Appium features, setup, configuration, drivers, and usage.
14
16
  `,
15
- parameters: z.object({
16
- query: z
17
- .string()
18
- .describe('The question or query about Appium documentation'),
19
- }),
20
- execute: async (args: any, _context: any): Promise<any> => {
21
- const query = args.query;
22
- if (!query) {
23
- return errorResult('Query parameter is required');
24
- }
17
+ parameters: z.object({
18
+ query: z
19
+ .string()
20
+ .describe('The question or query about Appium documentation'),
21
+ }),
22
+ execute: async (args: any, _context: any): Promise<any> => {
23
+ const query = args.query;
24
+ if (!query) {
25
+ return errorResult('Query parameter is required');
26
+ }
25
27
 
28
+ try {
29
+ const result = await answerAppiumQuery({ query });
30
+ return textResult(result.answer);
31
+ } catch (_docError) {
32
+ // If documentation query fails, try to initialize and retry once
26
33
  try {
34
+ log.info('Documentation not initialized, initializing now...');
35
+ await initializeAppiumDocumentation();
27
36
  const result = await answerAppiumQuery({ query });
28
37
  return textResult(result.answer);
29
- } catch (_docError) {
30
- // If documentation query fails, try to initialize and retry once
31
- try {
32
- log.info('Documentation not initialized, initializing now...');
33
- await initializeAppiumDocumentation();
34
- const result = await answerAppiumQuery({ query });
35
- return textResult(result.answer);
36
- } catch (retryError) {
37
- return errorResult(
38
- `Error querying Appium documentation: ${
39
- (retryError as Error).message
40
- }. Please ensure the documentation is indexed first.`
41
- );
42
- }
38
+ } catch (retryError) {
39
+ return errorResult(
40
+ `Error querying Appium documentation: ${
41
+ (retryError as Error).message
42
+ }. Please ensure the documentation is indexed first.`
43
+ );
43
44
  }
44
- },
45
- });
46
- }
45
+ }
46
+ },
47
+ };
@@ -1,5 +1,6 @@
1
1
  import { readFile } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
+ import type { FastMCP } from 'fastmcp';
3
4
  import { z } from 'zod';
4
5
  import log from '../../logger.js';
5
6
  import { resolveAppiumResourcesPath } from '../../utils/paths.js';
@@ -9,6 +10,7 @@ type Platform = 'android' | 'ios';
9
10
  type Driver = 'uiautomator2' | 'espresso' | 'xcuitest';
10
11
  type Mode = 'setup' | 'troubleshoot';
11
12
  type OptionalSkill = 'ffmpeg' | 'bundletool';
13
+ type ToolDef = Parameters<FastMCP['addTool']>[0];
12
14
 
13
15
  const ROOT = resolveAppiumResourcesPath('submodules', 'appium-skills');
14
16
  const AGENTS_PATH = path.join(ROOT, 'AGENTS.md');
@@ -42,115 +44,108 @@ const TEMPLATE_HEADINGS: Record<string, string> = {
42
44
  'troubleshoot:xcuitest': 'Troubleshooting',
43
45
  };
44
46
 
45
- export default function appiumSkills(server: any): void {
46
- server.addTool({
47
- name: 'appium_skills',
48
- description: `Return ordered Appium setup or troubleshooting skills from the vendored appium/skills repository.
47
+ export const appiumSkillsTool: ToolDef = {
48
+ name: 'appium_skills',
49
+ description: `Return ordered Appium setup or troubleshooting skills from the vendored appium/skills repository.
49
50
  Use this before preparing a LOCAL Appium environment or diagnosing local prerequisite issues.`,
50
- parameters: z.object({
51
- platform: z.enum(['android', 'ios']).describe('Target local platform.'),
52
- driver: z
53
- .enum(['uiautomator2', 'espresso', 'xcuitest'])
54
- .describe('Target Appium automation driver.'),
55
- mode: z
56
- .enum(['setup', 'troubleshoot'])
57
- .optional()
58
- .default('setup')
59
- .describe(
60
- 'Whether to prepare an environment or troubleshoot an existing failure.'
61
- ),
62
- realDevice: z
63
- .boolean()
64
- .optional()
65
- .default(false)
66
- .describe(
67
- 'For ios + xcuitest only: true for a physical device, false for simulator setup.'
68
- ),
69
- includeOptional: z
70
- .array(z.enum(['ffmpeg', 'bundletool']))
71
- .optional()
72
- .default([])
73
- .describe(
74
- 'Optional shared skills to include when explicitly requested.'
75
- ),
76
- }),
77
- annotations: {
78
- readOnlyHint: true,
79
- openWorldHint: false,
80
- },
81
- execute: async (rawArgs: any): Promise<any> => {
82
- const parsed = (rawArgs ?? {}) as Partial<{
83
- platform: Platform;
84
- driver: Driver;
85
- mode: Mode;
86
- realDevice: boolean;
87
- includeOptional: OptionalSkill[];
88
- }>;
89
- const args = {
90
- platform: parsed.platform as Platform,
91
- driver: parsed.driver as Driver,
92
- mode: parsed.mode ?? 'setup',
93
- realDevice: parsed.realDevice ?? false,
94
- includeOptional: Array.isArray(parsed.includeOptional)
95
- ? parsed.includeOptional
96
- : [],
97
- };
98
- const { skillNames, ignoredOptional } = getSkillNames(args);
99
-
100
- log.info(
101
- `Loading Appium skills for ${args.platform}/${args.driver} (${args.mode}) from ${ROOT}`
102
- );
51
+ parameters: z.object({
52
+ platform: z.enum(['android', 'ios']).describe('Target local platform.'),
53
+ driver: z
54
+ .enum(['uiautomator2', 'espresso', 'xcuitest'])
55
+ .describe('Target Appium automation driver.'),
56
+ mode: z
57
+ .enum(['setup', 'troubleshoot'])
58
+ .optional()
59
+ .default('setup')
60
+ .describe(
61
+ 'Whether to prepare an environment or troubleshoot an existing failure.'
62
+ ),
63
+ realDevice: z
64
+ .boolean()
65
+ .optional()
66
+ .default(false)
67
+ .describe(
68
+ 'For ios + xcuitest only: true for a physical device, false for simulator setup.'
69
+ ),
70
+ includeOptional: z
71
+ .array(z.enum(['ffmpeg', 'bundletool']))
72
+ .optional()
73
+ .default([])
74
+ .describe('Optional shared skills to include when explicitly requested.'),
75
+ }),
76
+ annotations: {
77
+ readOnlyHint: true,
78
+ openWorldHint: false,
79
+ },
80
+ execute: async (rawArgs: any): Promise<any> => {
81
+ const parsed = (rawArgs ?? {}) as Partial<{
82
+ platform: Platform;
83
+ driver: Driver;
84
+ mode: Mode;
85
+ realDevice: boolean;
86
+ includeOptional: OptionalSkill[];
87
+ }>;
88
+ const args = {
89
+ platform: parsed.platform as Platform,
90
+ driver: parsed.driver as Driver,
91
+ mode: parsed.mode ?? 'setup',
92
+ realDevice: parsed.realDevice ?? false,
93
+ includeOptional: Array.isArray(parsed.includeOptional)
94
+ ? parsed.includeOptional
95
+ : [],
96
+ };
97
+ const { skillNames, ignoredOptional } = getSkillNames(args);
98
+
99
+ log.info(
100
+ `Loading Appium skills for ${args.platform}/${args.driver} (${args.mode}) from ${ROOT}`
101
+ );
103
102
 
104
- const agentsMarkdown = await readMarkdown(AGENTS_PATH);
105
- const promptTemplate = getPromptTemplate(
106
- agentsMarkdown,
107
- getTemplateHeading(args.mode, args.driver, args.realDevice)
108
- );
109
- const skillContents = await Promise.all(
110
- skillNames.map(async (skillName) => ({
111
- name: skillName,
112
- markdown: await readMarkdown(SKILL_PATH(skillName)),
113
- }))
114
- );
103
+ const agentsMarkdown = await readMarkdown(AGENTS_PATH);
104
+ const promptTemplate = getPromptTemplate(
105
+ agentsMarkdown,
106
+ getTemplateHeading(args.mode, args.driver, args.realDevice)
107
+ );
108
+ const skillContents = await Promise.all(
109
+ skillNames.map(async (skillName) => ({
110
+ name: skillName,
111
+ markdown: await readMarkdown(SKILL_PATH(skillName)),
112
+ }))
113
+ );
115
114
 
116
- const lines = [
117
- `Appium skills for ${args.platform}/${args.driver}`,
118
- `Mode: ${args.mode}`,
119
- `Real device: ${args.realDevice ? 'yes' : 'no'}`,
120
- '',
121
- 'Recommended skill order:',
122
- ...skillNames.map((skillName, index) => `${index + 1}. ${skillName}`),
123
- ];
124
-
125
- if (ignoredOptional.length) {
126
- lines.push(
127
- '',
128
- `Ignored optional skills: ${ignoredOptional.join(', ')}`
129
- );
130
- }
131
-
132
- lines.push('', 'Source files:', '- AGENTS.md');
115
+ const lines = [
116
+ `Appium skills for ${args.platform}/${args.driver}`,
117
+ `Mode: ${args.mode}`,
118
+ `Real device: ${args.realDevice ? 'yes' : 'no'}`,
119
+ '',
120
+ 'Recommended skill order:',
121
+ ...skillNames.map((skillName, index) => `${index + 1}. ${skillName}`),
122
+ ];
123
+
124
+ if (ignoredOptional.length) {
125
+ lines.push('', `Ignored optional skills: ${ignoredOptional.join(', ')}`);
126
+ }
127
+
128
+ lines.push('', 'Source files:', '- AGENTS.md');
129
+ lines.push(
130
+ ...skillNames.map((skillName) => `- skills/${skillName}/SKILL.md`)
131
+ );
132
+
133
+ if (promptTemplate) {
134
+ lines.push('', 'Prompt template:', '```text', promptTemplate, '```');
135
+ }
136
+
137
+ lines.push('', '--- AGENTS.md ---', agentsMarkdown.trim());
138
+ for (const skill of skillContents) {
133
139
  lines.push(
134
- ...skillNames.map((skillName) => `- skills/${skillName}/SKILL.md`)
140
+ '',
141
+ `--- skills/${skill.name}/SKILL.md ---`,
142
+ skill.markdown.trim()
135
143
  );
144
+ }
136
145
 
137
- if (promptTemplate) {
138
- lines.push('', 'Prompt template:', '```text', promptTemplate, '```');
139
- }
140
-
141
- lines.push('', '--- AGENTS.md ---', agentsMarkdown.trim());
142
- for (const skill of skillContents) {
143
- lines.push(
144
- '',
145
- `--- skills/${skill.name}/SKILL.md ---`,
146
- skill.markdown.trim()
147
- );
148
- }
149
-
150
- return textResult(lines.join('\n'));
151
- },
152
- });
153
- }
146
+ return textResult(lines.join('\n'));
147
+ },
148
+ };
154
149
 
155
150
  /**
156
151
  * Get the list of skill names to return based on the input arguments,
@@ -0,0 +1,21 @@
1
+ import type { AppiumMcpPlugin, McpRegistry } from '../../plugin.js';
2
+ import { appiumDocumentationQueryTool } from './answer-appium.js';
3
+ import { appiumSkillsTool } from './appium-skills.js';
4
+ import pkg from '../../../package.json' with { type: 'json' };
5
+
6
+ /**
7
+ * Appium documentation plugin.
8
+ *
9
+ * Registers the documentation-focused tools:
10
+ * - appium_documentation_query
11
+ * - appium_skills
12
+ */
13
+ export class AppiumDocumentation implements AppiumMcpPlugin {
14
+ readonly name = 'appium-documentation';
15
+ readonly version = pkg.version;
16
+
17
+ register(registry: McpRegistry): void {
18
+ registry.addTool(appiumDocumentationQueryTool);
19
+ registry.addTool(appiumSkillsTool);
20
+ }
21
+ }
@@ -14,8 +14,6 @@
14
14
  */
15
15
  import type { ContentResult, FastMCP } from 'fastmcp';
16
16
  import log from '../logger.js';
17
- import answerAppium from './documentation/answer-appium.js';
18
- import appiumSkills from './documentation/appium-skills.js';
19
17
  import session from './session/session.js';
20
18
  import generateLocators from './test-generation/locators.js';
21
19
  import selectDevice from './session/select-device.js';
@@ -187,10 +185,6 @@ export default function registerTools(server: FastMCP): void {
187
185
  generateLocators(server);
188
186
  generateTest(server);
189
187
 
190
- // Documentation
191
- answerAppium(server);
192
- appiumSkills(server);
193
-
194
188
  // AI (vision-based fallback) — gated; only registered when explicitly enabled.
195
189
  assertAIConfig();
196
190
  if (isAIEnabled()) {