I would request changes before merge. The direction is useful, and the sample/PID cleanup looks mostly aligned, but the current implementation has several correctness and robustness problems in host-controlled parsing, shared state, identity handling, buffer sizing, and test coverage.
This is a static review of the PR diff and discussion; I did not run this on USB hardware.
The PR now uses the next Zephyr sample PID, adding usb-mtp as 0x0012 in the USB PID table and setting the sample PID to 0x0012. That resolves the earlier PID collision directionally. ([GitHub][1])
The public API is small and understandable: USBD_MTP_DEFINE_STORAGE(id, mountpoint, read_only) registers filesystem-backed MTP storage via iterable sections, and the sample demonstrates a RAM-backed FATFS storage mounted at /RAM:. ([GitHub][1])