Thanks for the responses! I checked with the developer at the client side, and he does not want to add HID (host or device), so the only option is to work within MSD. He is open to customize the MSD stack as long as it's not too complicated. So I will have a look at the SETUP commands option.
Writing files to communicate should be OK, but I'm worried if there will be issues regarding arbitration of the memory. Wouldn't there be problems at the device end if he allows the memory to be read/written by the host(me) and also simultaneously tries to read/write files into his memory? Maybe we can think of a protocol to avoid conflicts though..