How can I know what is the next protocol in MPLS header?
You can't. MPLS doesn't carry a 'next-protocol' header. It doesn't have to.
MPLS is used to carry a certain type of payload, commonly either Ethernet or plain IP. The kind of payload is agreed upon by the endpoints, so there's no ambiguity.
A next-protocol header could indicate different types of payloads, so you could for instance run Ethernet and Fibre Channel concurrently on the same label path. MPLS doesn't do that - instead, you'd use multiple labels for different payload types.
You can of course run dual-stack IP on the same label as the first nibble of the IP header (=MPLS payload) is the version field.