Model View Controller (MVC) is a software design template that separates a system into three main components: the model, the view, and the controller. The model manages the data logic and rules of the application. The view displays the user interface. The controller handles communication between the user and model by accepting input and converting it to commands for the model or view. This separation of concerns promotes code reuse and maintainability.