Microchip publish programming specifications for all their PICs. With those you can write code for a master PIC, so that the master PIC programs the target one.
The steps are:-
1). enter programming mode
2) collect some of the .hex file from MMC card
3)send data to target PIC, one instruction at a time
4) Repeat 2 & 3 until you get to the end of the .hex file
5) leave programming mode and reset target.
You still need a PC to get the program onto the master PIC.
I've programmed a target PIC (I used a 10F200) from a master (16F877), but the 16F877 has enough memory to hold its program and the program of the 10F200, so I didn't need a MMC card.
If you are wanting to program a more advanced PIC, you can write a bootloader program, so the PIC reads data from the MMC card then writes that data onto itself. You still need a PC to get the bootloader onto the PIC.