You can recover tmcpr files (only the recording, no meta data) using this python script.
The script takes any number of .tmcpr files and converts them to .mcpr files with the same name.
You didn't state your OS so you'll have to find out how to run a python program from the command line yourself.
On Windows it should be something along these lines: python recover.py mybrokenreplay.tmcpr
On Unix-like systems this should work: ./recover.py mybrokenreplay.tmcpr
As for the problem itself: Do you have a hard drive or a SSD? A slow or a fast one? If you wait in the main menu after leaving the server for some time, does it still not convert it? Game log?
Alternatively to @User10 's .tmcpr recovery script, you can use my modified version of it.
This script allows you to specify a server name for the output replay file, and also make the output file a server recording.
Unlike johni's script, it also compresses the finished .mcpr files to reduce filesize a lot.
For more information, execute python recover.py -h
in the command line.
python recover.py mybrokenreplay.tmcpr
./recover.py mybrokenreplay.tmcpr
python recover.py -h
in the command line.