Model-view-presenter (MVP) is an architectural pattern used for building user interfaces. It derives from model-view-controller (MVC). MVP separates an application into three main components: the model, the view, and the presenter. The presenter acts as a mediator between the model and the view. It retrieves data from models, prepares it for the view to display, and handles user interactions with the view. This allows for separation of concerns where each component has a single responsibility. MVP makes applications easier to maintain, test, and scale compared to alternatives like MVC.