@mgcrea/mcp-ios-simulator 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { McpServer } from "@modelcontextprotocol/server";
2
2
  import { CommandError, CommandTimeoutError, DisplayInfo, ExecImpl, IosError, IosError as IosError$1, Logger, ScreenHost, ToolchainError, WdaClient, WdaError, WdaUnavailableError } from "@mgcrea/mcp-ios-core";
3
3
  import { z } from "zod";
4
- //#region src/client/logs.d.ts
5
4
  /**
6
5
  * The log captures this server has started, newest per simulator and app.
7
6
  *
@@ -49,8 +48,6 @@ declare class LaunchCaptures {
49
48
  */
50
49
  running(capture: Capture): boolean;
51
50
  }
52
- //#endregion
53
- //#region src/client/simctl.d.ts
54
51
  /**
55
52
  * `xcrun simctl` — Apple's own simulator tool, and the half of this server that
56
53
  * needs nothing installed and nothing signed.
@@ -122,7 +119,7 @@ type RawSimApp = {
122
119
  * Without this the message a caller sees is the first line, which names a
123
120
  * numeric code and says nothing about what to do.
124
121
  */
125
- declare const parseSimctlError: (stderr: string) => {
122
+ export declare const parseSimctlError: (stderr: string) => {
126
123
  domain?: string;
127
124
  code?: number;
128
125
  message: string;
@@ -136,12 +133,18 @@ declare const parseSimctlError: (stderr: string) => {
136
133
  * forward, so it is refused here as well as in the resolver — the resolver is
137
134
  * where it should be caught, and this is where it cannot be missed.
138
135
  */
139
- declare const assertNotBulkTarget: (udid: string) => void;
140
- declare class Simctl {
136
+ export declare const assertNotBulkTarget: (udid: string) => void;
137
+ export declare class Simctl {
141
138
  private readonly opts;
142
139
  private readonly exec;
143
140
  /** Device types change only when Xcode is updated; re-reading is pure cost. */
144
141
  private deviceTypes;
142
+ /**
143
+ * Read once, like device types: both change only when Xcode or a runtime is
144
+ * installed, and every tool call resolves a simulator. The cost is that a
145
+ * runtime added or deleted while this server runs is seen after a restart.
146
+ */
147
+ private runtimes;
145
148
  constructor(opts: SimctlOptions);
146
149
  /** Raw stdout, for the subcommands that answer in prose. */
147
150
  private run;
@@ -165,6 +168,13 @@ declare class Simctl {
165
168
  listRuntimes(): Promise<RawRuntime[]>;
166
169
  listDeviceTypes(): Promise<RawDeviceType[]>;
167
170
  boot(udid: string): Promise<void>;
171
+ /**
172
+ * Wait until a booting simulator has finished, or `timeoutMs` passes (a
173
+ * `CommandTimeoutError`). Not the state in `list`: measured on an iOS 27.0
174
+ * runtime, that reads "Booted" 0.4s after `boot` returns, while this returns
175
+ * 17s later, once the system is up.
176
+ */
177
+ bootstatus(udid: string, timeoutMs: number): Promise<void>;
168
178
  shutdown(udid: string): Promise<void>;
169
179
  erase(udid: string): Promise<void>;
170
180
  /**
@@ -261,8 +271,6 @@ declare class Simctl {
261
271
  */
262
272
  push(udid: string, bundleId: string, payload: unknown): Promise<void>;
263
273
  }
264
- //#endregion
265
- //#region src/client/shape.d.ts
266
274
  type SimulatorSummary = {
267
275
  /**
268
276
  * The UDID. Called `id` because that is the name the shared `ScreenHost`
@@ -301,7 +309,7 @@ type SimulatorSummary = {
301
309
  * primary key: it is joined against `list runtimes` for a display name, 0..n
302
310
  * matches tolerated, and carried through verbatim besides.
303
311
  */
304
- declare const summarizeDevices: (devices: Record<string, RawSim[]>, runtimes: RawRuntime[], deviceTypes: RawDeviceType[]) => SimulatorSummary[];
312
+ export declare const summarizeDevices: (devices: Record<string, RawSim[]>, runtimes: RawRuntime[], deviceTypes: RawDeviceType[]) => SimulatorSummary[];
305
313
  type SimAppSummary = {
306
314
  bundleId: string;
307
315
  name: string | undefined;
@@ -316,13 +324,11 @@ type SimAppSummary = {
316
324
  bundlePath: string | undefined;
317
325
  dataContainer: string | undefined;
318
326
  };
319
- declare const summarizeApps: (apps: Record<string, RawSimApp>, opts?: {
327
+ export declare const summarizeApps: (apps: Record<string, RawSimApp>, opts?: {
320
328
  includeAll?: boolean;
321
329
  }) => SimAppSummary[];
322
330
  /** The public shape of one row of `ios_simulator_list`. */
323
- declare const toListRow: (sim: SimulatorSummary) => Record<string, unknown>;
324
- //#endregion
325
- //#region src/client/simulator.d.ts
331
+ export declare const toListRow: (sim: SimulatorSummary) => Record<string, unknown>;
326
332
  type SimulatorClientOptions = {
327
333
  xcrunPath: string;
328
334
  sipsPath: string;
@@ -343,7 +349,7 @@ type SimulatorClientOptions = {
343
349
  processAlive?: ProcessAlive | undefined;
344
350
  logger?: Logger | undefined;
345
351
  };
346
- declare class SimulatorClient implements ScreenHost<SimulatorSummary> {
352
+ export declare class SimulatorClient implements ScreenHost<SimulatorSummary> {
347
353
  readonly simctl: Simctl;
348
354
  readonly exec: ExecImpl;
349
355
  readonly sipsPath: string;
@@ -360,6 +366,11 @@ declare class SimulatorClient implements ScreenHost<SimulatorSummary> {
360
366
  listSimulators(opts?: {
361
367
  fresh?: boolean;
362
368
  }): Promise<SimulatorSummary[]>;
369
+ /**
370
+ * Drop the cached list. Called after a tool changes a simulator's state, so
371
+ * the next call within the cache window does not act on the state before it.
372
+ */
373
+ forgetSimulators(): void;
363
374
  /**
364
375
  * Resolve a hint to exactly one simulator, or refuse.
365
376
  *
@@ -429,11 +440,11 @@ declare class SimulatorClient implements ScreenHost<SimulatorSummary> {
429
440
  * reports which simulator actually owns the port.
430
441
  */
431
442
  wdaUrl(): string;
443
+ /** The simulator `resolveTarget` falls back to when no hint is given. */
444
+ get defaultSimulatorId(): string | undefined;
432
445
  get wdaPort(): number;
433
446
  wda(_target: SimulatorSummary): WdaClient;
434
447
  }
435
- //#endregion
436
- //#region src/config.d.ts
437
448
  /**
438
449
  * There are no credentials here, and unlike the device server there is barely
439
450
  * any setup either. Two lanes reach a simulator and both are local:
@@ -462,25 +473,21 @@ declare const ConfigSchema: z.ZodObject<{
462
473
  openPath: z.ZodDefault<z.ZodString>;
463
474
  }, z.core.$strict>;
464
475
  type Config = z.infer<typeof ConfigSchema>;
465
- declare const defaultConfigPath: (env?: NodeJS.ProcessEnv) => string;
476
+ export declare const defaultConfigPath: (env?: NodeJS.ProcessEnv) => string;
466
477
  /**
467
478
  * Environment first, config file second, **per field** — not whole-source.
468
479
  * A one-off `IOS_SIMULATOR_ALLOW_WRITES=0` has to beat a file that says `true`,
469
480
  * while a file that sets `simulatorId` keeps working when the environment says
470
481
  * nothing about it. Merging field by field is the only rule that gives both.
471
482
  */
472
- declare const loadConfig: (env?: NodeJS.ProcessEnv, configPath?: string) => Config;
473
- //#endregion
474
- //#region src/tools/runner.d.ts
483
+ export declare const loadConfig: (env?: NodeJS.ProcessEnv, configPath?: string) => Config;
475
484
  /** Injected in tests so no xcodebuild is ever started by the suite. */
476
485
  type SpawnRunner = (command: string, args: string[], opts: {
477
486
  env: Record<string, string>;
478
487
  logPath: string;
479
488
  }) => Promise<number | undefined>;
480
- //#endregion
481
- //#region src/server.d.ts
482
- declare const SERVER_NAME: string;
483
- declare const SERVER_VERSION: string;
489
+ export declare const SERVER_NAME: string;
490
+ export declare const SERVER_VERSION: string;
484
491
  type CreateServerOptions = {
485
492
  config: Config;
486
493
  /** Override the process boundary (tests): `xcrun`, `plutil` and `sips` never run. */
@@ -504,9 +511,7 @@ type CreatedServer = {
504
511
  * no Xcode, no WebDriverAgent and no process left running.
505
512
  * Nothing below `config.ts` reads `process.env`.
506
513
  */
507
- declare const createServer: (opts: CreateServerOptions) => CreatedServer;
508
- //#endregion
509
- //#region src/client/display.d.ts
514
+ export declare const createServer: (opts: CreateServerOptions) => CreatedServer;
510
515
  type ScreenProfile = {
511
516
  mainScreenWidth?: number;
512
517
  mainScreenHeight?: number;
@@ -517,7 +522,7 @@ type PlistOpts = {
517
522
  exec: ExecImpl;
518
523
  timeoutMs: number;
519
524
  };
520
- declare const readScreenProfile: (deviceType: RawDeviceType, opts: PlistOpts) => Promise<ScreenProfile>;
525
+ export declare const readScreenProfile: (deviceType: RawDeviceType, opts: PlistOpts) => Promise<ScreenProfile>;
521
526
  /**
522
527
  * Width and height straight out of a PNG's IHDR.
523
528
  *
@@ -525,7 +530,7 @@ declare const readScreenProfile: (deviceType: RawDeviceType, opts: PlistOpts) =>
525
530
  * and the bytes are already in hand: the signature is fixed, `IHDR` is always
526
531
  * the first chunk, and the two dimensions are big-endian at offsets 16 and 20.
527
532
  */
528
- declare const pngDimensions: (png: Buffer) => {
533
+ export declare const pngDimensions: (png: Buffer) => {
529
534
  width: number;
530
535
  height: number;
531
536
  } | undefined;
@@ -541,15 +546,13 @@ declare const pngDimensions: (png: Buffer) => {
541
546
  * `io enumerate`'s `Power state` is about the framebuffer port rather than the
542
547
  * screen, so mapping it would be a lie.
543
548
  */
544
- declare const toDisplayInfo: (profile: ScreenProfile, capture?: {
549
+ export declare const toDisplayInfo: (profile: ScreenProfile, capture?: {
545
550
  width: number;
546
551
  height: number;
547
552
  }) => DisplayInfo;
548
- //#endregion
549
- //#region src/client/errors.d.ts
550
553
  /** Raising the budget, or noticing the simulator died mid-call. */
551
- declare const TIMEOUT_REMEDY: string;
552
- declare const TOOLCHAIN_REMEDY: string;
554
+ export declare const TIMEOUT_REMEDY: string;
555
+ export declare const TOOLCHAIN_REMEDY: string;
553
556
  /**
554
557
  * How to get the runner up, from a shell.
555
558
  *
@@ -562,9 +565,9 @@ declare const TOOLCHAIN_REMEDY: string;
562
565
  * needs — but a remedy that sends a caller holding ios_simulator_restart_wda out
563
566
  * to a terminal is a remedy that wastes the tool it already has.
564
567
  */
565
- declare const START_RUNNER_SCRIPT_REMEDY: string;
568
+ export declare const START_RUNNER_SCRIPT_REMEDY: string;
566
569
  /** The same thing, done with this server's own tool. */
567
- declare const START_RUNNER_TOOL_REMEDY: string;
570
+ export declare const START_RUNNER_TOOL_REMEDY: string;
568
571
  /**
569
572
  * How to get the runner up, in whichever way the caller can actually reach.
570
573
  *
@@ -572,11 +575,11 @@ declare const START_RUNNER_TOOL_REMEDY: string;
572
575
  * it unconditionally would be the same mistake this fixes, pointed the other
573
576
  * way: a remedy naming a tool that is not in the list.
574
577
  */
575
- declare const startRunnerRemedy: (allowWrites: boolean) => string;
578
+ export declare const startRunnerRemedy: (allowWrites: boolean) => string;
576
579
  /** What to do when WebDriverAgent does not answer at all. */
577
- declare const wdaUnavailableRemedy: (allowWrites: boolean) => string;
580
+ export declare const wdaUnavailableRemedy: (allowWrites: boolean) => string;
578
581
  /** No simulator matched, or several did and none was named. */
579
- declare class SimulatorNotFoundError extends IosError$1 {
582
+ export declare class SimulatorNotFoundError extends IosError$1 {
580
583
  readonly name = "SimulatorNotFoundError";
581
584
  constructor(message: string, remedy: string);
582
585
  }
@@ -588,7 +591,7 @@ declare class SimulatorNotFoundError extends IosError$1 {
588
591
  * "it is shut down" would otherwise be buried in a CoreSimulator envelope that
589
592
  * reads like a lookup bug.
590
593
  */
591
- declare class SimulatorNotBootedError extends IosError$1 {
594
+ export declare class SimulatorNotBootedError extends IosError$1 {
592
595
  readonly name = "SimulatorNotBootedError";
593
596
  constructor(name: string, udid: string);
594
597
  }
@@ -599,26 +602,23 @@ declare class SimulatorNotBootedError extends IosError$1 {
599
602
  * at all: `simctl io` against one of these aborts with an uncaught
600
603
  * NSInternalInconsistencyException and a thirty-line stack trace.
601
604
  */
602
- declare class RuntimeUnavailableError extends IosError$1 {
605
+ export declare class RuntimeUnavailableError extends IosError$1 {
603
606
  readonly name = "RuntimeUnavailableError";
604
607
  constructor(name: string, reason: string | undefined);
605
608
  }
606
609
  /** Thrown when a write path is reached while IOS_SIMULATOR_ALLOW_WRITES is off. */
607
- declare class WritesDisabledError extends IosError$1 {
610
+ export declare class WritesDisabledError extends IosError$1 {
608
611
  readonly name = "WritesDisabledError";
609
612
  constructor(what: string);
610
613
  }
611
614
  /** A shut-down simulator captures nothing, and that is the usual cause here. */
612
- declare const EMPTY_SCREENSHOT_REMEDY: string;
613
- //#endregion
614
- //#region src/build-info.d.ts
615
+ export declare const EMPTY_SCREENSHOT_REMEDY: string;
615
616
  type BuildInfo = {
616
617
  name: string;
617
618
  version: string;
618
619
  gitCommit: string;
619
620
  gitCommitDate: string;
620
621
  };
621
- declare const BUILD_INFO: BuildInfo;
622
- //#endregion
623
- export { BUILD_INFO, CommandError, CommandTimeoutError, type Config, type CreateServerOptions, type CreatedServer, EMPTY_SCREENSHOT_REMEDY, IosError, type RawDeviceType, type RawRuntime, type RawSim, type RawSimApp, RuntimeUnavailableError, SERVER_NAME, SERVER_VERSION, START_RUNNER_SCRIPT_REMEDY, START_RUNNER_TOOL_REMEDY, type SimAppSummary, Simctl, SimulatorClient, SimulatorNotBootedError, SimulatorNotFoundError, type SimulatorSummary, TIMEOUT_REMEDY, TOOLCHAIN_REMEDY, ToolchainError, WdaError, WdaUnavailableError, WritesDisabledError, assertNotBulkTarget, createServer, defaultConfigPath, loadConfig, parseSimctlError, pngDimensions, readScreenProfile, startRunnerRemedy, summarizeApps, summarizeDevices, toDisplayInfo, toListRow, wdaUnavailableRemedy };
622
+ export declare const BUILD_INFO: BuildInfo;
623
+ export { CommandError, CommandTimeoutError, type Config, type CreateServerOptions, type CreatedServer, IosError, type RawDeviceType, type RawRuntime, type RawSim, type RawSimApp, type SimAppSummary, type SimulatorSummary, ToolchainError, WdaError, WdaUnavailableError };
624
624
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/client/logs.ts","../src/client/simctl.ts","../src/client/shape.ts","../src/client/simulator.ts","../src/config.ts","../src/tools/runner.ts","../src/server.ts","../src/client/display.ts","../src/client/errors.ts","../src/build-info.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["IosError"],"sources":["../src/client/logs.ts","../src/client/simctl.ts","../src/client/shape.ts","../src/client/simulator.ts","../src/config.ts","../src/tools/runner.ts","../src/server.ts","../src/client/display.ts","../src/client/errors.ts","../src/build-info.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,2 +1 @@
1
- import { A as WritesDisabledError, C as SimulatorNotBootedError, D as ToolchainError, E as TOOLCHAIN_REMEDY, M as wdaUnavailableRemedy, N as BUILD_INFO, O as WdaError, S as START_RUNNER_TOOL_REMEDY, T as TIMEOUT_REMEDY, _ as CommandTimeoutError, a as createServer, b as RuntimeUnavailableError, c as assertNotBulkTarget, d as summarizeDevices, f as toListRow, g as CommandError, h as toDisplayInfo, i as SERVER_VERSION, j as startRunnerRemedy, k as WdaUnavailableError, l as parseSimctlError, m as readScreenProfile, n as loadConfig, o as SimulatorClient, p as pngDimensions, r as SERVER_NAME, s as Simctl, t as defaultConfigPath, u as summarizeApps, v as EMPTY_SCREENSHOT_REMEDY, w as SimulatorNotFoundError, x as START_RUNNER_SCRIPT_REMEDY, y as IosError } from "./config-D0JgmT_U.js";
2
- export { BUILD_INFO, CommandError, CommandTimeoutError, EMPTY_SCREENSHOT_REMEDY, IosError, RuntimeUnavailableError, SERVER_NAME, SERVER_VERSION, START_RUNNER_SCRIPT_REMEDY, START_RUNNER_TOOL_REMEDY, Simctl, SimulatorClient, SimulatorNotBootedError, SimulatorNotFoundError, TIMEOUT_REMEDY, TOOLCHAIN_REMEDY, ToolchainError, WdaError, WdaUnavailableError, WritesDisabledError, assertNotBulkTarget, createServer, defaultConfigPath, loadConfig, parseSimctlError, pngDimensions, readScreenProfile, startRunnerRemedy, summarizeApps, summarizeDevices, toDisplayInfo, toListRow, wdaUnavailableRemedy };
1
+ export { N as BUILD_INFO, g as CommandError, _ as CommandTimeoutError, v as EMPTY_SCREENSHOT_REMEDY, y as IosError, b as RuntimeUnavailableError, r as SERVER_NAME, i as SERVER_VERSION, x as START_RUNNER_SCRIPT_REMEDY, S as START_RUNNER_TOOL_REMEDY, s as Simctl, o as SimulatorClient, C as SimulatorNotBootedError, w as SimulatorNotFoundError, T as TIMEOUT_REMEDY, E as TOOLCHAIN_REMEDY, D as ToolchainError, O as WdaError, k as WdaUnavailableError, A as WritesDisabledError, c as assertNotBulkTarget, a as createServer, t as defaultConfigPath, n as loadConfig, l as parseSimctlError, p as pngDimensions, m as readScreenProfile, j as startRunnerRemedy, u as summarizeApps, d as summarizeDevices, h as toDisplayInfo, f as toListRow, M as wdaUnavailableRemedy } from "./config-HmqayUrt.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mgcrea/mcp-ios-simulator",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Model Context Protocol server for driving iOS Simulators: screenshots, UI tree, taps, app lifecycle and device staging",
5
5
  "keywords": [
6
6
  "ios",
@@ -60,23 +60,23 @@
60
60
  "prepublishOnly": "pnpm build"
61
61
  },
62
62
  "dependencies": {
63
- "@mgcrea/mcp-ios-core": "^0.3.0",
64
- "@modelcontextprotocol/server": "^2.0.0",
65
- "zod": "^4.4.3"
63
+ "@mgcrea/mcp-ios-core": "^0.4.0",
64
+ "@modelcontextprotocol/server": "^2.4.0",
65
+ "zod": "^4.6.7"
66
66
  },
67
67
  "devDependencies": {
68
- "@modelcontextprotocol/client": "^2.0.0",
69
- "@types/node": "^26.2.0",
70
- "oxfmt": "^0.62.0",
71
- "oxlint": "^1.77.0",
72
- "tsdown": "^0.22.14",
73
- "tsx": "^4.23.11",
68
+ "@modelcontextprotocol/client": "^2.4.0",
69
+ "@types/node": "^26.6.5",
70
+ "oxfmt": "^0.75.0",
71
+ "oxlint": "^1.90.0",
72
+ "tsdown": "^0.23.3",
73
+ "tsx": "^4.23.15",
74
74
  "typescript": "^7.0.2",
75
- "vite": "^8.2.1",
76
- "vitest": "^4.1.10"
75
+ "vite": "^8.3.5",
76
+ "vitest": "^5.0.5"
77
77
  },
78
78
  "engines": {
79
79
  "node": ">=22"
80
80
  },
81
- "packageManager": "pnpm@11.13.1"
81
+ "packageManager": "pnpm@12.10.1"
82
82
  }