Господи, в который раз-то уже?
Вообще-то надо указывать конкретный язык приложения, поскольку реализации паттерна отличаются весьма значительно.
Для асинхронного клиент-серверного НТТР реализация будет такая:
Самое главное, что надо понимать про эмвэцэ.
Это не 50% твоего приложения. И даже не 10.
Это тонюсенькая прослоечка, которая обслуживает только один канал общения твоего приложения с внешним миром - браузер. Есть и другие каналы, их много.
Исходя из этого, получается что
- Модель входит в эту тройку чисто номинально. Поскольку это и есть все твое приложение, только без интерфейса. И к модели обращаются не только веб контроллеры, но и консольные скрипты, REST контроллеры, сервер очередей и прочее. Отсюда становится понятно, что "модель - это запросы в БД в основном-то" - это дикая чушь.
- Контроллер - это, как правильно нарисовано на картинке в соседнем ответе - это такая официантка, подай-принеси. Принять запрос от НТТР клиента, преобразовать в понятный для модели вид, запросить модель, получить ответ, вернуть что-нибудь клиенту. Также может заниматься чисто браузерными заморочками типа заголовков, авторизации и пр.
- Вью - если модель вернула что-то для показа клиенту, то вью это превращает в понятный для браузера вид.
- Роутер - не упоминается, но незримо присутствует. Преобразует НТТР адреса в вызовы контроллеров.
Традиционно рекомендую
доклад Дмитиря Елисеева с ПХП Раша 2019, там все раскладывается по полочкам.