1. Currently only localhost is supported. I could see a benefit of an option of using a different IP address, but right now I don't know how best to implement that, because I don't know much about javascript and css. (I guess it could be a little advanced options box on the web page, and then the the javascript code could read the contents of that box. If you know how to implement it while keeping the UI simple and clean, go ahead.)
2. Source:
https://github.com/arpruss/blockly-minecraft . Look at generators/javascript/source/*, generators/python/minecraft.js and blocks/minecraft.js, and minecraft/* . If you make changes, run build.py. (Note: build.py pulls stuff in generators/javascript/source/* and creates generators/minecraft.js)
3. If you just want to generate python code, it's very easy to add new blocks. But if you want to produce javascript code that can run in the browser, it is very difficult to add any blocks that receive data (e.g., player.getPos() or world.getBlock()). It is easy to add code for blocks that don't receive data (e.g., player.setPos(), world.spawnEntity()).
The technical reason for this is that the WebSockets API is non-blocking, so it requires a callback. But it is difficult to implement non-blocking code in Blockly while keeping a simple linear structure. If you know enough about Blockly/javascript to solve this problem, tell me. Thus, I am currently limited to supporting only those commands that don't require receiving data. (I do use callbacks to initialize the Minecraft connection, and at that time I fetch the player position and angle, which I then use to initialize the turtle. But that's one-time magic, rather than something tied to a paticular block.)
In any case, I suspect that once one has done everything that the Blockly interface currently supports, it's time to move on to a text-based language. :-)