You can do this with bitcoind using (experimental) support for watchonly wallets.
The only branch I know of that properly functions right now is sipa's watchonly branch:
https://github.com/sipa/bitcoin/tree/watchonlyYou're looking for the importaddress command.