Why
I wanted publishing to feel less like a pile of terminal steps and more like a reliable button. The site already builds into static files. The missing piece was a narrow way to run the same careful path every time.
Shape
The MCP publisher has four jobs: check status, build the site, run a dry-run, and publish the real site. The dry-run is the default, so the safe move happens first. Live publishing needs an exact confirmation phrase.
Secrets
Credentials stay outside the repo. The publisher only reports whether the needed variable names are present. It does not print the values. That is the whole point: make the path easier without making it looser.
Test
We tried it on the real site. Status worked, the dry-run uploaded nothing, then one command published the site and verified the live page afterward. Simple tools are best when they leave less to remember.