Here is another approach which you may find useful.
Let $f$ be a monotonic function on a closed and bounded interval $[a, b] $. Then the set $D$ of discontinuities of $f$ on $[a, b] $ is countable.
Let's assume $f$ is increasing on $I$. If $f(a) =f(b) $ then $f$ is constant and therefore continuous so that $D$ is empty. Let's assume $f(a) <f(b) $. Since $f$ is increasing it may possess only jump discontinuities and the right hand limit of $f$ will be greater than its left hand limit at each point of its discontinuity. Let the difference of these limits at point $c$ be called jump at $c$. Consider the set $D_n, n\in\mathbb {N} $ defined by $$D_n=\{x\mid x\in[a, b], \text{ jump of } f\text{ at } x> 1/n\}$$ The sum of jumps of $f$ can't exceed $f(b) - f(a) $ and each jump at points of $D_n$ exceeds $1/n$ and hence the number of points in $D_n$ must be less than $n(f(b) - f(a))$. Thus each $D_n$ is finite and since $D=\cup_{n=1}^{\infty}D_n$ it follows that $D$ is countable.
The extension to open interval $(a, b) $ can be done by noting that $$(a, b) =\bigcup_{i=1}^{\infty} [a+1/n,b-1/n]$$ and the similar argument can be used to deal with $[a, b) $ or $(a, b] $.
The extension to unbounded intervals follows from the fact any unbounded interval including the whole set $\mathbb{R} $ can be written as a countable union of bounded intervals like $$\mathbb{R} =\bigcup_{n=1}^{\infty} [-n, n] $$