I can only speak to Cake, and I have nothing good to say about it in terms of MVC. They do not do MVC right. Codeigniter is very much in the same vein. It is not at all weird that you didn't "get" MVC even after having used it for a while.
MVC is simply about properly separating three distinct components of your application's logic: the core of the app, the presentation and the glue necessary to make both work in a real world context.
The core of your app, which contains all the business logic, database interaction, services, beeps and boops that make your app "your app" are the model. The model is not one specific thing in one specific shape, it is whatever is necessary to make your app work the way it does. You only have one "model", which is your app.
The View is used to output in some way what your model does. It's the user interface. It is whatever is necessary to show useful information to the user. This may be a website, it may be a command line interface, it may be a native desktop GUI. You may use all three in your app.
The Controller is simply whatever is left to make that work, mostly the thing that takes user input and directs it to the appropriate place. You may have several different kinds of controllers for different kinds of context, e.g. one that can handle incoming HTTP requests, one that handles command line input and one that is hooked up to GUI events.
What particular shape these individual parts take depends on your app entirely. All three can be sort of their own mini-applications. Any template-prefab framework "model" is made for one generalized case to help you get something up and running quickly; it often is not the optimal form your model should take. You'll have to come up with your own structure for your app, whatever is best suited to build it. Look into OOP principles, SOLID, dependency injection etc. and build your core model according to these guidelines. Then wrap views and controllers around it as necessary.
The point of this separation is simply to make the app maintainable and extendable. The model does not contain anything that is specific to any specific form of input or output. For example, it does not contain any format-specific text (like error messages in HTML format). It does not assume any particular form of input (like HTTP requests). The View conversely does not contain any business logic, its job is just to output. And the controller does not contain any business logic either, its job is only to "input". The reason is simply that both the controller and view are interchangeable, but your app is not.
If you want to use a framework for this, use one that is modular and lets you do whatever you need to do. Zend, Symfony, Laravel and similar component based pick-and-choose frameworks are best suited for this.