All you need to do is have an equipped, unequipped, activated, and remote event. While the tool is equipped, raycast from the mouse to see the 3D space of where the mouse is pointing to, and move an object to that hit location. You’ll want to use PivotTo and will also likely want to give an offset from the hit point, based on the Y axis size of the entire object. The unequip event will simply hide the preview and end the follow loop. The activated event will be to place the object, in which case it will remove the preview, stop the loop, and then fire a remote to the server to place the object at that position. The server will then remove the tool and place a clone of the object there.
Now there are some things you can do to make it look nicer and prevent certain types of exploiting, but this is the minimum. Also, I would recommend checking for object collision with spatial queries to make sure that an object isn’t colliding with another. You should do that on both the client and server’s end, to make sure that the client isn’t exploiting.