claude-in-mobile 2.1.2 → 2.3.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/desktop-companion/build/install/desktop-companion/bin/desktop-companion +248 -0
- package/desktop-companion/build/install/desktop-companion/bin/desktop-companion.bat +92 -0
- package/desktop-companion/build/install/desktop-companion/lib/annotations-23.0.0.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/desktop-companion-1.0.0.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/jna-5.14.0.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/jna-platform-5.14.0.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlin-stdlib-1.9.22.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlin-stdlib-jdk7-1.8.20.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlin-stdlib-jdk8-1.8.20.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlinx-coroutines-core-jvm-1.7.3.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlinx-serialization-core-jvm-1.6.2.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlinx-serialization-json-jvm-1.6.2.jar +0 -0
- package/dist/adb/ui-parser.d.ts +63 -0
- package/dist/adb/ui-parser.d.ts.map +1 -1
- package/dist/adb/ui-parser.js +186 -0
- package/dist/adb/ui-parser.js.map +1 -1
- package/dist/desktop/client.d.ts +162 -0
- package/dist/desktop/client.d.ts.map +1 -0
- package/dist/desktop/client.js +485 -0
- package/dist/desktop/client.js.map +1 -0
- package/dist/desktop/gradle.d.ts +45 -0
- package/dist/desktop/gradle.d.ts.map +1 -0
- package/dist/desktop/gradle.js +228 -0
- package/dist/desktop/gradle.js.map +1 -0
- package/dist/desktop/index.d.ts +7 -0
- package/dist/desktop/index.d.ts.map +1 -0
- package/dist/desktop/index.js +7 -0
- package/dist/desktop/index.js.map +1 -0
- package/dist/desktop/types.d.ts +131 -0
- package/dist/desktop/types.d.ts.map +1 -0
- package/dist/desktop/types.js +5 -0
- package/dist/desktop/types.js.map +1 -0
- package/dist/device-manager.d.ts +41 -10
- package/dist/device-manager.d.ts.map +1 -1
- package/dist/device-manager.js +226 -39
- package/dist/device-manager.js.map +1 -1
- package/dist/index.js +318 -19
- package/dist/index.js.map +1 -1
- package/dist/utils/image.d.ts +2 -0
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +25 -2
- package/dist/utils/image.js.map +1 -1
- package/package.json +7 -2
package/dist/index.js
CHANGED
|
@@ -3,14 +3,14 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
5
|
import { DeviceManager } from "./device-manager.js";
|
|
6
|
-
import { parseUiHierarchy, findByText, findByResourceId, findElements, formatUiTree, formatElement, } from "./adb/ui-parser.js";
|
|
6
|
+
import { parseUiHierarchy, findByText, findByResourceId, findElements, formatUiTree, formatElement, analyzeScreen, findBestMatch, formatScreenAnalysis, } from "./adb/ui-parser.js";
|
|
7
7
|
// Initialize device manager
|
|
8
8
|
const deviceManager = new DeviceManager();
|
|
9
9
|
// Platform parameter schema (reused across tools)
|
|
10
10
|
const platformParam = {
|
|
11
11
|
type: "string",
|
|
12
|
-
enum: ["android", "ios"],
|
|
13
|
-
description: "Target platform. If not specified, uses the active
|
|
12
|
+
enum: ["android", "ios", "desktop"],
|
|
13
|
+
description: "Target platform. If not specified, uses the active target.",
|
|
14
14
|
};
|
|
15
15
|
// Define tools
|
|
16
16
|
const tools = [
|
|
@@ -382,6 +382,165 @@ const tools = [
|
|
|
382
382
|
},
|
|
383
383
|
},
|
|
384
384
|
},
|
|
385
|
+
// ============ Desktop Tools ============
|
|
386
|
+
{
|
|
387
|
+
name: "set_target",
|
|
388
|
+
description: "Switch the active target between Android, iOS, and Desktop platforms",
|
|
389
|
+
inputSchema: {
|
|
390
|
+
type: "object",
|
|
391
|
+
properties: {
|
|
392
|
+
target: {
|
|
393
|
+
type: "string",
|
|
394
|
+
enum: ["android", "ios", "desktop"],
|
|
395
|
+
description: "Target platform to switch to",
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
required: ["target"],
|
|
399
|
+
},
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
name: "get_target",
|
|
403
|
+
description: "Get the current active target and its status",
|
|
404
|
+
inputSchema: {
|
|
405
|
+
type: "object",
|
|
406
|
+
properties: {},
|
|
407
|
+
},
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
name: "launch_desktop_app",
|
|
411
|
+
description: "Start desktop automation. Optionally also launches a Compose Desktop application via Gradle.",
|
|
412
|
+
inputSchema: {
|
|
413
|
+
type: "object",
|
|
414
|
+
properties: {
|
|
415
|
+
projectPath: {
|
|
416
|
+
type: "string",
|
|
417
|
+
description: "Path to the Gradle project directory. If provided, also launches the user's app.",
|
|
418
|
+
},
|
|
419
|
+
task: {
|
|
420
|
+
type: "string",
|
|
421
|
+
description: "Gradle task to run (e.g., ':desktopApp:run'). Auto-detected if not specified.",
|
|
422
|
+
},
|
|
423
|
+
jvmArgs: {
|
|
424
|
+
type: "array",
|
|
425
|
+
items: { type: "string" },
|
|
426
|
+
description: "JVM arguments to pass to the app",
|
|
427
|
+
},
|
|
428
|
+
},
|
|
429
|
+
},
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
name: "stop_desktop_app",
|
|
433
|
+
description: "Stop the running desktop application",
|
|
434
|
+
inputSchema: {
|
|
435
|
+
type: "object",
|
|
436
|
+
properties: {},
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
name: "get_window_info",
|
|
441
|
+
description: "Get information about desktop windows (Desktop only)",
|
|
442
|
+
inputSchema: {
|
|
443
|
+
type: "object",
|
|
444
|
+
properties: {},
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
name: "focus_window",
|
|
449
|
+
description: "Focus a specific desktop window (Desktop only)",
|
|
450
|
+
inputSchema: {
|
|
451
|
+
type: "object",
|
|
452
|
+
properties: {
|
|
453
|
+
windowId: {
|
|
454
|
+
type: "string",
|
|
455
|
+
description: "Window ID from get_window_info",
|
|
456
|
+
},
|
|
457
|
+
},
|
|
458
|
+
required: ["windowId"],
|
|
459
|
+
},
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
name: "resize_window",
|
|
463
|
+
description: "Resize a desktop window (Desktop only)",
|
|
464
|
+
inputSchema: {
|
|
465
|
+
type: "object",
|
|
466
|
+
properties: {
|
|
467
|
+
windowId: {
|
|
468
|
+
type: "string",
|
|
469
|
+
description: "Window ID (optional, uses focused window if not specified)",
|
|
470
|
+
},
|
|
471
|
+
width: {
|
|
472
|
+
type: "number",
|
|
473
|
+
description: "New window width in pixels",
|
|
474
|
+
},
|
|
475
|
+
height: {
|
|
476
|
+
type: "number",
|
|
477
|
+
description: "New window height in pixels",
|
|
478
|
+
},
|
|
479
|
+
},
|
|
480
|
+
required: ["width", "height"],
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
name: "get_clipboard",
|
|
485
|
+
description: "Get clipboard text content (Desktop only)",
|
|
486
|
+
inputSchema: {
|
|
487
|
+
type: "object",
|
|
488
|
+
properties: {},
|
|
489
|
+
},
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
name: "set_clipboard",
|
|
493
|
+
description: "Set clipboard text content (Desktop only)",
|
|
494
|
+
inputSchema: {
|
|
495
|
+
type: "object",
|
|
496
|
+
properties: {
|
|
497
|
+
text: {
|
|
498
|
+
type: "string",
|
|
499
|
+
description: "Text to set in clipboard",
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
required: ["text"],
|
|
503
|
+
},
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
name: "get_performance_metrics",
|
|
507
|
+
description: "Get memory and CPU usage metrics (Desktop only)",
|
|
508
|
+
inputSchema: {
|
|
509
|
+
type: "object",
|
|
510
|
+
properties: {},
|
|
511
|
+
},
|
|
512
|
+
},
|
|
513
|
+
// ============ Smart Android UI Tools ============
|
|
514
|
+
{
|
|
515
|
+
name: "analyze_screen",
|
|
516
|
+
description: "Get structured analysis of the current screen without taking a screenshot. Returns buttons, input fields, text content, and scrollable areas. Much cheaper than screenshot for understanding screen layout. (Android only)",
|
|
517
|
+
inputSchema: {
|
|
518
|
+
type: "object",
|
|
519
|
+
properties: {
|
|
520
|
+
platform: platformParam,
|
|
521
|
+
},
|
|
522
|
+
},
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
name: "find_and_tap",
|
|
526
|
+
description: "Smart tap by element description. Uses fuzzy matching to find the best element by text, content description, or resource ID, then taps it. More reliable than exact text matching. (Android only)",
|
|
527
|
+
inputSchema: {
|
|
528
|
+
type: "object",
|
|
529
|
+
properties: {
|
|
530
|
+
description: {
|
|
531
|
+
type: "string",
|
|
532
|
+
description: "Natural language description of the element to tap, e.g., 'submit button', 'settings', 'back'",
|
|
533
|
+
},
|
|
534
|
+
minConfidence: {
|
|
535
|
+
type: "number",
|
|
536
|
+
description: "Minimum confidence score (0-100) to accept a match (default: 30)",
|
|
537
|
+
default: 30,
|
|
538
|
+
},
|
|
539
|
+
platform: platformParam,
|
|
540
|
+
},
|
|
541
|
+
required: ["description"],
|
|
542
|
+
},
|
|
543
|
+
},
|
|
385
544
|
];
|
|
386
545
|
// Cache for UI elements (to support tap by index)
|
|
387
546
|
let cachedElements = [];
|
|
@@ -395,14 +554,16 @@ async function handleTool(name, args) {
|
|
|
395
554
|
return { text: "No devices connected. Make sure ADB/Xcode is running and a device/emulator/simulator is connected." };
|
|
396
555
|
}
|
|
397
556
|
const activeDevice = deviceManager.getActiveDevice();
|
|
557
|
+
const { target: activeTarget } = deviceManager.getTarget();
|
|
398
558
|
// Group by platform
|
|
399
559
|
const android = devices.filter(d => d.platform === "android");
|
|
400
560
|
const ios = devices.filter(d => d.platform === "ios");
|
|
561
|
+
const desktop = devices.filter(d => d.platform === "desktop");
|
|
401
562
|
let result = "Connected devices:\n";
|
|
402
563
|
if (android.length > 0) {
|
|
403
564
|
result += "\nAndroid:\n";
|
|
404
565
|
for (const d of android) {
|
|
405
|
-
const active = activeDevice?.id === d.id ? " [ACTIVE]" : "";
|
|
566
|
+
const active = activeDevice?.id === d.id && activeTarget === "android" ? " [ACTIVE]" : "";
|
|
406
567
|
const type = d.isSimulator ? "emulator" : "physical";
|
|
407
568
|
result += ` • ${d.id} - ${d.name} (${type}, ${d.state})${active}\n`;
|
|
408
569
|
}
|
|
@@ -410,11 +571,18 @@ async function handleTool(name, args) {
|
|
|
410
571
|
if (ios.length > 0) {
|
|
411
572
|
result += "\niOS:\n";
|
|
412
573
|
for (const d of ios) {
|
|
413
|
-
const active = activeDevice?.id === d.id ? " [ACTIVE]" : "";
|
|
574
|
+
const active = activeDevice?.id === d.id && activeTarget === "ios" ? " [ACTIVE]" : "";
|
|
414
575
|
const type = d.isSimulator ? "simulator" : "physical";
|
|
415
576
|
result += ` • ${d.id} - ${d.name} (${type}, ${d.state})${active}\n`;
|
|
416
577
|
}
|
|
417
578
|
}
|
|
579
|
+
if (desktop.length > 0) {
|
|
580
|
+
result += "\nDesktop:\n";
|
|
581
|
+
for (const d of desktop) {
|
|
582
|
+
const active = activeTarget === "desktop" ? " [ACTIVE]" : "";
|
|
583
|
+
result += ` • ${d.id} - ${d.name} (${d.state})${active}\n`;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
418
586
|
return { text: result.trim() };
|
|
419
587
|
}
|
|
420
588
|
case "set_device": {
|
|
@@ -441,7 +609,12 @@ async function handleTool(name, args) {
|
|
|
441
609
|
if (currentPlatform === "ios") {
|
|
442
610
|
return { text: "iOS UI hierarchy is limited. Use screenshot + tap by coordinates, or integrate WebDriverAgent for full UI inspection." };
|
|
443
611
|
}
|
|
444
|
-
|
|
612
|
+
// Desktop returns pre-formatted text from DeviceManager
|
|
613
|
+
const xml = await deviceManager.getUiHierarchy(platform);
|
|
614
|
+
if (currentPlatform === "desktop") {
|
|
615
|
+
return { text: xml };
|
|
616
|
+
}
|
|
617
|
+
// Android: parse XML and format
|
|
445
618
|
cachedElements = parseUiHierarchy(xml);
|
|
446
619
|
const tree = formatUiTree(cachedElements, {
|
|
447
620
|
showAll: args.showAll,
|
|
@@ -456,7 +629,7 @@ async function handleTool(name, args) {
|
|
|
456
629
|
if (args.index !== undefined && currentPlatform === "android") {
|
|
457
630
|
const idx = args.index;
|
|
458
631
|
if (cachedElements.length === 0) {
|
|
459
|
-
const xml = deviceManager.getUiHierarchy("android");
|
|
632
|
+
const xml = await deviceManager.getUiHierarchy("android");
|
|
460
633
|
cachedElements = parseUiHierarchy(xml);
|
|
461
634
|
}
|
|
462
635
|
const el = cachedElements.find(e => e.index === idx);
|
|
@@ -468,7 +641,7 @@ async function handleTool(name, args) {
|
|
|
468
641
|
}
|
|
469
642
|
// Find by text or resourceId (Android only)
|
|
470
643
|
if ((args.text || args.resourceId) && currentPlatform === "android") {
|
|
471
|
-
const xml = deviceManager.getUiHierarchy("android");
|
|
644
|
+
const xml = await deviceManager.getUiHierarchy("android");
|
|
472
645
|
cachedElements = parseUiHierarchy(xml);
|
|
473
646
|
let found = [];
|
|
474
647
|
if (args.text) {
|
|
@@ -488,7 +661,7 @@ async function handleTool(name, args) {
|
|
|
488
661
|
if (x === undefined || y === undefined) {
|
|
489
662
|
return { text: "Please provide x,y coordinates, text, resourceId, or index" };
|
|
490
663
|
}
|
|
491
|
-
deviceManager.tap(x, y, platform);
|
|
664
|
+
await deviceManager.tap(x, y, platform);
|
|
492
665
|
return { text: `Tapped at (${x}, ${y})` };
|
|
493
666
|
}
|
|
494
667
|
case "long_press": {
|
|
@@ -497,7 +670,7 @@ async function handleTool(name, args) {
|
|
|
497
670
|
const duration = args.duration ?? 1000;
|
|
498
671
|
const currentPlatform = platform ?? deviceManager.getCurrentPlatform();
|
|
499
672
|
if (args.text && currentPlatform === "android") {
|
|
500
|
-
const xml = deviceManager.getUiHierarchy("android");
|
|
673
|
+
const xml = await deviceManager.getUiHierarchy("android");
|
|
501
674
|
cachedElements = parseUiHierarchy(xml);
|
|
502
675
|
const found = findByText(cachedElements, args.text);
|
|
503
676
|
if (found.length === 0) {
|
|
@@ -509,28 +682,28 @@ async function handleTool(name, args) {
|
|
|
509
682
|
if (x === undefined || y === undefined) {
|
|
510
683
|
return { text: "Please provide x,y coordinates or text" };
|
|
511
684
|
}
|
|
512
|
-
deviceManager.longPress(x, y, duration, platform);
|
|
685
|
+
await deviceManager.longPress(x, y, duration, platform);
|
|
513
686
|
return { text: `Long pressed at (${x}, ${y}) for ${duration}ms` };
|
|
514
687
|
}
|
|
515
688
|
case "swipe": {
|
|
516
689
|
if (args.direction) {
|
|
517
|
-
deviceManager.swipeDirection(args.direction, platform);
|
|
690
|
+
await deviceManager.swipeDirection(args.direction, platform);
|
|
518
691
|
return { text: `Swiped ${args.direction}` };
|
|
519
692
|
}
|
|
520
693
|
if (args.x1 !== undefined && args.y1 !== undefined &&
|
|
521
694
|
args.x2 !== undefined && args.y2 !== undefined) {
|
|
522
695
|
const duration = args.duration ?? 300;
|
|
523
|
-
deviceManager.swipe(args.x1, args.y1, args.x2, args.y2, duration, platform);
|
|
696
|
+
await deviceManager.swipe(args.x1, args.y1, args.x2, args.y2, duration, platform);
|
|
524
697
|
return { text: `Swiped from (${args.x1}, ${args.y1}) to (${args.x2}, ${args.y2})` };
|
|
525
698
|
}
|
|
526
699
|
return { text: "Please provide direction or x1,y1,x2,y2 coordinates" };
|
|
527
700
|
}
|
|
528
701
|
case "input_text": {
|
|
529
|
-
deviceManager.inputText(args.text, platform);
|
|
702
|
+
await deviceManager.inputText(args.text, platform);
|
|
530
703
|
return { text: `Entered text: "${args.text}"` };
|
|
531
704
|
}
|
|
532
705
|
case "press_key": {
|
|
533
|
-
deviceManager.pressKey(args.key, platform);
|
|
706
|
+
await deviceManager.pressKey(args.key, platform);
|
|
534
707
|
return { text: `Pressed key: ${args.key}` };
|
|
535
708
|
}
|
|
536
709
|
case "find_element": {
|
|
@@ -538,7 +711,7 @@ async function handleTool(name, args) {
|
|
|
538
711
|
if (currentPlatform === "ios") {
|
|
539
712
|
return { text: "find_element is only available for Android. Use screenshot + tap by coordinates for iOS." };
|
|
540
713
|
}
|
|
541
|
-
const xml = deviceManager.getUiHierarchy("android");
|
|
714
|
+
const xml = await deviceManager.getUiHierarchy("android");
|
|
542
715
|
cachedElements = parseUiHierarchy(xml);
|
|
543
716
|
const found = findElements(cachedElements, {
|
|
544
717
|
text: args.text,
|
|
@@ -606,9 +779,135 @@ async function handleTool(name, args) {
|
|
|
606
779
|
return { text: result };
|
|
607
780
|
}
|
|
608
781
|
case "get_system_info": {
|
|
609
|
-
const info = deviceManager.getSystemInfo(platform);
|
|
782
|
+
const info = await deviceManager.getSystemInfo(platform);
|
|
610
783
|
return { text: info };
|
|
611
784
|
}
|
|
785
|
+
// ============ Desktop Tools ============
|
|
786
|
+
case "set_target": {
|
|
787
|
+
const target = args.target;
|
|
788
|
+
deviceManager.setTarget(target);
|
|
789
|
+
return { text: `Target set to: ${target}` };
|
|
790
|
+
}
|
|
791
|
+
case "get_target": {
|
|
792
|
+
const { target, status } = deviceManager.getTarget();
|
|
793
|
+
return { text: `Current target: ${target} (${status})` };
|
|
794
|
+
}
|
|
795
|
+
case "launch_desktop_app": {
|
|
796
|
+
const result = await deviceManager.launchDesktopApp({
|
|
797
|
+
projectPath: args.projectPath,
|
|
798
|
+
task: args.task,
|
|
799
|
+
jvmArgs: args.jvmArgs,
|
|
800
|
+
});
|
|
801
|
+
return { text: result };
|
|
802
|
+
}
|
|
803
|
+
case "stop_desktop_app": {
|
|
804
|
+
await deviceManager.stopDesktopApp();
|
|
805
|
+
return { text: "Desktop app stopped" };
|
|
806
|
+
}
|
|
807
|
+
case "get_window_info": {
|
|
808
|
+
if (!deviceManager.isDesktopRunning()) {
|
|
809
|
+
return { text: "Desktop app is not running. Use launch_desktop_app first." };
|
|
810
|
+
}
|
|
811
|
+
const windowInfo = await deviceManager.getDesktopClient().getWindowInfo();
|
|
812
|
+
if (windowInfo.windows.length === 0) {
|
|
813
|
+
return { text: "No windows found" };
|
|
814
|
+
}
|
|
815
|
+
let result = "Desktop windows:\n";
|
|
816
|
+
for (const w of windowInfo.windows) {
|
|
817
|
+
const focused = w.focused ? " [FOCUSED]" : "";
|
|
818
|
+
result += ` • ${w.id} - ${w.title}${focused} (${w.bounds.width}x${w.bounds.height})\n`;
|
|
819
|
+
}
|
|
820
|
+
return { text: result.trim() };
|
|
821
|
+
}
|
|
822
|
+
case "focus_window": {
|
|
823
|
+
if (!deviceManager.isDesktopRunning()) {
|
|
824
|
+
return { text: "Desktop app is not running. Use launch_desktop_app first." };
|
|
825
|
+
}
|
|
826
|
+
await deviceManager.getDesktopClient().focusWindow(args.windowId);
|
|
827
|
+
return { text: `Focused window: ${args.windowId}` };
|
|
828
|
+
}
|
|
829
|
+
case "resize_window": {
|
|
830
|
+
if (!deviceManager.isDesktopRunning()) {
|
|
831
|
+
return { text: "Desktop app is not running. Use launch_desktop_app first." };
|
|
832
|
+
}
|
|
833
|
+
await deviceManager.getDesktopClient().resizeWindow(args.width, args.height, args.windowId);
|
|
834
|
+
return { text: `Resized window to ${args.width}x${args.height}` };
|
|
835
|
+
}
|
|
836
|
+
case "get_clipboard": {
|
|
837
|
+
if (!deviceManager.isDesktopRunning()) {
|
|
838
|
+
return { text: "Desktop app is not running. Use launch_desktop_app first." };
|
|
839
|
+
}
|
|
840
|
+
const clipboardText = await deviceManager.getDesktopClient().getClipboard();
|
|
841
|
+
return { text: clipboardText || "(empty)" };
|
|
842
|
+
}
|
|
843
|
+
case "set_clipboard": {
|
|
844
|
+
if (!deviceManager.isDesktopRunning()) {
|
|
845
|
+
return { text: "Desktop app is not running. Use launch_desktop_app first." };
|
|
846
|
+
}
|
|
847
|
+
await deviceManager.getDesktopClient().setClipboard(args.text);
|
|
848
|
+
return { text: "Clipboard set" };
|
|
849
|
+
}
|
|
850
|
+
case "get_performance_metrics": {
|
|
851
|
+
if (!deviceManager.isDesktopRunning()) {
|
|
852
|
+
return { text: "Desktop app is not running. Use launch_desktop_app first." };
|
|
853
|
+
}
|
|
854
|
+
const metrics = await deviceManager.getDesktopClient().getPerformanceMetrics();
|
|
855
|
+
let result = "Performance metrics:\n";
|
|
856
|
+
result += ` Memory: ${metrics.memoryUsageMb} MB\n`;
|
|
857
|
+
if (metrics.cpuPercent !== undefined) {
|
|
858
|
+
result += ` CPU: ${metrics.cpuPercent}%\n`;
|
|
859
|
+
}
|
|
860
|
+
return { text: result.trim() };
|
|
861
|
+
}
|
|
862
|
+
// ============ Smart Android UI Tools ============
|
|
863
|
+
case "analyze_screen": {
|
|
864
|
+
const currentPlatform = platform ?? deviceManager.getCurrentPlatform();
|
|
865
|
+
if (currentPlatform !== "android") {
|
|
866
|
+
return { text: "analyze_screen is only available for Android. Use screenshot for iOS/Desktop." };
|
|
867
|
+
}
|
|
868
|
+
const xml = await deviceManager.getUiHierarchy("android");
|
|
869
|
+
cachedElements = parseUiHierarchy(xml);
|
|
870
|
+
// Get current activity for context
|
|
871
|
+
let activity;
|
|
872
|
+
try {
|
|
873
|
+
activity = deviceManager.getAndroidClient().getCurrentActivity();
|
|
874
|
+
}
|
|
875
|
+
catch {
|
|
876
|
+
// Ignore - activity is optional
|
|
877
|
+
}
|
|
878
|
+
const analysis = analyzeScreen(cachedElements, activity);
|
|
879
|
+
return { text: formatScreenAnalysis(analysis) };
|
|
880
|
+
}
|
|
881
|
+
case "find_and_tap": {
|
|
882
|
+
const currentPlatform = platform ?? deviceManager.getCurrentPlatform();
|
|
883
|
+
if (currentPlatform !== "android") {
|
|
884
|
+
return { text: "find_and_tap is only available for Android. Use tap with coordinates for iOS/Desktop." };
|
|
885
|
+
}
|
|
886
|
+
const description = args.description;
|
|
887
|
+
const minConfidence = args.minConfidence ?? 30;
|
|
888
|
+
// Get fresh UI hierarchy
|
|
889
|
+
const xml = await deviceManager.getUiHierarchy("android");
|
|
890
|
+
cachedElements = parseUiHierarchy(xml);
|
|
891
|
+
// Find best matching element
|
|
892
|
+
const match = findBestMatch(cachedElements, description);
|
|
893
|
+
if (!match) {
|
|
894
|
+
return { text: `No element found matching "${description}". Try using get_ui or analyze_screen to see available elements.` };
|
|
895
|
+
}
|
|
896
|
+
if (match.confidence < minConfidence) {
|
|
897
|
+
return {
|
|
898
|
+
text: `Best match has low confidence (${match.confidence}%): ${match.reason}\n` +
|
|
899
|
+
`Element: ${formatElement(match.element)}\n` +
|
|
900
|
+
`Set minConfidence lower or use tap with coordinates.`
|
|
901
|
+
};
|
|
902
|
+
}
|
|
903
|
+
// Tap the element
|
|
904
|
+
await deviceManager.tap(match.element.centerX, match.element.centerY, "android");
|
|
905
|
+
return {
|
|
906
|
+
text: `Tapped "${description}" (${match.confidence}% confidence)\n` +
|
|
907
|
+
`Match: ${match.reason}\n` +
|
|
908
|
+
`Coordinates: (${match.element.centerX}, ${match.element.centerY})`
|
|
909
|
+
};
|
|
910
|
+
}
|
|
612
911
|
default:
|
|
613
912
|
throw new Error(`Unknown tool: ${name}`);
|
|
614
913
|
}
|
|
@@ -616,7 +915,7 @@ async function handleTool(name, args) {
|
|
|
616
915
|
// Create server
|
|
617
916
|
const server = new Server({
|
|
618
917
|
name: "claude-mobile",
|
|
619
|
-
version: "2.
|
|
918
|
+
version: "2.3.0",
|
|
620
919
|
}, {
|
|
621
920
|
capabilities: {
|
|
622
921
|
tools: {},
|
|
@@ -673,7 +972,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
673
972
|
async function main() {
|
|
674
973
|
const transport = new StdioServerTransport();
|
|
675
974
|
await server.connect(transport);
|
|
676
|
-
console.error("Claude Mobile MCP server running (Android + iOS)");
|
|
975
|
+
console.error("Claude Mobile MCP server running (Android + iOS + Desktop)");
|
|
677
976
|
}
|
|
678
977
|
main().catch((error) => {
|
|
679
978
|
console.error("Fatal error:", error);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/image.d.ts
CHANGED
|
@@ -2,11 +2,13 @@ export interface CompressOptions {
|
|
|
2
2
|
maxWidth?: number;
|
|
3
3
|
maxHeight?: number;
|
|
4
4
|
quality?: number;
|
|
5
|
+
maxSizeBytes?: number;
|
|
5
6
|
}
|
|
6
7
|
/**
|
|
7
8
|
* Compress PNG image buffer
|
|
8
9
|
* - Resize if larger than max dimensions
|
|
9
10
|
* - Convert to JPEG with specified quality
|
|
11
|
+
* - Iteratively reduce quality if still too large
|
|
10
12
|
* Returns base64 encoded JPEG
|
|
11
13
|
*/
|
|
12
14
|
export declare function compressScreenshot(pngBuffer: Buffer, options?: CompressOptions): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AASD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA0D7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAK9E"}
|
package/dist/utils/image.js
CHANGED
|
@@ -3,11 +3,13 @@ const DEFAULT_OPTIONS = {
|
|
|
3
3
|
maxWidth: 800, // Safe for API limit of 2000px
|
|
4
4
|
maxHeight: 1400, // Safe for API limit of 2000px
|
|
5
5
|
quality: 70,
|
|
6
|
+
maxSizeBytes: 1024 * 1024, // 1MB max for base64 (safe margin for API)
|
|
6
7
|
};
|
|
7
8
|
/**
|
|
8
9
|
* Compress PNG image buffer
|
|
9
10
|
* - Resize if larger than max dimensions
|
|
10
11
|
* - Convert to JPEG with specified quality
|
|
12
|
+
* - Iteratively reduce quality if still too large
|
|
11
13
|
* Returns base64 encoded JPEG
|
|
12
14
|
*/
|
|
13
15
|
export async function compressScreenshot(pngBuffer, options = {}) {
|
|
@@ -29,8 +31,29 @@ export async function compressScreenshot(pngBuffer, options = {}) {
|
|
|
29
31
|
if (newWidth !== width || newHeight !== height) {
|
|
30
32
|
image.resize({ w: newWidth, h: newHeight });
|
|
31
33
|
}
|
|
32
|
-
// Convert to JPEG
|
|
33
|
-
|
|
34
|
+
// Convert to JPEG with iterative quality reduction if needed
|
|
35
|
+
let quality = opts.quality;
|
|
36
|
+
let jpegBuffer;
|
|
37
|
+
let attempts = 0;
|
|
38
|
+
const maxAttempts = 5;
|
|
39
|
+
do {
|
|
40
|
+
jpegBuffer = await image.getBuffer("image/jpeg", { quality });
|
|
41
|
+
// Check if size is within limit
|
|
42
|
+
if (jpegBuffer.length <= opts.maxSizeBytes) {
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
// Reduce quality and try again
|
|
46
|
+
quality = Math.max(20, quality - 15);
|
|
47
|
+
attempts++;
|
|
48
|
+
} while (attempts < maxAttempts);
|
|
49
|
+
// If still too large after quality reduction, resize further
|
|
50
|
+
if (jpegBuffer.length > opts.maxSizeBytes) {
|
|
51
|
+
const scaleFactor = Math.sqrt(opts.maxSizeBytes / jpegBuffer.length) * 0.9;
|
|
52
|
+
const smallerWidth = Math.round(newWidth * scaleFactor);
|
|
53
|
+
const smallerHeight = Math.round(newHeight * scaleFactor);
|
|
54
|
+
image.resize({ w: smallerWidth, h: smallerHeight });
|
|
55
|
+
jpegBuffer = await image.getBuffer("image/jpeg", { quality: 50 });
|
|
56
|
+
}
|
|
34
57
|
return {
|
|
35
58
|
data: jpegBuffer.toString("base64"),
|
|
36
59
|
mimeType: "image/jpeg",
|
package/dist/utils/image.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"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"}
|