← All posts

July 5, 2026

I Built a Self-Updating Website with Claude + MCP — Full Hostinger Setup

claudemcphostingervpsai-agentsautomationself-hosting

You paste a YouTube link into Claude. Thirty seconds later there's a full blog post — thumbnail, embedded video, tags, summary, written breakdown — live on your website. No dashboard, no CMS login, no copy-paste. That's what this build does, and this post is the write-up of the video where I set the whole thing up from zero.

The punchline: this very post was published exactly that way. Claude read the video, wrote this, and pushed it to promptengineer48.com through the same MCP server the video teaches you to build.

What it actually is

Three parts, one VPS:

  1. A website hosted on a Hostinger KVM2 VPS, served by Nginx.
  2. A custom MCP server running on that same VPS as a background service.
  3. Claude (Claude Code or the desktop app) acting as the MCP client.

When you tell Claude to post a video to the site, it reads the tool descriptions exposed by the MCP server, pulls the video's metadata and transcript with yt-dlp, writes the post, and calls publish_post. The server rebuilds the site and the post is live.

The MCP server exposes four tools:

Tool What it does
list_posts List every published post (slug, title, date)
publish_post Create or overwrite a post and rebuild the site
delete_post Remove a post and rebuild
upload_image Push an image into /assets for use in posts

That's the entire write surface of the website, and Claude can drive all of it.

The security part you shouldn't skip

The MCP endpoint is public HTTPS, so it's protected by a secret token — a random 32-byte hex value baked into the URL. No token, no writes. The publish server also runs as its own systemd service on its own port, completely separate from the production site, and restarts itself if it crashes. Nginx serves the blog at the root and routes only /mcp traffic to the publish server.

The build, end to end

The video walks the full setup from a blank VPS:

One practical tip from the video: if you have two MCP servers connected (say, a production site and a demo site), tell Claude explicitly which one to publish to. Tool names can overlap, and you don't want a test post landing on your real domain.

Why this pattern matters

The blog is just the demo. The real unlock is the pattern: once Claude can call your own server, it can run almost any part of your site. An MCP server is a thin Python file exposing whatever functions you want Claude to have — regenerate pages, clear caches, manage products, rotate images. You define the tools; Claude figures out when and how to call them from plain English.

For anyone running a personal brand alongside a YouTube channel, this turns "I should really update the website" into a one-line message. Hand Claude a link, and the site updates itself.

Stack

Piece Choice
VPS Hostinger KVM2 (Ubuntu)
Web server Nginx
MCP server Custom Python, systemd service
TLS Let's Encrypt via certbot
Client Claude Code / Claude desktop
Video data yt-dlp
Process manager (site) PM2

Code is open source: github.com/PromptEngineer48/Hostinger_MCP_Website

Verdict

This is the cheapest self-updating website you can build today: one small VPS, one Python file, one token, and Claude does the publishing. The full walkthrough — from picking the plan to watching Claude push a post live — is in the video above. And if you're reading this on promptengineer48.com, you're looking at the proof.

▶ Subscribe on YouTube