I was not aware of MQTT before your post. I've downloaded their specification (MQTT-SN), and it seems the protocol is very clunky. They waste space in every byte they send, requires the gateway to store an unlimited amount of data for the nodes -- forget using a moteino for the GW, and they expect very precise timing between nodes.
Typically, instead of storing a message for a sleeping node, and react when it wakes up, it's up to the node to tell how long it's going to sleep, and the expectation is that both the GW and node have the same clock, so the GW consider the node lost if it can't send the pending msg to the node after the sleeping time. If the node wake up early (interruption, shorter clock, brown out/watchdog), then it has to first ping the GW, pop all the pending messages, and then send the interruption message.
I think you can probably find a library that could compile on Arduino, but it means that the entry point on your wireless network will have to be large.
Depending on the complexity of your intend, you better learn from scratch, and make you simple installation simple, you'll probably get more internal reward from this.