MCEdit and NBTEditor are invaluable tools for server repairs. After I started using them, my need for backups dropped from "Really need them" to "Wasting space".
I guess I can briefly explain how I use them for recovery through examples of real crashes I've had to fix.
MCEdit:
When and if my server crashes, I always look in the log to see what causes it:
"java.lang.ClassCastException: net.minecraft.nbt.NBTTagByteArray cannot be cast to net.minecraft.nbt.NBTTagCompound"
Further down in the crash log I can pick up some more useful data:
"Block location: World: (-168,75,54), Chunk: (at 8,4,6 in -11,3; contains blocks -176,0,48 to -161,255,63), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)"
Now the fun part, with this info, I don't have to download the whole world to fix it, saving me time to download and upload to and from the server. In the crash log, I'll see that the affected block is in the region -1,0.
Now I'll go to the server files through FTP and grab the region file inside ../world/region
I'll save that file in a folder on my local machine called ../World Repair/world/region
Next I'll grab the level.dat file in ../world
I'll save this to ../World Repair/world
Thats all the files I need, so I have to download and upload 7MB instead of 1GB. Next I'll start up MCEdit and open the level.dat file, then I'll check the crash log again and use the GOTO option to navigate to the block, which in this case is at -168,75,54. Now the tricky part, it's not always easy to navigate within MCEdit, but eventually I'll mark the right block. Then I simply delete it, thus replacing it with air and save the file. Now it's just a matter of re-uploading the region file (no need to upload the level.dat file) and replace it with the old one.
This repaired a corrupted world that instantly crashed my server over and over, and no players had any rollback of their building or inventory.
NBTExplorer:
So lets say a player have a bugged item/block in his inventory, making that player crash upon joining the server(this will create a crash log locally on his/hers client that will provide useful).
Download the player.dat file from the server ../world/players, then open it with NBTExplorer and navigate into the players inventory.
Here I have found an item named "Doom Hammer". This is not a crashing item, but will do in this example. Let's pretend this item is crashing the client trying to connect, simply click on the icon looking like a cardboard box right under the "Inventory: 12 entries" and then click the red X on the toolbar. Save the file and replace the one on the server with the new one.
Let's take another example. Say I'm stuck in a death loop, as in for some reason my spawn point is below bedrock. So everytime I respawn, I just die again, over and over..
Find the players Spawnpoint in the list and change it
Set it to the right dimension and adjust the X, Y and Z to a safe place. Save the file and replace the old one on the server.
Caution!
Always make a backup of the files you are trying to recover, it is much easier to restart the recovery with the original corrupt file instead of having to recover a failed recovered file.