@ebowwa/mcp-ios-devices 1.0.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.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Location Tools
3
+ * Simulate GPS location on devices
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=location.d.ts.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Location Tools
3
+ * Simulate GPS location on devices
4
+ */
5
+ import { z } from 'zod';
6
+ import { registerTool } from '../registry.js';
7
+ import { LibIMobileDevice } from '@ebowwa/ios-devices';
8
+ registerTool({
9
+ name: 'ios_set_location',
10
+ description: 'Set simulated GPS location on device',
11
+ inputSchema: z.object({
12
+ deviceId: z.string().describe('Device UDID'),
13
+ latitude: z.number().min(-90).max(90).describe('Latitude'),
14
+ longitude: z.number().min(-180).max(180).describe('Longitude'),
15
+ }),
16
+ handler: async ({ deviceId, latitude, longitude }) => {
17
+ const lib = new LibIMobileDevice({ udid: deviceId });
18
+ return lib.setLocation(latitude, longitude);
19
+ },
20
+ });
21
+ registerTool({
22
+ name: 'ios_reset_location',
23
+ description: 'Reset simulated GPS location (stop simulation)',
24
+ inputSchema: z.object({
25
+ deviceId: z.string().describe('Device UDID'),
26
+ }),
27
+ handler: async ({ deviceId }) => {
28
+ const lib = new LibIMobileDevice({ udid: deviceId });
29
+ return lib.resetLocation();
30
+ },
31
+ });
32
+ //# sourceMappingURL=location.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Logging & Diagnostics Tools
3
+ * Collect logs and diagnostic information from iOS devices
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Logging & Diagnostics Tools
3
+ * Collect logs and diagnostic information from iOS devices
4
+ */
5
+ import { z } from 'zod';
6
+ import { registerTool } from '../registry.js';
7
+ import { LibIMobileDevice, DeviceCtl } from '@ebowwa/ios-devices';
8
+ registerTool({
9
+ name: 'ios_stream_syslog',
10
+ description: 'Stream syslog from device (real-time logs)',
11
+ inputSchema: z.object({
12
+ deviceId: z.string().describe('Device UDID'),
13
+ match: z.string().optional().describe('Only include logs matching pattern'),
14
+ exclude: z.string().optional().describe('Exclude logs matching pattern'),
15
+ process: z.string().optional().describe('Filter by process name'),
16
+ kernel: z.boolean().optional().describe('Include kernel logs only'),
17
+ }),
18
+ handler: async ({ deviceId, match, exclude, process, kernel }) => {
19
+ const lib = new LibIMobileDevice({ udid: deviceId });
20
+ return lib.streamSyslog({ match, exclude, process, kernel });
21
+ },
22
+ });
23
+ registerTool({
24
+ name: 'ios_get_syslog_archive',
25
+ description: 'Download syslog archive from device',
26
+ inputSchema: z.object({
27
+ deviceId: z.string().describe('Device UDID'),
28
+ outputPath: z.string().describe('Path to save archive'),
29
+ }),
30
+ handler: async ({ deviceId, outputPath }) => {
31
+ const lib = new LibIMobileDevice({ udid: deviceId });
32
+ return lib.getSyslogArchive(outputPath);
33
+ },
34
+ });
35
+ registerTool({
36
+ name: 'ios_collect_diagnostics',
37
+ description: 'Collect diagnostic information from device',
38
+ inputSchema: z.object({
39
+ deviceId: z.string().optional().describe('Device UDID (omit for all devices)'),
40
+ archiveDestination: z.string().optional().describe('Path for diagnostic archive'),
41
+ }),
42
+ handler: async ({ deviceId, archiveDestination }) => {
43
+ const deviceCtl = new DeviceCtl();
44
+ return deviceCtl.collectDiagnostics({ devices: deviceId, archiveDestination });
45
+ },
46
+ });
47
+ registerTool({
48
+ name: 'ios_download_crash_reports',
49
+ description: 'Download crash reports from device',
50
+ inputSchema: z.object({
51
+ deviceId: z.string().describe('Device UDID'),
52
+ outputDirectory: z.string().describe('Directory to save crash reports'),
53
+ extract: z.boolean().optional().describe('Extract crash reports'),
54
+ keep: z.boolean().optional().describe('Keep reports on device'),
55
+ }),
56
+ handler: async ({ deviceId, outputDirectory, extract, keep }) => {
57
+ const lib = new LibIMobileDevice({ udid: deviceId });
58
+ return lib.downloadCrashReports(outputDirectory, { extract, keep });
59
+ },
60
+ });
61
+ registerTool({
62
+ name: 'ios_get_diagnostics',
63
+ description: 'Get diagnostics information (WiFi, Battery, NAND, etc.)',
64
+ inputSchema: z.object({
65
+ deviceId: z.string().describe('Device UDID'),
66
+ type: z.enum(['All', 'WiFi', 'GasGauge', 'NAND', 'Battery', 'HDMI']).optional().default('All'),
67
+ }),
68
+ handler: async ({ deviceId, type }) => {
69
+ const lib = new LibIMobileDevice({ udid: deviceId });
70
+ return lib.getDiagnostics(type);
71
+ },
72
+ });
73
+ registerTool({
74
+ name: 'ios_get_ioreg',
75
+ description: 'Get IO Registry information',
76
+ inputSchema: z.object({
77
+ deviceId: z.string().describe('Device UDID'),
78
+ plane: z.enum(['IODeviceTree', 'IOPower', 'IOService']).optional(),
79
+ }),
80
+ handler: async ({ deviceId, plane }) => {
81
+ const lib = new LibIMobileDevice({ udid: deviceId });
82
+ return lib.getIORegistry(plane);
83
+ },
84
+ });
85
+ registerTool({
86
+ name: 'ios_get_mobilegestalt',
87
+ description: 'Get MobileGestalt values from device',
88
+ inputSchema: z.object({
89
+ deviceId: z.string().describe('Device UDID'),
90
+ keys: z.array(z.string()).describe('Keys to query'),
91
+ }),
92
+ handler: async ({ deviceId, keys }) => {
93
+ const lib = new LibIMobileDevice({ udid: deviceId });
94
+ return lib.getMobileGestalt(...keys);
95
+ },
96
+ });
97
+ registerTool({
98
+ name: 'ios_start_bluetooth_logger',
99
+ description: 'Start Bluetooth packet logging',
100
+ inputSchema: z.object({
101
+ deviceId: z.string().describe('Device UDID'),
102
+ outputPath: z.string().optional().describe('Path to save logs'),
103
+ }),
104
+ handler: async ({ deviceId, outputPath }) => {
105
+ const lib = new LibIMobileDevice({ udid: deviceId });
106
+ return lib.startBluetoothLogging(outputPath);
107
+ },
108
+ });
109
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Process Management Tools
3
+ * List, launch, terminate, and signal processes on iOS devices
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Process Management Tools
3
+ * List, launch, terminate, and signal processes on iOS devices
4
+ */
5
+ import { z } from 'zod';
6
+ import { registerTool } from '../registry.js';
7
+ import { DeviceCtl } from '@ebowwa/ios-devices';
8
+ const deviceCtl = new DeviceCtl();
9
+ registerTool({
10
+ name: 'ios_list_processes',
11
+ description: 'List all running processes on a device',
12
+ inputSchema: z.object({
13
+ deviceId: z.string().describe('Device UDID'),
14
+ }),
15
+ handler: async ({ deviceId }) => {
16
+ return deviceCtl.listProcesses(deviceId);
17
+ },
18
+ });
19
+ registerTool({
20
+ name: 'ios_launch_app',
21
+ description: 'Launch an app on the device',
22
+ inputSchema: z.object({
23
+ deviceId: z.string().describe('Device UDID'),
24
+ bundleId: z.string().describe('App bundle identifier (e.g., com.apple.MobileSMS)'),
25
+ arguments: z.array(z.string()).optional().describe('Arguments to pass to the app'),
26
+ environment: z.record(z.string()).optional().describe('Environment variables'),
27
+ }),
28
+ handler: async ({ deviceId, bundleId, arguments: args, environment }) => {
29
+ return deviceCtl.launchApp(deviceId, bundleId, { arguments: args, environment });
30
+ },
31
+ });
32
+ registerTool({
33
+ name: 'ios_terminate_process',
34
+ description: 'Terminate a process by PID or name',
35
+ inputSchema: z.object({
36
+ deviceId: z.string().describe('Device UDID'),
37
+ process: z.union([z.number(), z.string()]).describe('Process PID (number) or name (string)'),
38
+ }),
39
+ handler: async ({ deviceId, process }) => {
40
+ return deviceCtl.terminateProcess(deviceId, process);
41
+ },
42
+ });
43
+ registerTool({
44
+ name: 'ios_signal_process',
45
+ description: 'Send a signal to a process',
46
+ inputSchema: z.object({
47
+ deviceId: z.string().describe('Device UDID'),
48
+ pid: z.number().describe('Process ID'),
49
+ signal: z.enum(['SIGTERM', 'SIGKILL', 'SIGHUP', 'SIGINT', 'SIGSTOP', 'SIGCONT', 'SIGUSR1', 'SIGUSR2']),
50
+ }),
51
+ handler: async ({ deviceId, pid, signal }) => {
52
+ return deviceCtl.signalProcess(deviceId, pid, signal);
53
+ },
54
+ });
55
+ registerTool({
56
+ name: 'ios_suspend_process',
57
+ description: 'Suspend a running process',
58
+ inputSchema: z.object({
59
+ deviceId: z.string().describe('Device UDID'),
60
+ pid: z.number().describe('Process ID'),
61
+ }),
62
+ handler: async ({ deviceId, pid }) => {
63
+ return deviceCtl.suspendProcess(deviceId, pid);
64
+ },
65
+ });
66
+ registerTool({
67
+ name: 'ios_resume_process',
68
+ description: 'Resume a suspended process',
69
+ inputSchema: z.object({
70
+ deviceId: z.string().describe('Device UDID'),
71
+ pid: z.number().describe('Process ID'),
72
+ }),
73
+ handler: async ({ deviceId, pid }) => {
74
+ return deviceCtl.resumeProcess(deviceId, pid);
75
+ },
76
+ });
77
+ registerTool({
78
+ name: 'ios_send_memory_warning',
79
+ description: 'Send a memory warning to a process',
80
+ inputSchema: z.object({
81
+ deviceId: z.string().describe('Device UDID'),
82
+ pid: z.number().describe('Process ID'),
83
+ }),
84
+ handler: async ({ deviceId, pid }) => {
85
+ return deviceCtl.sendMemoryWarning(deviceId, pid);
86
+ },
87
+ });
88
+ registerTool({
89
+ name: 'ios_post_notification',
90
+ description: 'Post a Darwin notification to the device',
91
+ inputSchema: z.object({
92
+ deviceId: z.string().describe('Device UDID'),
93
+ name: z.string().describe('Notification name'),
94
+ userInfo: z.record(z.any()).optional().describe('Optional user info dictionary'),
95
+ }),
96
+ handler: async ({ deviceId, name, userInfo }) => {
97
+ return deviceCtl.postNotification(deviceId, name, userInfo);
98
+ },
99
+ });
100
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Provisioning Profile Tools
3
+ * Manage provisioning profiles on devices
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Provisioning Profile Tools
3
+ * Manage provisioning profiles on devices
4
+ */
5
+ import { z } from 'zod';
6
+ import { registerTool } from '../registry.js';
7
+ import { LibIMobileDevice } from '@ebowwa/ios-devices';
8
+ registerTool({
9
+ name: 'ios_list_profiles',
10
+ description: 'List installed provisioning profiles',
11
+ inputSchema: z.object({
12
+ deviceId: z.string().describe('Device UDID'),
13
+ }),
14
+ handler: async ({ deviceId }) => {
15
+ const lib = new LibIMobileDevice({ udid: deviceId });
16
+ return lib.listProfiles();
17
+ },
18
+ });
19
+ registerTool({
20
+ name: 'ios_install_profile',
21
+ description: 'Install a provisioning profile',
22
+ inputSchema: z.object({
23
+ deviceId: z.string().describe('Device UDID'),
24
+ profilePath: z.string().describe('Path to .mobileprovision file'),
25
+ }),
26
+ handler: async ({ deviceId, profilePath }) => {
27
+ const lib = new LibIMobileDevice({ udid: deviceId });
28
+ return lib.installProfile(profilePath);
29
+ },
30
+ });
31
+ registerTool({
32
+ name: 'ios_remove_profile',
33
+ description: 'Remove a provisioning profile',
34
+ inputSchema: z.object({
35
+ deviceId: z.string().describe('Device UDID'),
36
+ uuid: z.string().describe('Profile UUID'),
37
+ }),
38
+ handler: async ({ deviceId, uuid }) => {
39
+ const lib = new LibIMobileDevice({ udid: deviceId });
40
+ return lib.removeProfile(uuid);
41
+ },
42
+ });
43
+ registerTool({
44
+ name: 'ios_list_dev_mode',
45
+ description: 'List developer mode status for devices',
46
+ inputSchema: z.object({}),
47
+ handler: async () => {
48
+ const lib = new LibIMobileDevice();
49
+ return lib.listDevMode();
50
+ },
51
+ });
52
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Screenshot Tools
3
+ * Capture screenshots from devices
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=screenshot.d.ts.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Screenshot Tools
3
+ * Capture screenshots from devices
4
+ */
5
+ import { z } from 'zod';
6
+ import { registerTool } from '../registry.js';
7
+ import { LibIMobileDevice } from '@ebowwa/ios-devices';
8
+ registerTool({
9
+ name: 'ios_screenshot',
10
+ description: 'Take a screenshot of the device screen',
11
+ inputSchema: z.object({
12
+ deviceId: z.string().describe('Device UDID'),
13
+ outputPath: z.string().optional().describe('Output file path (.tiff)'),
14
+ }),
15
+ handler: async ({ deviceId, outputPath }) => {
16
+ const lib = new LibIMobileDevice({ udid: deviceId });
17
+ return lib.takeScreenshot(outputPath);
18
+ },
19
+ });
20
+ //# sourceMappingURL=screenshot.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Simulator Tools
3
+ * Control iOS Simulator via simctl
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=simulator.d.ts.map