I'm beginning to play with the MeshDataTool and if, like me, you're having trouble using the MeshDataTool's create_from_surface(...), I have some info!
A MeshInstance whose shape is defined with a PrimitiveMesh (see the MeshInstances' Inspector>>Mesh drop down menu), won't satisfy the MeshDataTool's create_from_surface(...) argument
create_from_surface(...) takes an ArrayMesh as an argument, not a PrimitiveMesh (such as CubeMesh, CylinderMesh, etc, and all the PrimitiveMeshes ) .
So, instead of using a PrimitiveMesh, looks like one must first either create an ArrayMesh or import a mesh from Blender, since an imported mesh is also constructed using the ArrayMesh class.
The debug error I was getting over and over was "E 0:00:01.067 create_from_surface: Condition "p_mesh.is_null()" is true. Returned: ERR_INVALID_PARAMETER" in case anyone else is banging their head against the wall.
A lot of this is resolved in this excellent youtube video on mesh manipulation, where he discusses encountering the same initial problem I was facing and how he resolved it:
Godot - 3D Mesh Manipulation - 01 - Introduction to using C# with the Rider IDE It's in C# but I had no problem following it as a GDScript user.
Hope that helps anyone on a similar path!