The PLC can do MQTT and OPC-UA, but I'd very much prefer to use the exposed data layer / API instead of having the PLC runtime waste cycles deciding when to send what.
Also, this way when I update the PLC code, I don't need to also remember to update the relevant comms details.
It seems simplest to me to let the PLC do PLC things, and let the host IPC OS do comms with modern languages.