appium-mcp 1.82.0 → 1.82.2
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 +12 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -1
- package/dist/server.js.map +1 -1
- package/dist/tests/tools/documentation/appium-skills.test.js +2 -6
- package/dist/tests/tools/documentation/appium-skills.test.js.map +1 -1
- package/dist/tests/tools/documentation/plugin.test.d.ts +2 -0
- package/dist/tests/tools/documentation/plugin.test.d.ts.map +1 -0
- package/dist/tests/tools/documentation/plugin.test.js +34 -0
- package/dist/tests/tools/documentation/plugin.test.js.map +1 -0
- package/dist/tests/tools/llm-wording.test.js +1 -0
- package/dist/tests/tools/llm-wording.test.js.map +1 -1
- package/dist/tools/documentation/answer-appium.d.ts +7 -1
- package/dist/tools/documentation/answer-appium.d.ts.map +1 -1
- package/dist/tools/documentation/answer-appium.js +26 -31
- package/dist/tools/documentation/answer-appium.js.map +1 -1
- package/dist/tools/documentation/appium-skills.d.ts +4 -1
- package/dist/tools/documentation/appium-skills.d.ts.map +1 -1
- package/dist/tools/documentation/appium-skills.js +70 -72
- package/dist/tools/documentation/appium-skills.js.map +1 -1
- package/dist/tools/documentation/plugin.d.ts +14 -0
- package/dist/tools/documentation/plugin.d.ts.map +1 -0
- package/dist/tools/documentation/plugin.js +19 -0
- package/dist/tools/documentation/plugin.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -5
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/session/create-session.d.ts +10 -2
- package/dist/tools/session/create-session.d.ts.map +1 -1
- package/dist/tools/session/create-session.js +9 -1
- package/dist/tools/session/create-session.js.map +1 -1
- package/dist/tools/session/session.d.ts.map +1 -1
- package/dist/tools/session/session.js +2 -2
- package/dist/tools/session/session.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/resources/submodules.zip +0 -0
- package/src/server.ts +4 -1
- package/src/tools/documentation/answer-appium.ts +33 -32
- package/src/tools/documentation/appium-skills.ts +98 -103
- package/src/tools/documentation/plugin.ts +21 -0
- package/src/tools/index.ts +0 -6
- package/src/tools/session/create-session.ts +12 -3
- package/src/tools/session/session.ts +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [1.82.2](https://github.com/appium/appium-mcp/compare/v1.82.1...v1.82.2) (2026-06-08)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* define driver mode platform ([#388](https://github.com/appium/appium-mcp/issues/388)) ([a86b5ee](https://github.com/appium/appium-mcp/commit/a86b5ee0530fa0b60f27d5ad5121b4e4b6a9be6c))
|
|
6
|
+
|
|
7
|
+
## [1.82.1](https://github.com/appium/appium-mcp/compare/v1.82.0...v1.82.1) (2026-06-03)
|
|
8
|
+
|
|
9
|
+
### Miscellaneous Chores
|
|
10
|
+
|
|
11
|
+
* 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))
|
|
12
|
+
|
|
1
13
|
## [1.82.0](https://github.com/appium/appium-mcp/compare/v1.81.7...v1.82.0) (2026-06-02)
|
|
2
14
|
|
|
3
15
|
### Features
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,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
|
|
14
|
+
const { appiumSkillsTool } = await import('../../../tools/documentation/appium-skills.js');
|
|
15
15
|
function getRegisteredTool() {
|
|
16
|
-
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,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,
|
|
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 @@
|
|
|
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"}
|
|
@@ -17,6 +17,7 @@ jest.unstable_mockModule('../../tools/session/attach-session', () => ({
|
|
|
17
17
|
}));
|
|
18
18
|
jest.unstable_mockModule('../../tools/session/create-session', () => ({
|
|
19
19
|
createSessionAction: jest.fn(),
|
|
20
|
+
DRIVER_MODE_PLATFORMS: ['ios', 'android', 'general'],
|
|
20
21
|
}));
|
|
21
22
|
jest.unstable_mockModule('../../tools/session/delete-session', () => ({
|
|
22
23
|
deleteSessionAction: jest.fn(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-wording.test.js","sourceRoot":"","sources":["../../../src/tests/tools/llm-wording.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE7D,SAAS,oBAAoB,CAAC,GAAY;IACxC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;IAC3B,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;IACxB,8BAA8B,EAAE,IAAI,CAAC,EAAE,EAAE;IACzC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC;CAChD,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,mBAAmB,CAAC,oCAAoC,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;CAC/B,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,mBAAmB,CAAC,oCAAoC,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"llm-wording.test.js","sourceRoot":"","sources":["../../../src/tests/tools/llm-wording.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
|
|
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":"
|
|
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
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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 (
|
|
29
|
-
|
|
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":"
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appium-skills.d.ts","sourceRoot":"","sources":["../../../src/tools/documentation/appium-skills.ts"],"names":[],"mappings":"
|
|
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
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"appium-skills.js","sourceRoot":"","sources":["../../../src/tools/documentation/appium-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -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()) {
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAeA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { getPortFromUrl } from '../../utils/url.js';
|
|
2
2
|
import type { ContentResult } from 'fastmcp';
|
|
3
|
+
/**
|
|
4
|
+
* What driver should the appium-mcp session management tool create and manage.
|
|
5
|
+
* 'ios' and 'android' create sessions with the embedded Appium drivers inside this MCP server.
|
|
6
|
+
* 'general' is for remote servers only and just passes the capabilities through as-is without adding any defaults,
|
|
7
|
+
* so it's up to the user to specify the correct driver in their capabilities (e.g., Windows, macOS, custom).
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
export declare const DRIVER_MODE_PLATFORMS: readonly ["ios", "android", "general"];
|
|
3
11
|
interface Capabilities {
|
|
4
12
|
platformName: string;
|
|
5
13
|
'appium:automationName': string;
|
|
@@ -39,7 +47,7 @@ export declare function validateRemoteServerUrl(remoteServerUrl: string, regexRu
|
|
|
39
47
|
* servers. Supports both local and remote Appium server connections.
|
|
40
48
|
*
|
|
41
49
|
* @param {Object} args - Action arguments
|
|
42
|
-
* @param {
|
|
50
|
+
* @param {(typeof DRIVER_MODE_PLATFORMS)[number]} args.platform - REQUIRED. The target
|
|
43
51
|
* platform. For local servers, must match the platform explicitly selected via
|
|
44
52
|
* `select_device`. Use 'general' only with `remoteServerUrl` for non-Android/iOS
|
|
45
53
|
* drivers.
|
|
@@ -54,7 +62,7 @@ export declare function validateRemoteServerUrl(remoteServerUrl: string, regexRu
|
|
|
54
62
|
* Returns a tool-execution error result (isError: true) on failure.
|
|
55
63
|
*/
|
|
56
64
|
export declare function createSessionAction(args: {
|
|
57
|
-
platform:
|
|
65
|
+
platform: (typeof DRIVER_MODE_PLATFORMS)[number];
|
|
58
66
|
capabilities?: Record<string, any>;
|
|
59
67
|
remoteServerUrl?: string;
|
|
60
68
|
}): Promise<ContentResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-session.d.ts","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAkBpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"create-session.d.ts","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAkBpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,wCAAyC,CAAC;AAG5E,UAAU,YAAY;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AASD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,YAAY,GACzB,YAAY,CAQd;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC3C,cAAc,EAAE,OAAO,GACtB,YAAY,CAiCd;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,GACtC,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC3C,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,YAAY,CAAC,CA2DvB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAKN;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,QAAQ,EAAE,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,aAAa,CAAC,CA2HzB;AA2FD,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -11,6 +11,14 @@ import log from '../../logger.js';
|
|
|
11
11
|
import { createUIResource, createSessionDashboardUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
|
|
12
12
|
import { errorResult, textResult, toolErrorMessage } from '../tool-response.js';
|
|
13
13
|
import WebDriver from 'webdriver';
|
|
14
|
+
/**
|
|
15
|
+
* What driver should the appium-mcp session management tool create and manage.
|
|
16
|
+
* 'ios' and 'android' create sessions with the embedded Appium drivers inside this MCP server.
|
|
17
|
+
* 'general' is for remote servers only and just passes the capabilities through as-is without adding any defaults,
|
|
18
|
+
* so it's up to the user to specify the correct driver in their capabilities (e.g., Windows, macOS, custom).
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
export const DRIVER_MODE_PLATFORMS = ['ios', 'android', 'general'];
|
|
14
22
|
/**
|
|
15
23
|
* Remove empty string values from capabilities object
|
|
16
24
|
*/
|
|
@@ -143,7 +151,7 @@ export function validateRemoteServerUrl(remoteServerUrl, regexRule) {
|
|
|
143
151
|
* servers. Supports both local and remote Appium server connections.
|
|
144
152
|
*
|
|
145
153
|
* @param {Object} args - Action arguments
|
|
146
|
-
* @param {
|
|
154
|
+
* @param {(typeof DRIVER_MODE_PLATFORMS)[number]} args.platform - REQUIRED. The target
|
|
147
155
|
* platform. For local servers, must match the platform explicitly selected via
|
|
148
156
|
* `select_device`. Use 'general' only with `remoteServerUrl` for non-Android/iOS
|
|
149
157
|
* drivers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,SAAS,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/tools/session/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/tools/session/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAiFvC,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA6ErD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { attachSessionAction } from './attach-session.js';
|
|
3
|
-
import { createSessionAction } from './create-session.js';
|
|
3
|
+
import { createSessionAction, DRIVER_MODE_PLATFORMS, } from './create-session.js';
|
|
4
4
|
import { deleteSessionAction } from './delete-session.js';
|
|
5
5
|
import { detachSessionAction } from './detach-session.js';
|
|
6
6
|
import { listSessionsAction } from './list-sessions.js';
|
|
@@ -40,7 +40,7 @@ const schema = z.object({
|
|
|
40
40
|
'list: List all active Appium sessions managed by this MCP server, including active flag, ownership, and current context.' +
|
|
41
41
|
'select: Set an existing Appium session as the active session for subsequent tool calls (requires sessionId).'),
|
|
42
42
|
platform: z
|
|
43
|
-
.enum(
|
|
43
|
+
.enum(DRIVER_MODE_PLATFORMS)
|
|
44
44
|
.optional()
|
|
45
45
|
.describe('Required for create. ' +
|
|
46
46
|
'For local servers, must match the platform selected via select_device. ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/tools/session/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/tools/session/session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"name": "io.github.appium/appium-mcp",
|
|
4
4
|
"title": "MCP Appium - Mobile Development and Automation Server",
|
|
5
5
|
"description": "MCP server for Appium mobile automation on iOS and Android devices with test creation tools.",
|
|
6
|
-
"version": "1.82.
|
|
6
|
+
"version": "1.82.2",
|
|
7
7
|
"packages": [
|
|
8
8
|
{
|
|
9
9
|
"registryType": "npm",
|
|
10
10
|
"identifier": "appium-mcp",
|
|
11
|
-
"version": "1.82.
|
|
11
|
+
"version": "1.82.2",
|
|
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
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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 (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
140
|
+
'',
|
|
141
|
+
`--- skills/${skill.name}/SKILL.md ---`,
|
|
142
|
+
skill.markdown.trim()
|
|
135
143
|
);
|
|
144
|
+
}
|
|
136
145
|
|
|
137
|
-
|
|
138
|
-
|
|
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
|
+
}
|
package/src/tools/index.ts
CHANGED
|
@@ -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()) {
|
|
@@ -23,6 +23,15 @@ import type { ContentResult } from 'fastmcp';
|
|
|
23
23
|
import { errorResult, textResult, toolErrorMessage } from '../tool-response.js';
|
|
24
24
|
import WebDriver from 'webdriver';
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* What driver should the appium-mcp session management tool create and manage.
|
|
28
|
+
* 'ios' and 'android' create sessions with the embedded Appium drivers inside this MCP server.
|
|
29
|
+
* 'general' is for remote servers only and just passes the capabilities through as-is without adding any defaults,
|
|
30
|
+
* so it's up to the user to specify the correct driver in their capabilities (e.g., Windows, macOS, custom).
|
|
31
|
+
*
|
|
32
|
+
*/
|
|
33
|
+
export const DRIVER_MODE_PLATFORMS = ['ios', 'android', 'general'] as const;
|
|
34
|
+
|
|
26
35
|
// Define capabilities type
|
|
27
36
|
interface Capabilities {
|
|
28
37
|
platformName: string;
|
|
@@ -212,7 +221,7 @@ export function validateRemoteServerUrl(
|
|
|
212
221
|
* servers. Supports both local and remote Appium server connections.
|
|
213
222
|
*
|
|
214
223
|
* @param {Object} args - Action arguments
|
|
215
|
-
* @param {
|
|
224
|
+
* @param {(typeof DRIVER_MODE_PLATFORMS)[number]} args.platform - REQUIRED. The target
|
|
216
225
|
* platform. For local servers, must match the platform explicitly selected via
|
|
217
226
|
* `select_device`. Use 'general' only with `remoteServerUrl` for non-Android/iOS
|
|
218
227
|
* drivers.
|
|
@@ -227,7 +236,7 @@ export function validateRemoteServerUrl(
|
|
|
227
236
|
* Returns a tool-execution error result (isError: true) on failure.
|
|
228
237
|
*/
|
|
229
238
|
export async function createSessionAction(args: {
|
|
230
|
-
platform:
|
|
239
|
+
platform: (typeof DRIVER_MODE_PLATFORMS)[number];
|
|
231
240
|
capabilities?: Record<string, any>;
|
|
232
241
|
remoteServerUrl?: string;
|
|
233
242
|
}): Promise<ContentResult> {
|
|
@@ -358,7 +367,7 @@ export async function createSessionAction(args: {
|
|
|
358
367
|
function buildCreateSessionFailureMessage(
|
|
359
368
|
error: unknown,
|
|
360
369
|
ctx: {
|
|
361
|
-
platform:
|
|
370
|
+
platform: (typeof DRIVER_MODE_PLATFORMS)[number];
|
|
362
371
|
remoteServerUrl?: string;
|
|
363
372
|
finalCapabilities?: Capabilities;
|
|
364
373
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { FastMCP } from 'fastmcp';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { attachSessionAction } from './attach-session.js';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
createSessionAction,
|
|
6
|
+
DRIVER_MODE_PLATFORMS,
|
|
7
|
+
} from './create-session.js';
|
|
5
8
|
import { deleteSessionAction } from './delete-session.js';
|
|
6
9
|
import { detachSessionAction } from './detach-session.js';
|
|
7
10
|
import { listSessionsAction } from './list-sessions.js';
|
|
@@ -46,7 +49,7 @@ const schema = z.object({
|
|
|
46
49
|
'select: Set an existing Appium session as the active session for subsequent tool calls (requires sessionId).'
|
|
47
50
|
),
|
|
48
51
|
platform: z
|
|
49
|
-
.enum(
|
|
52
|
+
.enum(DRIVER_MODE_PLATFORMS)
|
|
50
53
|
.optional()
|
|
51
54
|
.describe(
|
|
52
55
|
'Required for create. ' +
|