You can do mcu only, but check the current capabilities of the mcu.
I have done dual 14segment and 4x7segment with various pics and avr0/1 (the pics have more current capabilities, the avr0/1 is not a great idea). 1 mcu, 1 transistor per digit if more than 1 digit, 1 mcu bypass cap, 1 larger cap.
Since I want to limit my part count simply because I hand assemble what I create, I do not use segment resistors and use an npn for ca and pnp for cc- the base current is limited by the amount of current that can be provided by the segment drivers (mcu), which is not an unlimited source. The pins start to drop voltage when current goes up so led voltage also drops, along with some inefficiencies of using transistors, the use of brightness control via some means, and the use of multiplexing (if more than 1 digit) means its harder to get into trouble,
Some examples-
https://goo.gl/photos/rTCwusquFnb8AfQE6https://photos.app.goo.gl/3hO0dZBFzGkW1IZG3The 2 digit 14seg version has a jumper (solder pads) on the board which select if cc/pnp or ca/npn is used (version 2 with qfn package). The software can figure out which is in use. The brightness is controlled by a timer instead of pwm (usually limited to 10bit) as you really need to go beyond 10 bit to do low brightness well (its still pwm, but now using as many bits of timer you can use for the refresh rate wanted).
Probably the cheapest shift register drivers are around $1 in normal 1ea qty (8bit versions), and mcu probably $0.50-$1.00, so if the board space is available and are not doing large quantity, then the shift register approach is probably a better idea (less pins needed, any mcu can be used, so have more choices). Something like a TLC6C598PWR, or one of many other variations is the kind of shift register I'm referring to.
edit- what I have forgotten over time -probably the main reason I use just an mcu alone is all the various shift registers and other more complex drivers seem to be subject to the wind direction- one day they are in stock, a month/year from now, probably not. At least with an mcu only solution, the odds of finding some mcu in stock you are already using is higher, or you can move around the same series if needed (more flash/ram version for example). Its also quite easy to move to an entirely different mcu as the code is quite simple. It also means you have the same solution for any combo of display type in use.