is there a tool to produce addresses given a master public key? I have master public key of my wallet and I want to generate addresses but without using my current wallet. Is there a tool that does that?
Check out libbtc (https://github.com/libbtc/libbtc), once compiled, you get a command line application called bitcointool.

libbtc compiles without external dependencies (compile it with --disable-net if you don't need libevent based p2p network features).

You can then derive a sub-key from your master with something like...

./bitcointool -command hdderive -keypath m/1 -privkey xprv9s21ZrQH143K3C5hLMq2Upsh8mf9Z1p5C4QuXJkiodSSihp324YnWpFfRjvP7gqocJKz4oakVwZn5cUgRYTHtNRvGqU5DU2Gn8MPM9jHvfC


(should also work for public key derivation)

Maybe check the docs: https://github.com/libbtc/libbtc#the-bitcointool-cli