This is an interesting question but I'm not sure it's solvable in a general way. MX files are not really definitions but rather low level kernel state data, as I understand.
A potential, limited method would:
Record a "snapshot" of all definitions
load a MX file
Record a second "snapshot" and look for changes
Copy new/changed definitions and export them to a .M file
To even attempt this it would be helpful to to define limitations of the class of data in the .mx files.
For example: are they all
DownValues definitions made in the same (
A rough start of this is shown in answer to: DumpSave for the forgetful