Lesson 29 of 30, Module 4: Ship It. It publishes to Substack, runs on the web, and anyone can install it.
What you can do after this lesson
A finished system is a set of small decisions you can name. Whatever the service, the same 5 steps add it. A tool should carry the work to the irreversible click and leave that click to a human. Free hosting has named costs, and you fix those first.
The problem we inherited
The draft is finished in Drive and still goes nowhere. You copy it into Substack by hand, which is exactly where you came in.
Code in this lesson
Every block the lesson shows on screen, in the order it appears.
1. Write the plain Python function
2. Put the @mcp line above it
3. Write the one-line docstring
4. Restart Claude Desktop
5. Ask Claude to use it
Downloads
- Module 4 checkpoint (scribe-checkpoint-m4.zip): working code as the module leaves it, so a broken session costs you nothing
- The course GitHub repo: every checkpoint, the README and the full lesson list
Lesson transcript
Where module 4 ended up
When this module began, the draft was finished and it went nowhere. Today Scribe sends it to Substack, runs on the internet, and the last click is yours.
Hello, and welcome to lesson 29 of the MCP Masterclass. This lesson is a quick recap of everything we built in module 4. And we start with our map, as always.
16 lit boxes. Every box on the map is on, for the first time since lesson 1. Publish draft at the bottom of the tool column, the web address under the pipe, and the registry at the very bottom, as a pointer.
Well, there is nothing new in this lesson. 5 points, and then the last lesson of the course.
A new service, the same 5 steps
Point number 1. A whole new service costs the same 5 steps.
That was run number 5, and the list has still not changed by a word.
1. Write the plain Python function
2. Put the @mcp line above it
3. Write the one-line docstring
4. Restart Claude Desktop
5. Ask Claude to use it
Write the plain Python function. Put the @mcp line above it. Write the one line docstring. Restart Claude Desktop. Ask Claude to use it.
Outside the steps, 1 package and 2 settings. That is the whole price of Substack, and reason number 2 from lesson 5 is paid in full. Every app that already talked to Scribe got the new service for free.
Public read, cookie write
Point number 2. The read half is public, and the write half is a password.
Anyone can read the newest posts on any Substack, with no login. Writing a draft into yours needs the substack dot s i d cookie from your browser. It lives in 1 setting, Scribe never prints it, and the write is 3 calls, because Substack wants an author on every draft.
Why you press the button
Point number 3. Scribe carries the draft to the button, and you press it.
Publish draft makes a draft post and hands you the link. It never publishes. May I email everyone you know is not a question a tool gets to answer. And the proof script reads the published field back from Substack, because a happy sentence is not proof.
The pipe or the web address
Point number 4. The pipe and the web address carry the same messages.
The pipe is a command Claude Desktop runs on your machine. The web address is your server listening on its own, anywhere. One call chooses between them, MCP dot run with a transport, a host of all zeros, and a port. And Claude reaches a web address from its own cloud, so the server has to be on the internet first.
What a free host costs you
Point number 5. A free host is free today, and it costs you 2 things.
Render runs Scribe from your GitHub repo, with the key as a secret file and the settings in the environment. It naps after 15 minutes. The nap wipes memory.json, and the address is the password. Both are real, both are named, and both are the first things to fix.
And the registry got its minute. Publish the package, never your address.
What comes next
So what is coming next?
One more lesson, and there is no build in it. It is the sentence from lesson 1, said back to you now that it is true. What you have, what breaks next, and where to go from here.
So where does our map stand at the end of module 4?
16 boxes lit, and none dark. The map is finished. The server is not, and next lesson I tell you where it goes.
Bye now, and I will see you in the next lesson.
What we covered
- A whole new service costs the same 5 steps. Run number 5, the checklist wording unchanged. One package and 2 settings, and reason number 2 from lesson 5 is paid.
- The read half of Substack is public. The write half needs the substack dot s i d cookie, held in 1 setting and never printed. The write is 3 calls, because Substack wants an author on every draft.
- Scribe carries the draft to the button and you press it. Publish draft makes a draft post and hands you the link, and it never publishes. The proof script reads the published field back from Substack.
- The pipe and the web address carry the same messages. The pipe is a command Claude Desktop runs on your machine, and the web address is your server listening on its own. One MCP dot run call chooses between them, and the server has to be on the internet first because Claude reaches it from its own cloud.
- A free host is free today, and it costs you 2 things. Render naps after 15 minutes, the nap wipes memory dot json, and the address is the password. Both are named and both are the first things to fix. For the registry, publish the package and never your address.