appium-mcp 1.1.10 → 1.1.12
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/.github/workflows/publish-mcp.yml +53 -0
- package/CHANGELOG.md +16 -0
- package/README.md +85 -36
- package/dist/devicemanager/adb-manager.js +1 -1
- package/dist/devicemanager/adb-manager.js.map +1 -1
- package/dist/devicemanager/ios-manager.js +1 -1
- package/dist/devicemanager/ios-manager.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locators/generate-all-locators.js +1 -1
- package/dist/locators/generate-all-locators.js.map +1 -1
- package/dist/locators/locator-generation.js +1 -1
- package/dist/locators/locator-generation.js.map +1 -1
- package/dist/logger.js.map +1 -0
- package/dist/resources/index.js +1 -1
- package/dist/resources/index.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/{tools/session-store.js → session-store.js} +1 -1
- package/dist/session-store.js.map +1 -0
- package/dist/tools/{interactions → app-management}/activate-app.js +1 -1
- package/dist/tools/app-management/activate-app.js.map +1 -0
- package/dist/tools/{interactions → app-management}/install-app.js +1 -1
- package/dist/tools/app-management/install-app.js.map +1 -0
- package/dist/tools/{interactions → app-management}/list-apps.js +1 -1
- package/dist/tools/app-management/list-apps.js.map +1 -0
- package/dist/tools/{interactions → app-management}/terminate-app.js +1 -1
- package/dist/tools/app-management/terminate-app.js.map +1 -0
- package/dist/tools/{interactions → app-management}/uninstall-app.js +1 -1
- package/dist/tools/app-management/uninstall-app.js.map +1 -0
- package/dist/tools/{answer-appium.js → documentation/answer-appium.js} +2 -2
- package/dist/tools/documentation/answer-appium.js.map +1 -0
- package/dist/tools/documentation/index.js +1 -1
- package/dist/tools/documentation/index.js.map +1 -1
- package/dist/tools/documentation/reasoning-rag.js +1 -1
- package/dist/tools/documentation/reasoning-rag.js.map +1 -1
- package/dist/tools/documentation/sentence-transformers-embeddings.js +1 -1
- package/dist/tools/documentation/sentence-transformers-embeddings.js.map +1 -1
- package/dist/tools/documentation/simple-pdf-indexer.js +1 -1
- package/dist/tools/documentation/simple-pdf-indexer.js.map +1 -1
- package/dist/tools/index.js +34 -27
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/interactions/click.js +1 -1
- package/dist/tools/interactions/click.js.map +1 -1
- package/dist/tools/interactions/double-tap.js +1 -1
- package/dist/tools/interactions/double-tap.js.map +1 -1
- package/dist/tools/interactions/find.js +1 -1
- package/dist/tools/interactions/find.js.map +1 -1
- package/dist/tools/interactions/get-page-source.js +1 -1
- package/dist/tools/interactions/get-page-source.js.map +1 -1
- package/dist/tools/interactions/get-text.js +1 -1
- package/dist/tools/interactions/get-text.js.map +1 -1
- package/dist/tools/interactions/screenshot.js +1 -1
- package/dist/tools/interactions/screenshot.js.map +1 -1
- package/dist/tools/interactions/set-value.js +1 -1
- package/dist/tools/interactions/set-value.js.map +1 -1
- package/dist/tools/{boot-simulator.js → ios/boot-simulator.js} +2 -2
- package/dist/tools/ios/boot-simulator.js.map +1 -0
- package/dist/tools/{install-wda.js → ios/install-wda.js} +1 -1
- package/dist/tools/ios/install-wda.js.map +1 -0
- package/dist/tools/{setup-wda.js → ios/setup-wda.js} +1 -1
- package/dist/tools/ios/setup-wda.js.map +1 -0
- package/dist/tools/{scroll-to-element.js → navigations/scroll-to-element.js} +1 -1
- package/dist/tools/navigations/scroll-to-element.js.map +1 -0
- package/dist/tools/{scroll.js → navigations/scroll.js} +2 -2
- package/dist/tools/navigations/scroll.js.map +1 -0
- package/dist/tools/{create-session.js → session/create-session.js} +5 -4
- package/dist/tools/session/create-session.js.map +1 -0
- package/dist/tools/{delete-session.js → session/delete-session.js} +2 -2
- package/dist/tools/session/delete-session.js.map +1 -0
- package/dist/tools/{select-device.js → session/select-device.js} +3 -3
- package/dist/tools/session/select-device.js.map +1 -0
- package/dist/tools/{select-platform.js → session/select-platform.js} +3 -3
- package/dist/tools/session/select-platform.js.map +1 -0
- package/dist/tools/test-generation/generate-tests.js.map +1 -0
- package/dist/tools/{locators.js → test-generation/locators.js} +2 -2
- package/dist/tools/test-generation/locators.js.map +1 -0
- package/package.json +2 -1
- package/server.json +17 -0
- package/src/devicemanager/adb-manager.ts +1 -1
- package/src/devicemanager/ios-manager.ts +1 -1
- package/src/index.ts +1 -1
- package/src/locators/generate-all-locators.ts +1 -1
- package/src/locators/locator-generation.ts +1 -1
- package/src/resources/index.ts +1 -1
- package/src/server.ts +2 -2
- package/src/{tools/session-store.ts → session-store.ts} +1 -1
- package/src/tools/README.md +34 -29
- package/src/tools/{interactions → app-management}/activate-app.ts +1 -1
- package/src/tools/{interactions → app-management}/install-app.ts +1 -1
- package/src/tools/{interactions → app-management}/list-apps.ts +1 -1
- package/src/tools/{interactions → app-management}/terminate-app.ts +1 -1
- package/src/tools/{interactions → app-management}/uninstall-app.ts +1 -1
- package/src/tools/{answer-appium.ts → documentation/answer-appium.ts} +2 -5
- package/src/tools/documentation/index.ts +1 -1
- package/src/tools/documentation/reasoning-rag.ts +1 -1
- package/src/tools/documentation/sentence-transformers-embeddings.ts +1 -1
- package/src/tools/documentation/simple-pdf-indexer.ts +1 -1
- package/src/tools/index.ts +39 -27
- package/src/tools/interactions/click.ts +1 -1
- package/src/tools/interactions/double-tap.ts +1 -1
- package/src/tools/interactions/find.ts +1 -1
- package/src/tools/interactions/get-page-source.ts +1 -1
- package/src/tools/interactions/get-text.ts +1 -1
- package/src/tools/interactions/screenshot.ts +1 -1
- package/src/tools/interactions/set-value.ts +1 -1
- package/src/tools/{boot-simulator.ts → ios/boot-simulator.ts} +2 -2
- package/src/tools/{install-wda.ts → ios/install-wda.ts} +1 -2
- package/src/tools/{setup-wda.ts → ios/setup-wda.ts} +1 -1
- package/src/tools/{scroll-to-element.ts → navigations/scroll-to-element.ts} +1 -1
- package/src/tools/{scroll.ts → navigations/scroll.ts} +2 -2
- package/src/tools/{create-session.ts → session/create-session.ts} +5 -4
- package/src/tools/{delete-session.ts → session/delete-session.ts} +2 -2
- package/src/tools/{select-device.ts → session/select-device.ts} +3 -3
- package/src/tools/{select-platform.ts → session/select-platform.ts} +3 -3
- package/src/tools/{locators.ts → test-generation/locators.ts} +3 -3
- package/dist/locators/logger.js.map +0 -1
- package/dist/tools/answer-appium.js.map +0 -1
- package/dist/tools/boot-simulator.js.map +0 -1
- package/dist/tools/create-session.js.map +0 -1
- package/dist/tools/delete-session.js.map +0 -1
- package/dist/tools/generate-tests.js.map +0 -1
- package/dist/tools/install-wda.js.map +0 -1
- package/dist/tools/interactions/activate-app.js.map +0 -1
- package/dist/tools/interactions/install-app.js.map +0 -1
- package/dist/tools/interactions/list-apps.js.map +0 -1
- package/dist/tools/interactions/terminate-app.js.map +0 -1
- package/dist/tools/interactions/uninstall-app.js.map +0 -1
- package/dist/tools/locators.js.map +0 -1
- package/dist/tools/scroll-to-element.js.map +0 -1
- package/dist/tools/scroll.js.map +0 -1
- package/dist/tools/select-device.js.map +0 -1
- package/dist/tools/select-platform.js.map +0 -1
- package/dist/tools/session-store.js.map +0 -1
- package/dist/tools/setup-wda.js.map +0 -1
- /package/dist/{locators/logger.d.ts → logger.d.ts} +0 -0
- /package/dist/{locators/logger.js → logger.js} +0 -0
- /package/dist/{tools/session-store.d.ts → session-store.d.ts} +0 -0
- /package/dist/tools/{interactions → app-management}/activate-app.d.ts +0 -0
- /package/dist/tools/{interactions → app-management}/install-app.d.ts +0 -0
- /package/dist/tools/{interactions → app-management}/list-apps.d.ts +0 -0
- /package/dist/tools/{interactions → app-management}/terminate-app.d.ts +0 -0
- /package/dist/tools/{interactions → app-management}/uninstall-app.d.ts +0 -0
- /package/dist/tools/{answer-appium.d.ts → documentation/answer-appium.d.ts} +0 -0
- /package/dist/tools/{boot-simulator.d.ts → ios/boot-simulator.d.ts} +0 -0
- /package/dist/tools/{install-wda.d.ts → ios/install-wda.d.ts} +0 -0
- /package/dist/tools/{setup-wda.d.ts → ios/setup-wda.d.ts} +0 -0
- /package/dist/tools/{scroll-to-element.d.ts → navigations/scroll-to-element.d.ts} +0 -0
- /package/dist/tools/{scroll.d.ts → navigations/scroll.d.ts} +0 -0
- /package/dist/tools/{create-session.d.ts → session/create-session.d.ts} +0 -0
- /package/dist/tools/{delete-session.d.ts → session/delete-session.d.ts} +0 -0
- /package/dist/tools/{select-device.d.ts → session/select-device.d.ts} +0 -0
- /package/dist/tools/{select-platform.d.ts → session/select-platform.d.ts} +0 -0
- /package/dist/tools/{generate-tests.d.ts → test-generation/generate-tests.d.ts} +0 -0
- /package/dist/tools/{generate-tests.js → test-generation/generate-tests.js} +0 -0
- /package/dist/tools/{locators.d.ts → test-generation/locators.d.ts} +0 -0
- /package/src/{locators/logger.ts → logger.ts} +0 -0
- /package/src/tools/{generate-tests.ts → test-generation/generate-tests.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-device.js","sourceRoot":"","sources":["../../../src/tools/session/select-device.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tool to select mobile platform before creating a session
|
|
3
3
|
*/
|
|
4
|
-
import { ADBManager } from '
|
|
5
|
-
import { IOSManager } from '
|
|
4
|
+
import { ADBManager } from '../../devicemanager/adb-manager.js';
|
|
5
|
+
import { IOSManager } from '../../devicemanager/ios-manager.js';
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
-
import log from '
|
|
7
|
+
import log from '../../logger.js';
|
|
8
8
|
/**
|
|
9
9
|
* Get and validate Android devices
|
|
10
10
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-platform.js","sourceRoot":"","sources":["../../../src/tools/session/select-platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-tests.js","sourceRoot":"","sources":["../../../src/tools/test-generation/generate-tests.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,MAAe;IAClD,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAC7D,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,MAA2B,EAAE,EAAE,CACnD;QACE,iBAAiB;QACjB,qCAAqC;QACrC,2EAA2E;QAC3E,6FAA6F;QAC7F,0HAA0H;QAC1H,wDAAwD;QACxD,2DAA2D;QAC3D,2GAA2G;QAC3G,wEAAwE;QACxE,oHAAoH;QACpH,mFAAmF;QACnF,mDAAmD;QACnD,+EAA+E;QAC/E,kGAAkG;QAClG,QAAQ;QACR,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;KAChE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEf,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,uCAAuC;QACpD,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,OAAY,EAAgB,EAAE;YACvD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,YAAY,CAAC;4BACjB,KAAK,EAAE,IAAI,CAAC,KAAK;yBAClB,CAAC;qBACH;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* For detailed documentation on adding tools, see docs/CONTRIBUTING.md
|
|
11
11
|
*/
|
|
12
12
|
import { z } from 'zod';
|
|
13
|
-
import { getDriver } from '
|
|
14
|
-
import { generateAllElementLocators } from '
|
|
13
|
+
import { getDriver } from '../../session-store.js';
|
|
14
|
+
import { generateAllElementLocators } from '../../locators/generate-all-locators.js';
|
|
15
15
|
export default function generateLocators(server) {
|
|
16
16
|
server.addTool({
|
|
17
17
|
name: 'generate_locators',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locators.js","sourceRoot":"","sources":["../../../src/tools/test-generation/locators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAGrF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,MAAW;IAClD,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,yCAAyC;QACtD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE,GAAG,EAAO,EAAgB,EAAE;YACvD,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAChC,IAAI,CAAC;gBACH,kCAAkC;gBAElC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC;oBACH,sCAAsC;oBACtC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;oBAChD,MAAM,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;oBACpE,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAClD,CAAC;oBACD,MAAM,SAAS,GAAG,UAAU,CAAC;oBAC7B,MAAM,WAAW,GAAG,0BAA0B,CAC5C,SAAS,EACT,IAAI,EACJ,UAAU,CACX,CAAC;oBACF,MAAM,oBAAoB,GAAG,0BAA0B,CACrD,SAAS,EACT,IAAI,EACJ,UAAU,EACV;wBACE,aAAa,EAAE,IAAI;qBACpB,CACF,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oCACnB,oBAAoB;oCACpB,OAAO,EAAE,oCAAoC;oCAC7C,WAAW,EAAE;4FAC6D;iCAC3E,CAAC;6BACH;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACzB,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
package/server.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
|
|
3
|
+
"name": "io.github.appium/appium-mcp",
|
|
4
|
+
"title": "MCP Appium - Mobile Development and Automation Server",
|
|
5
|
+
"description": "Intelligent MCP server providing AI assistants with powerful tools and resources for Appium mobile automation. Supports iOS, Android, Simulator, Emulator, and Real Devices with intelligent locator generation, automated test creation, and comprehensive mobile testing capabilities.",
|
|
6
|
+
"version": "1.1.11",
|
|
7
|
+
"packages": [
|
|
8
|
+
{
|
|
9
|
+
"registryType": "npm",
|
|
10
|
+
"identifier": "appium-mcp",
|
|
11
|
+
"version": "1.1.11",
|
|
12
|
+
"transport": {
|
|
13
|
+
"type": "stdio"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { getSuggestedLocators } from './locator-generation.js';
|
|
|
5
5
|
import { xmlToJSON, JSONElement } from './source-parsing.js';
|
|
6
6
|
import { shouldIncludeElement, FilterOptions } from './element-filter.js';
|
|
7
7
|
import * as fs from 'fs';
|
|
8
|
-
import log from '
|
|
8
|
+
import log from '../logger.js';
|
|
9
9
|
|
|
10
10
|
export interface ElementWithLocators {
|
|
11
11
|
tagName: string;
|
package/src/resources/index.ts
CHANGED
package/src/server.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp';
|
|
2
2
|
import registerTools from './tools/index.js';
|
|
3
3
|
import registerResources from './resources/index.js';
|
|
4
|
-
import { hasActiveSession, safeDeleteSession } from './
|
|
5
|
-
import log from './
|
|
4
|
+
import { hasActiveSession, safeDeleteSession } from './session-store.js';
|
|
5
|
+
import log from './logger.js';
|
|
6
6
|
|
|
7
7
|
const server = new FastMCP({
|
|
8
8
|
name: 'MCP Appium',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AndroidUiautomator2Driver } from 'appium-uiautomator2-driver';
|
|
2
2
|
import { XCUITestDriver } from 'appium-xcuitest-driver';
|
|
3
|
-
import log from '
|
|
3
|
+
import log from './logger.js';
|
|
4
4
|
|
|
5
5
|
let driver: any = null;
|
|
6
6
|
let sessionId: string | null = null;
|
package/src/tools/README.md
CHANGED
|
@@ -4,45 +4,50 @@ This directory contains all MCP tools available in MCP Appium.
|
|
|
4
4
|
|
|
5
5
|
## Tool Categories
|
|
6
6
|
|
|
7
|
-
### Session Management
|
|
7
|
+
### Session Management (`session/`)
|
|
8
8
|
|
|
9
9
|
- `create-session.ts` - Create mobile automation sessions
|
|
10
10
|
- `delete-session.ts` - Clean up sessions
|
|
11
11
|
- `select-platform.ts` - Choose Android or iOS
|
|
12
12
|
- `select-device.ts` - Choose specific device
|
|
13
13
|
|
|
14
|
-
### iOS Setup
|
|
14
|
+
### iOS Setup (`ios/`)
|
|
15
15
|
|
|
16
16
|
- `boot-simulator.ts` - Boot iOS simulators
|
|
17
17
|
- `setup-wda.ts` - Setup WebDriverAgent
|
|
18
18
|
- `install-wda.ts` - Install WebDriverAgent
|
|
19
19
|
|
|
20
|
-
###
|
|
21
|
-
|
|
22
|
-
- `interactions/` - Direct appium interactions
|
|
23
|
-
- `find.ts` - Find elements
|
|
24
|
-
- `click.ts` - Click elements
|
|
25
|
-
- `double-tap.ts` - Double tap elements
|
|
26
|
-
- `set-value.ts` - Enter text
|
|
27
|
-
- `get-text.ts` - Get element text
|
|
28
|
-
- `get-page-source.ts` - Get page source (XML) from current screen
|
|
29
|
-
- `screenshot.ts` - Capture screenshots
|
|
30
|
-
- `activate-app.ts` - Activate apps
|
|
31
|
-
- `terminate-app.ts` - Terminate apps
|
|
32
|
-
- `install-app.ts` - Install apps
|
|
33
|
-
- `uninstall-app.ts` - Uninstall apps
|
|
34
|
-
- `list-apps.ts` - List installed apps
|
|
35
|
-
|
|
36
|
-
### Navigation
|
|
20
|
+
### Navigation (`navigations/`)
|
|
37
21
|
|
|
38
22
|
- `scroll.ts` - Scroll screens
|
|
39
23
|
- `scroll-to-element.ts` - Scroll until element found
|
|
40
24
|
|
|
41
|
-
###
|
|
25
|
+
### Element Interactions (`interactions/`)
|
|
26
|
+
|
|
27
|
+
- `find.ts` - Find elements
|
|
28
|
+
- `click.ts` - Click elements
|
|
29
|
+
- `double-tap.ts` - Double tap elements
|
|
30
|
+
- `set-value.ts` - Enter text
|
|
31
|
+
- `get-text.ts` - Get element text
|
|
32
|
+
- `get-page-source.ts` - Get page source (XML) from current screen
|
|
33
|
+
- `screenshot.ts` - Capture screenshots
|
|
34
|
+
|
|
35
|
+
### App Management (`app-management/`)
|
|
42
36
|
|
|
43
|
-
- `
|
|
37
|
+
- `activate-app.ts` - Activate apps
|
|
38
|
+
- `terminate-app.ts` - Terminate apps
|
|
39
|
+
- `install-app.ts` - Install apps
|
|
40
|
+
- `uninstall-app.ts` - Uninstall apps
|
|
41
|
+
- `list-apps.ts` - List installed apps
|
|
42
|
+
|
|
43
|
+
### Test Generation (`test-generation/`)
|
|
44
|
+
|
|
45
|
+
- `locators.ts` - Generate page locators
|
|
44
46
|
- `generate-tests.ts` - Generate test code from scenarios
|
|
45
|
-
|
|
47
|
+
|
|
48
|
+
### Documentation (`documentation/`)
|
|
49
|
+
|
|
50
|
+
- `answer-appium.ts` - Answer Appium questions using RAG
|
|
46
51
|
|
|
47
52
|
## Adding a New Tool
|
|
48
53
|
|
|
@@ -50,9 +55,9 @@ See [docs/CONTRIBUTING.md](../../docs/CONTRIBUTING.md) for detailed instructions
|
|
|
50
55
|
|
|
51
56
|
Quick steps:
|
|
52
57
|
|
|
53
|
-
1. Create a new file in
|
|
58
|
+
1. Create a new file in the appropriate subdirectory (e.g., `interactions/my-tool.ts`)
|
|
54
59
|
2. Define the tool following the template
|
|
55
|
-
3.
|
|
60
|
+
3. Import and register it in `index.ts`
|
|
56
61
|
4. Test with `npm run build && npm start`
|
|
57
62
|
|
|
58
63
|
### Tool Template
|
|
@@ -60,7 +65,7 @@ Quick steps:
|
|
|
60
65
|
```typescript
|
|
61
66
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
62
67
|
import { z } from 'zod';
|
|
63
|
-
import { getDriver } from '
|
|
68
|
+
import { getDriver } from '../../session-store.js';
|
|
64
69
|
|
|
65
70
|
export default function myTool(server: FastMCP): void {
|
|
66
71
|
server.addTool({
|
|
@@ -99,7 +104,7 @@ export default function myTool(server: FastMCP): void {
|
|
|
99
104
|
Add to `src/tools/index.ts`:
|
|
100
105
|
|
|
101
106
|
```typescript
|
|
102
|
-
import myTool from './my-tool.js';
|
|
107
|
+
import myTool from './interactions/my-tool.js';
|
|
103
108
|
|
|
104
109
|
export default function registerTools(server: FastMCP): void {
|
|
105
110
|
// ... existing tools ...
|
|
@@ -113,7 +118,7 @@ export default function registerTools(server: FastMCP): void {
|
|
|
113
118
|
1. **Always check for active session**: Use `getDriver()` and check for null
|
|
114
119
|
2. **Provide helpful errors**: Give clear error messages
|
|
115
120
|
3. **Use proper types**: Leverage TypeScript and Zod for type safety
|
|
116
|
-
4. **Add logging**: Use the logger from
|
|
121
|
+
4. **Add logging**: Use the logger from `logger.js` for debugging. Import with: `import log from 'logger.js'`. Use `log.info()`, `log.error()`, `log.warn()` instead of `console.log/error/warn` to maintain JSON-RPC compatibility
|
|
117
122
|
5. **Handle errors**: Always wrap risky operations in try-catch
|
|
118
123
|
6. **Return proper format**: Always return content in expected MCP format
|
|
119
124
|
|
|
@@ -126,7 +131,7 @@ import {
|
|
|
126
131
|
getDriver,
|
|
127
132
|
hasActiveSession,
|
|
128
133
|
safeDeleteSession,
|
|
129
|
-
} from '
|
|
134
|
+
} from '../../session-store.js';
|
|
130
135
|
|
|
131
136
|
// Check if session exists
|
|
132
137
|
if (!hasActiveSession()) {
|
|
@@ -145,7 +150,7 @@ await driver.someMethod();
|
|
|
145
150
|
### Platform-Specific Logic
|
|
146
151
|
|
|
147
152
|
```typescript
|
|
148
|
-
import { getPlatformName } from '
|
|
153
|
+
import { getPlatformName } from '../../session-store.js';
|
|
149
154
|
|
|
150
155
|
if (getPlatformName(driver) === 'Android') {
|
|
151
156
|
// Android implementation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { getDriver, getPlatformName } from '
|
|
3
|
+
import { getDriver, getPlatformName } from '../../session-store.js';
|
|
4
4
|
|
|
5
5
|
export default function installApp(server: FastMCP): void {
|
|
6
6
|
const schema = z.object({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { getDriver, getPlatformName } from '
|
|
3
|
+
import { getDriver, getPlatformName } from '../../session-store.js';
|
|
4
4
|
|
|
5
5
|
async function listAppsFromDevice(): Promise<any[]> {
|
|
6
6
|
const driver = await getDriver();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { getDriver, getPlatformName } from '
|
|
3
|
+
import { getDriver, getPlatformName } from '../../session-store.js';
|
|
4
4
|
|
|
5
5
|
export default function terminateApp(server: FastMCP): void {
|
|
6
6
|
const schema = z.object({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { getDriver, getPlatformName } from '
|
|
3
|
+
import { getDriver, getPlatformName } from '../../session-store.js';
|
|
4
4
|
|
|
5
5
|
export default function uninstallApp(server: FastMCP): void {
|
|
6
6
|
const schema = z.object({
|
|
@@ -2,11 +2,8 @@
|
|
|
2
2
|
* Tool to select mobile platform before creating a session
|
|
3
3
|
*/
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
initializeAppiumDocumentation,
|
|
8
|
-
} from './documentation/index.js';
|
|
9
|
-
import log from '../locators/logger.js';
|
|
5
|
+
import { answerAppiumQuery, initializeAppiumDocumentation } from './index.js';
|
|
6
|
+
import log from '../../logger.js';
|
|
10
7
|
|
|
11
8
|
export default function answerAppium(server: any): void {
|
|
12
9
|
server.addTool({
|
|
@@ -16,7 +16,7 @@ import { fileURLToPath } from 'url';
|
|
|
16
16
|
|
|
17
17
|
// Initialize embeddings using sentence-transformers (no API key required)
|
|
18
18
|
import { SentenceTransformersEmbeddings } from './sentence-transformers-embeddings.js';
|
|
19
|
-
import log from '../../
|
|
19
|
+
import log from '../../logger.js';
|
|
20
20
|
|
|
21
21
|
let embeddings: SentenceTransformersEmbeddings | null = null;
|
|
22
22
|
|
package/src/tools/index.ts
CHANGED
|
@@ -13,19 +13,19 @@
|
|
|
13
13
|
* See src/tools/metadata/README.md for YAML metadata approach.
|
|
14
14
|
*/
|
|
15
15
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
16
|
-
import log from '../
|
|
17
|
-
import answerAppium from './answer-appium.js';
|
|
18
|
-
import createSession from './create-session.js';
|
|
19
|
-
import deleteSession from './delete-session.js';
|
|
20
|
-
import generateLocators from './locators.js';
|
|
21
|
-
import selectPlatform from './select-platform.js';
|
|
22
|
-
import selectDevice from './select-device.js';
|
|
23
|
-
import bootSimulator from './boot-simulator.js';
|
|
24
|
-
import setupWDA from './setup-wda.js';
|
|
25
|
-
import installWDA from './install-wda.js';
|
|
26
|
-
import generateTest from './generate-tests.js';
|
|
27
|
-
import scroll from './scroll.js';
|
|
28
|
-
import scrollToElement from './scroll-to-element.js';
|
|
16
|
+
import log from '../logger.js';
|
|
17
|
+
import answerAppium from './documentation/answer-appium.js';
|
|
18
|
+
import createSession from './session/create-session.js';
|
|
19
|
+
import deleteSession from './session/delete-session.js';
|
|
20
|
+
import generateLocators from './test-generation/locators.js';
|
|
21
|
+
import selectPlatform from './session/select-platform.js';
|
|
22
|
+
import selectDevice from './session/select-device.js';
|
|
23
|
+
import bootSimulator from './ios/boot-simulator.js';
|
|
24
|
+
import setupWDA from './ios/setup-wda.js';
|
|
25
|
+
import installWDA from './ios/install-wda.js';
|
|
26
|
+
import generateTest from './test-generation/generate-tests.js';
|
|
27
|
+
import scroll from './navigations/scroll.js';
|
|
28
|
+
import scrollToElement from './navigations/scroll-to-element.js';
|
|
29
29
|
import findElement from './interactions/find.js';
|
|
30
30
|
import clickElement from './interactions/click.js';
|
|
31
31
|
import doubleTap from './interactions/double-tap.js';
|
|
@@ -33,11 +33,11 @@ import setValue from './interactions/set-value.js';
|
|
|
33
33
|
import getText from './interactions/get-text.js';
|
|
34
34
|
import getPageSource from './interactions/get-page-source.js';
|
|
35
35
|
import screenshot from './interactions/screenshot.js';
|
|
36
|
-
import activateApp from './
|
|
37
|
-
import installApp from './
|
|
38
|
-
import uninstallApp from './
|
|
39
|
-
import terminateApp from './
|
|
40
|
-
import listApps from './
|
|
36
|
+
import activateApp from './app-management/activate-app.js';
|
|
37
|
+
import installApp from './app-management/install-app.js';
|
|
38
|
+
import uninstallApp from './app-management/uninstall-app.js';
|
|
39
|
+
import terminateApp from './app-management/terminate-app.js';
|
|
40
|
+
import listApps from './app-management/list-apps.js';
|
|
41
41
|
|
|
42
42
|
export default function registerTools(server: FastMCP): void {
|
|
43
43
|
// Wrap addTool to inject logging around tool execution
|
|
@@ -106,23 +106,22 @@ export default function registerTools(server: FastMCP): void {
|
|
|
106
106
|
});
|
|
107
107
|
};
|
|
108
108
|
|
|
109
|
+
// Session Management
|
|
109
110
|
selectPlatform(server);
|
|
110
111
|
selectDevice(server);
|
|
112
|
+
createSession(server);
|
|
113
|
+
deleteSession(server);
|
|
114
|
+
|
|
115
|
+
// iOS Setup
|
|
111
116
|
bootSimulator(server);
|
|
112
117
|
setupWDA(server);
|
|
113
118
|
installWDA(server);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
generateLocators(server);
|
|
117
|
-
answerAppium(server);
|
|
119
|
+
|
|
120
|
+
// Navigation
|
|
118
121
|
scroll(server);
|
|
119
122
|
scrollToElement(server);
|
|
120
123
|
|
|
121
|
-
|
|
122
|
-
installApp(server);
|
|
123
|
-
uninstallApp(server);
|
|
124
|
-
terminateApp(server);
|
|
125
|
-
listApps(server);
|
|
124
|
+
// Element Interactions
|
|
126
125
|
findElement(server);
|
|
127
126
|
clickElement(server);
|
|
128
127
|
doubleTap(server);
|
|
@@ -130,6 +129,19 @@ export default function registerTools(server: FastMCP): void {
|
|
|
130
129
|
getText(server);
|
|
131
130
|
getPageSource(server);
|
|
132
131
|
screenshot(server);
|
|
132
|
+
|
|
133
|
+
// App Management
|
|
134
|
+
activateApp(server);
|
|
135
|
+
installApp(server);
|
|
136
|
+
uninstallApp(server);
|
|
137
|
+
terminateApp(server);
|
|
138
|
+
listApps(server);
|
|
139
|
+
|
|
140
|
+
// Test Generation
|
|
141
|
+
generateLocators(server);
|
|
133
142
|
generateTest(server);
|
|
143
|
+
|
|
144
|
+
// Documentation
|
|
145
|
+
answerAppium(server);
|
|
134
146
|
log.info('All tools registered');
|
|
135
147
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { getDriver } from '
|
|
3
|
+
import { getDriver } from '../../session-store.js';
|
|
4
4
|
import { elementUUIDScheme } from '../../schema.js';
|
|
5
5
|
|
|
6
6
|
export default function generateTest(server: FastMCP): void {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { getDriver, getPlatformName } from '
|
|
3
|
+
import { getDriver, getPlatformName } from '../../session-store.js';
|
|
4
4
|
import { elementUUIDScheme } from '../../schema.js';
|
|
5
5
|
|
|
6
6
|
export default function doubleTap(server: FastMCP): void {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { getDriver } from '
|
|
3
|
+
import { getDriver } from '../../session-store.js';
|
|
4
4
|
|
|
5
5
|
export default function getPageSource(server: FastMCP): void {
|
|
6
6
|
server.addTool({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { getDriver } from '
|
|
3
|
+
import { getDriver } from '../../session-store.js';
|
|
4
4
|
import { elementUUIDScheme } from '../../schema.js';
|
|
5
5
|
|
|
6
6
|
export default function getText(server: FastMCP): void {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastMCP } from 'fastmcp/dist/FastMCP.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { getDriver } from '
|
|
3
|
+
import { getDriver } from '../../session-store.js';
|
|
4
4
|
import { elementUUIDScheme } from '../../schema.js';
|
|
5
5
|
|
|
6
6
|
export default function setValue(server: FastMCP): void {
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { Simctl } from 'node-simctl';
|
|
6
|
-
import { IOSManager } from '
|
|
7
|
-
import log from '
|
|
6
|
+
import { IOSManager } from '../../devicemanager/ios-manager.js';
|
|
7
|
+
import log from '../../logger.js';
|
|
8
8
|
|
|
9
9
|
export default function bootSimulator(server: any): void {
|
|
10
10
|
server.addTool({
|
|
@@ -7,9 +7,8 @@ import { promisify } from 'util';
|
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import { access, readdir, stat } from 'fs/promises';
|
|
9
9
|
import { constants } from 'fs';
|
|
10
|
-
import fs from 'fs'; // Keep for createWriteStream if used
|
|
11
10
|
import os from 'os';
|
|
12
|
-
import log from '
|
|
11
|
+
import log from '../../logger.js';
|
|
13
12
|
|
|
14
13
|
const execAsync = promisify(exec);
|
|
15
14
|
|
|
@@ -11,7 +11,7 @@ import { createWriteStream } from 'fs';
|
|
|
11
11
|
import { pipeline } from 'stream/promises';
|
|
12
12
|
import os from 'os';
|
|
13
13
|
import axios from 'axios';
|
|
14
|
-
import log from '
|
|
14
|
+
import log from '../../logger.js';
|
|
15
15
|
|
|
16
16
|
const execAsync = promisify(exec);
|
|
17
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { getDriver, getPlatformName } from '
|
|
3
|
-
import log from '
|
|
2
|
+
import { getDriver, getPlatformName } from '../../session-store.js';
|
|
3
|
+
import log from '../../logger.js';
|
|
4
4
|
|
|
5
5
|
export default function scroll(server: any): void {
|
|
6
6
|
server.addTool({
|