I recommend Shredder and Hiarcs Chess Explorer. Both Graphical User Interfaces (GUIs) support UCI_LimitStrength, which allows you to calibrate chess engines to your playing strength. You may adjust playing strength manually by moving an ELO slider control or entering an ELO rating number. Or you may configure the GUI to adjust playing strength automatically. If you configure the GUI to automatically match your playing strength, it will set the engine’s ELO rating based on your win / draw / loss record against it.
In addition to supporting UCI_LimitStrength, the Shredder GUI includes many features for running engine matches and tournaments.
Hiarcs Chess Explorer GUI
I do not recommend Fritz because it does not support UCI_LimitStrength. However, because Fritz is the most popular GUI, I will pass along this word of warning to those intending to use it to play against MadChess at reduced strength. Fritz provides many methods to play against a weakened chess engine (Rated Game, Sparring, Friend Mode, and Handicap and Fun), none of which are enabled for UCI engines like MadChess. All of these methods use a proprietary, non-UCI Fritz engine, no matter which engine is loaded in the GUI.
To play against a MadChess at reduced strength, enable the LimitStrength parameter and set the ELO parameter to a value near your rating. This is less intuitive than the slider control or “match my playing strength” features of the Shredder and Hiarcs Chess Explorer GUIs, but it’s the only way to manually set playing strength in the Fritz GUI. Do not use the Rated Game, Sparring, Friend Mode, or Handicap and Fun features. For more information, see the User Guide.
A few programmers have written graphical interfaces for playing chess and have generously provided them free of charge. Below is a list of the most popular free chess GUIs. In my opinion, Cute Chess is the best. It has a simple interface yet provides many features for playing against engines, running engine tournaments, and saving games in a database.