a monte, prima ancora del controller, c'è il framework che si occupa appunto di "incollare" tutto questo e fare in modo, tra l'altro, che venga richiamato il giusto controller (di solito grazie ad un parametro passato dalla url, o dalla url stessa).

Esempio pratico, su un sito MVC basato su un framework diffuso come Codeigniter, se io ho una pagina "news" con l'elenco di tutte le news, avrò

nomesito.com/news

come l'utente digita questo indirizzo, si muove il framework che intercetta l'url e cerca dentro la cartella controller un file chiamato news.php con una classe News.
All'interno della classe News cerca una funzione index() che è quella di default.

per la url
nomesito.com/news/dettaglio_news

cercherà come sopra il controller news ma questa volta, avendo una funzione ben precisa specificata nella url, non cercherà index ma dettaglio_news().

Sarai poi tu, nel costruttore del controller, a richiamare il model che ti serve, le librerie e via dicendo.

I framework di solito gli oggetti essenziali (database, sessioni) te li mettono a disposizione in automatico.

Ma non ho capito.. ti stai facendo un MVC da solo?