remote_macos_mouse_move
Control a remote macOS machine by moving the mouse cursor to specified coordinates. Adjusts positions automatically using screen scaling for precision.
Instructions
Move the mouse cursor to specified coordinates on a remote MacOs machine, with automatic coordinate scaling. Uses environment variables for connection details.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| source_height | No | Height of the reference screen for coordinate scaling | |
| source_width | No | Width of the reference screen for coordinate scaling | |
| x | Yes | X coordinate for mouse position (in source dimensions) | |
| y | Yes | Y coordinate for mouse position (in source dimensions) |
Implementation Reference
- src/action_handlers.py:421-484 (handler)The handler function that implements the remote MacOS mouse move tool. It connects to the VNC server using environment variables, scales the provided source coordinates to target screen dimensions, sends a pointer event to move the mouse, and returns a text summary of the action including success status and scaling info.def handle_remote_macos_mouse_move(arguments: dict[str, Any]) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]: """Move the mouse cursor on a remote MacOs machine.""" # Use environment variables host = MACOS_HOST port = MACOS_PORT password = MACOS_PASSWORD username = MACOS_USERNAME encryption = VNC_ENCRYPTION # Get required parameters from arguments x = arguments.get("x") y = arguments.get("y") source_width = int(arguments.get("source_width", 1366)) source_height = int(arguments.get("source_height", 768)) if x is None or y is None: raise ValueError("x and y coordinates are required") # Ensure source dimensions are positive if source_width <= 0 or source_height <= 0: raise ValueError("Source dimensions must be positive values") # Initialize VNC client vnc = VNCClient(host=host, port=port, password=password, username=username, encryption=encryption) # Connect to remote MacOs machine success, error_message = vnc.connect() if not success: error_msg = f"Failed to connect to remote MacOs machine at {host}:{port}. {error_message}" return [types.TextContent(type="text", text=error_msg)] try: # Get target screen dimensions target_width = vnc.width target_height = vnc.height # Scale coordinates scaled_x = int((x / source_width) * target_width) scaled_y = int((y / source_height) * target_height) # Ensure coordinates are within the screen bounds scaled_x = max(0, min(scaled_x, target_width - 1)) scaled_y = max(0, min(scaled_y, target_height - 1)) # Move mouse pointer (button_mask=0 means no buttons are pressed) result = vnc.send_pointer_event(scaled_x, scaled_y, 0) # Prepare the response with useful details scale_factors = { "x": target_width / source_width, "y": target_height / source_height } return [types.TextContent( type="text", text=f"""Mouse move from source ({x}, {y}) to target ({scaled_x}, {scaled_y}) {'succeeded' if result else 'failed'} Source dimensions: {source_width}x{source_height} Target dimensions: {target_width}x{target_height} Scale factors: {scale_factors['x']:.4f}x, {scale_factors['y']:.4f}y""" )] finally: # Close VNC connection vnc.close()
- The input schema definition for the remote_macos_mouse_move tool, specifying required x,y coordinates and optional source dimensions for scaling.types.Tool( name="remote_macos_mouse_move", description="Move the mouse cursor to specified coordinates on a remote MacOs machine, with automatic coordinate scaling. Uses environment variables for connection details.", inputSchema={ "type": "object", "properties": { "x": {"type": "integer", "description": "X coordinate for mouse position (in source dimensions)"}, "y": {"type": "integer", "description": "Y coordinate for mouse position (in source dimensions)"}, "source_width": {"type": "integer", "description": "Width of the reference screen for coordinate scaling", "default": 1366}, "source_height": {"type": "integer", "description": "Height of the reference screen for coordinate scaling", "default": 768} }, "required": ["x", "y"] }, ),
- src/mcp_remote_macos_use/server.py:271-272 (registration)The dispatch/registration in the tool call handler that routes calls to remote_macos_mouse_move to the appropriate handler function.elif name == "remote_macos_mouse_move": return handle_remote_macos_mouse_move(arguments)
- src/mcp_remote_macos_use/server.py:37-37 (registration)Import of the handler function in the server module.handle_remote_macos_mouse_move,