You're not thinking this through; there has to be a trust anchor somewhere, be it a config file with a known-good server key, or a CA signature, or a "this is the first time I've seen this pubkey, accept it forever?" dialog.
In your protocol, any server can read that message and encrypt a valid-looking response.
Oops. I deleted my response because I saw you replied and addressed the authentication issue. Apparently I wasn't fast enough. :)
The trust anchor is the --provider-key command line parameter. Any server that has the corresponding private key can encrypt a valid response. (and to be clear, its not my protocol.)
In your protocol, any server can read that message and encrypt a valid-looking response.