appium-mcp 1.92.8 → 1.92.9
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 +6 -0
- package/README.md +7 -1
- package/dist/utils/wdio-logging.d.ts +1 -4
- package/dist/utils/wdio-logging.d.ts.map +1 -1
- package/dist/utils/wdio-logging.js +8 -1
- package/dist/utils/wdio-logging.js.map +1 -1
- package/dist/utils/webdriver-client-options.d.ts +6 -3
- package/dist/utils/webdriver-client-options.d.ts.map +1 -1
- package/dist/utils/webdriver-client-options.js +5 -0
- package/dist/utils/webdriver-client-options.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/utils/wdio-logging.ts +11 -3
- package/src/utils/webdriver-client-options.ts +14 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [1.92.9](https://github.com/appium/appium-mcp/compare/v1.92.8...v1.92.9) (2026-08-28)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* followup for [#493](https://github.com/appium/appium-mcp/issues/493) ([#496](https://github.com/appium/appium-mcp/issues/496)) ([75aa0e1](https://github.com/appium/appium-mcp/commit/75aa0e1f987ef99503e3587978bd1be8aca0e7f6))
|
|
6
|
+
|
|
1
7
|
## [1.92.8](https://github.com/appium/appium-mcp/compare/v1.92.7...v1.92.8) (2026-08-28)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -538,7 +538,13 @@ const server = await createAppiumMcpServer({
|
|
|
538
538
|
await server.start({ transportType: 'stdio' });
|
|
539
539
|
```
|
|
540
540
|
|
|
541
|
-
|
|
541
|
+
### Stdio logging
|
|
542
|
+
|
|
543
|
+
`start({ transportType: 'stdio' })` automatically configures Appium and WebDriver logging before the stdio transport starts, keeping stdout reserved for JSON-RPC. You normally do not need to configure logging separately.
|
|
544
|
+
|
|
545
|
+
In stdio mode, `WDIO_LOG_LEVEL` values that would write verbose output to stdout (`trace`, `debug`, and `info`) are clamped to `warn`. Quieter `error` and `silent` values are preserved. This behavior only applies to stdio; `httpStream` logging is unchanged.
|
|
546
|
+
|
|
547
|
+
For advanced integrations that need to configure logging explicitly, `configureStdioTransportLogging()` is exported from `appium-mcp/core`. Call it before starting stdio work; calling `server.start({ transportType: 'stdio' })` already invokes it automatically.
|
|
542
548
|
|
|
543
549
|
Plugin lifecycle:
|
|
544
550
|
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import wdioLogger from '@wdio/logger';
|
|
2
|
-
type WdioLogLevel = NonNullable<Parameters<typeof wdioLogger.setLogLevelsConfig>[1]>;
|
|
3
1
|
/** Quiet every WDIO logger that was created before stdio config ran. */
|
|
4
|
-
export declare function quietExistingWdioLoggers(
|
|
5
|
-
export {};
|
|
2
|
+
export declare function quietExistingWdioLoggers(): void;
|
|
6
3
|
//# sourceMappingURL=wdio-logging.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wdio-logging.d.ts","sourceRoot":"","sources":["../../src/utils/wdio-logging.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wdio-logging.d.ts","sourceRoot":"","sources":["../../src/utils/wdio-logging.ts"],"names":[],"mappings":"AAcA,wEAAwE;AACxE,wBAAgB,wBAAwB,IAAI,IAAI,CAI/C"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import wdioLogger from '@wdio/logger';
|
|
2
2
|
import { QUIET_WEBDRIVER_LOG_LEVEL } from './webdriver-client-options.js';
|
|
3
|
+
const STDIO_SAFE_WDIO_LEVELS = new Set(['warn', 'error', 'silent']);
|
|
4
|
+
function getStdioWdioLogLevel() {
|
|
5
|
+
const configuredLevel = process.env.WDIO_LOG_LEVEL?.trim().toLowerCase();
|
|
6
|
+
return configuredLevel && STDIO_SAFE_WDIO_LEVELS.has(configuredLevel) ? configuredLevel : QUIET_WEBDRIVER_LOG_LEVEL;
|
|
7
|
+
}
|
|
3
8
|
/** Quiet every WDIO logger that was created before stdio config ran. */
|
|
4
|
-
export function quietExistingWdioLoggers(
|
|
9
|
+
export function quietExistingWdioLoggers() {
|
|
10
|
+
const level = getStdioWdioLogLevel();
|
|
11
|
+
process.env.WDIO_LOG_LEVEL = level;
|
|
5
12
|
wdioLogger.setLogLevelsConfig({}, level);
|
|
6
13
|
}
|
|
7
14
|
//# sourceMappingURL=wdio-logging.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wdio-logging.js","sourceRoot":"","sources":["../../src/utils/wdio-logging.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAC,yBAAyB,EAAC,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"wdio-logging.js","sourceRoot":"","sources":["../../src/utils/wdio-logging.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAC,yBAAyB,EAAC,MAAM,+BAA+B,CAAC;AAKxE,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvF,SAAS,oBAAoB;IAC3B,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,WAAW,EAAmC,CAAC;IAC1G,OAAO,eAAe,IAAI,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC;AACtH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,wBAAwB;IACtC,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC;IACnC,UAAU,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export declare const QUIET_WEBDRIVER_LOG_LEVEL: "warn";
|
|
2
|
-
|
|
3
|
-
export declare function withQuietWebDriverLogging<T extends Record<string, unknown>>(options: T): T | (T & {
|
|
2
|
+
type QuietWebDriverLogging = {
|
|
4
3
|
logLevel: typeof QUIET_WEBDRIVER_LOG_LEVEL;
|
|
5
|
-
|
|
4
|
+
logLevels: Record<string, typeof QUIET_WEBDRIVER_LOG_LEVEL>;
|
|
5
|
+
};
|
|
6
|
+
/** `logLevel: warn` only after stdio logging is configured. */
|
|
7
|
+
export declare function withQuietWebDriverLogging<T extends Record<string, unknown>>(options: T): T | (T & QuietWebDriverLogging);
|
|
8
|
+
export {};
|
|
6
9
|
//# sourceMappingURL=webdriver-client-options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webdriver-client-options.d.ts","sourceRoot":"","sources":["../../src/utils/webdriver-client-options.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,EAAG,MAAe,CAAC;AAEzD,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzE,OAAO,EAAE,CAAC,GACT,CAAC,GAAG,CAAC,CAAC,GAAG
|
|
1
|
+
{"version":3,"file":"webdriver-client-options.d.ts","sourceRoot":"","sources":["../../src/utils/webdriver-client-options.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,EAAG,MAAe,CAAC;AAEzD,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,OAAO,yBAAyB,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,yBAAyB,CAAC,CAAC;CAC7D,CAAC;AAEF,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzE,OAAO,EAAE,CAAC,GACT,CAAC,GAAG,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAgBjC"}
|
|
@@ -5,9 +5,14 @@ export function withQuietWebDriverLogging(options) {
|
|
|
5
5
|
if (!isStdioTransportLoggingConfigured()) {
|
|
6
6
|
return options;
|
|
7
7
|
}
|
|
8
|
+
const existingLogLevels = typeof options.logLevels === 'object' && options.logLevels !== null ? options.logLevels : {};
|
|
8
9
|
return {
|
|
9
10
|
...options,
|
|
10
11
|
logLevel: QUIET_WEBDRIVER_LOG_LEVEL,
|
|
12
|
+
logLevels: {
|
|
13
|
+
...existingLogLevels,
|
|
14
|
+
webdriver: QUIET_WEBDRIVER_LOG_LEVEL,
|
|
15
|
+
},
|
|
11
16
|
};
|
|
12
17
|
}
|
|
13
18
|
//# sourceMappingURL=webdriver-client-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webdriver-client-options.js","sourceRoot":"","sources":["../../src/utils/webdriver-client-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iCAAiC,EAAC,MAAM,2BAA2B,CAAC;AAE5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"webdriver-client-options.js","sourceRoot":"","sources":["../../src/utils/webdriver-client-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iCAAiC,EAAC,MAAM,2BAA2B,CAAC;AAE5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAe,CAAC;AAOzD,+DAA+D;AAC/D,MAAM,UAAU,yBAAyB,CACvC,OAAU;IAEV,IAAI,CAAC,iCAAiC,EAAE,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,iBAAiB,GACrB,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/F,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,yBAAyB;QACnC,SAAS,EAAE;YACT,GAAG,iBAAiB;YACpB,SAAS,EAAE,yBAAyB;SACrC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-mcp",
|
|
3
|
-
"version": "1.92.
|
|
3
|
+
"version": "1.92.9",
|
|
4
4
|
"description": "Intelligent MCP server providing AI assistants with powerful tools and resources for Appium mobile automation",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/appium/appium-mcp/issues"
|
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.92.
|
|
6
|
+
"version": "1.92.9",
|
|
7
7
|
"packages": [
|
|
8
8
|
{
|
|
9
9
|
"registryType": "npm",
|
|
10
10
|
"identifier": "appium-mcp",
|
|
11
|
-
"version": "1.92.
|
|
11
|
+
"version": "1.92.9",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
}
|
|
@@ -3,10 +3,18 @@ import wdioLogger from '@wdio/logger';
|
|
|
3
3
|
import {QUIET_WEBDRIVER_LOG_LEVEL} from './webdriver-client-options.js';
|
|
4
4
|
|
|
5
5
|
type WdioLogLevel = NonNullable<Parameters<typeof wdioLogger.setLogLevelsConfig>[1]>;
|
|
6
|
+
type StdioWdioLogLevel = Extract<WdioLogLevel, string>;
|
|
7
|
+
|
|
8
|
+
const STDIO_SAFE_WDIO_LEVELS = new Set<StdioWdioLogLevel>(['warn', 'error', 'silent']);
|
|
9
|
+
|
|
10
|
+
function getStdioWdioLogLevel(): StdioWdioLogLevel {
|
|
11
|
+
const configuredLevel = process.env.WDIO_LOG_LEVEL?.trim().toLowerCase() as StdioWdioLogLevel | undefined;
|
|
12
|
+
return configuredLevel && STDIO_SAFE_WDIO_LEVELS.has(configuredLevel) ? configuredLevel : QUIET_WEBDRIVER_LOG_LEVEL;
|
|
13
|
+
}
|
|
6
14
|
|
|
7
15
|
/** Quiet every WDIO logger that was created before stdio config ran. */
|
|
8
|
-
export function quietExistingWdioLoggers(
|
|
9
|
-
level
|
|
10
|
-
|
|
16
|
+
export function quietExistingWdioLoggers(): void {
|
|
17
|
+
const level = getStdioWdioLogLevel();
|
|
18
|
+
process.env.WDIO_LOG_LEVEL = level;
|
|
11
19
|
wdioLogger.setLogLevelsConfig({}, level);
|
|
12
20
|
}
|
|
@@ -2,15 +2,28 @@ import {isStdioTransportLoggingConfigured} from '../stdio-logging-state.js';
|
|
|
2
2
|
|
|
3
3
|
export const QUIET_WEBDRIVER_LOG_LEVEL = 'warn' as const;
|
|
4
4
|
|
|
5
|
+
type QuietWebDriverLogging = {
|
|
6
|
+
logLevel: typeof QUIET_WEBDRIVER_LOG_LEVEL;
|
|
7
|
+
logLevels: Record<string, typeof QUIET_WEBDRIVER_LOG_LEVEL>;
|
|
8
|
+
};
|
|
9
|
+
|
|
5
10
|
/** `logLevel: warn` only after stdio logging is configured. */
|
|
6
11
|
export function withQuietWebDriverLogging<T extends Record<string, unknown>>(
|
|
7
12
|
options: T,
|
|
8
|
-
): T | (T &
|
|
13
|
+
): T | (T & QuietWebDriverLogging) {
|
|
9
14
|
if (!isStdioTransportLoggingConfigured()) {
|
|
10
15
|
return options;
|
|
11
16
|
}
|
|
17
|
+
|
|
18
|
+
const existingLogLevels =
|
|
19
|
+
typeof options.logLevels === 'object' && options.logLevels !== null ? options.logLevels : {};
|
|
20
|
+
|
|
12
21
|
return {
|
|
13
22
|
...options,
|
|
14
23
|
logLevel: QUIET_WEBDRIVER_LOG_LEVEL,
|
|
24
|
+
logLevels: {
|
|
25
|
+
...existingLogLevels,
|
|
26
|
+
webdriver: QUIET_WEBDRIVER_LOG_LEVEL,
|
|
27
|
+
},
|
|
15
28
|
};
|
|
16
29
|
}
|