Hello! Yes Ren'Py doesn't replace variable between brackets everywhere, so that's why your example only work when the player input literally [player_name].
I don't have a way to test right now, but simply defining MC_Name = player_name rather than MC_Name = "[player_name]" should work. Let me know if it does! :)