I've been working on this exact same workflow, and would point out that you can use the MBTiles extension for Geoserver to serve the .mbtiles file directly, no need to unpack it. This has worked well for me, I just copy the .mbtiles file onto the server in the Geoserver data directory and then use it as a datastore.
However, here is a little bit of stickiness that I haven't quite resolved: I want to make a non-square raster (a county in the US) and have everything else around it transparent. It seems to be the case that even with the background transparent, TileMill will not create tiles that are completely blank/transparent i.e. are away from the edge of the county and have nothing to display. The result is that at certain zoom levels where these non-existent tiles would be transparent, Geoserver serves them as opaque white. This is my understanding of the issue.
I wrote a little Python script to unpack the .mbtiles file with mbutil and then run through the directories and add blank/transparent tiles where they had been omitted by TileMill. This works fine, but I have had trouble with the repacking method of the mbutil, and thus haven't been able to successfully create a "corrected" .mbtiles file.
All of that to say that at this point, I've used the MBTiles extension in Geoserver and it works well, but for my own needs I'm thinking of just correcting the unpacked tiles and then pulling them in with OpenLayers, as @Ken described.