This solution assumes that you are already getting a mouse event when the user wants to drop the block. If that is not the case, let me know and I can try to help there as well. If however that is the case then the below code converts the mouse x and y position to workspace coordinates.
// Gets the x and y position of the cursor relative to the workspace's parent svg element.
var mouseXY = Blockly.utils.mouseToSvg(_e,
ws.getParentSvg(),
ws.getInverseScreenCTM()
);
// Gets where the visible workspace starts in relation to the workspace's parent svg element.
var absoluteMetrics = ws.getMetricsManager().getAbsoluteMetrics();
// In workspace coordinates 0,0 is where the visible workspace starts.
mouseXY.x -= absoluteMetrics.left;
mouseXY.y -= absoluteMetrics.top;
// Takes into account if the workspace is scrolled.
mouseXY.x -= ws.scrollX;
mouseXY.y -= ws.scrollY;
// Takes into account if the workspace is zoomed in or not.
mouseXY.x /= ws.scale;
mouseXY.y /= ws.scale;
I don't know if this image is helpful, but the red line is what we originally get from Blockly.utils.mouseToSvg and the green line is after we take into account absoluteMetrics.left.

Let me know if you have any questions!
Cheers,
Abby