Model-view-controller (MVC) is a software architectural pattern that separates application logic from user interface. It is commonly used for web applications and mobile applications. MVC promotes separation of concerns, where the model manages application data and logic, the view manages presentation, and the controller manages input and interaction between model and view. MVC makes applications easier to maintain and extend through loose coupling of these components.