How I Built a Custom MCP Server for My Personal Blog β€” ginbok-web

From Idea to MCP: Connecting AI to My Blog

A few weeks ago, I had a simple but ambitious idea: what if I could talk to my blog the same way I talk to an AI assistant? Not just read posts β€” but list them, create new ones, and publish them, all from within Cursor or Claude, without ever opening a browser.

That idea became ginbok-web β€” a custom Model Context Protocol (MCP) server built specifically for my personal blog at ginbok.com.

What Is MCP, and Why Does It Matter?

MCP (Model Context Protocol) is an open standard introduced by Anthropic that allows AI models to connect with external tools and data sources in a structured, safe, and consistent way. Think of it as a universal plug β€” instead of building custom integrations for every AI tool, you expose your service once as an MCP server and any compatible AI client (Cursor, Claude Desktop, etc.) can use it.

For developers, this is a game-changer. Your AI agent stops being a chatbot and starts becoming a real operator of your systems.

What ginbok-web Can Do

The ginbok-web MCP server exposes three core tools:

  • list-posts β€” Browse published blog posts with filtering by category, tag, language (EN/VI), and pagination.
  • create-post β€” Generate a full bilingual blog post (English + Vietnamese) using AI, with configurable length, tone, and content fidelity.
  • publish-post β€” Push a pre-written post directly to the CMS with full metadata: title, body, author, category, tags, and SEO meta descriptions β€” in both languages.

In fact, this very blog post was written and published entirely through the publish-post tool β€” no browser, no CMS login, just a conversation with Claude.

The Technical Stack

Building the MCP server required a few key decisions:

  • Runtime: Node.js (v20) with the official @modelcontextprotocol/sdk
  • Transport: stdio for local use, HTTP/SSE for remote connections
  • CMS backend: Episerver / Optimizely, connected via REST API
  • Deployment: Hosted as an npx-executable package so any developer can run it instantly

One important lesson: when configuring NVM-based Node.js paths for MCP, make sure to use the correct AppData path. On Windows, NVM for Windows stores versions under AppData\Local\nvm, not AppData\Roaming\nvm β€” a subtle difference that can break your setup.

Why I Built This

The honest answer: I wanted to experience what it feels like when your own tools are AI-native. Not AI-assisted β€” AI-native. Where an agent can autonomously manage your content pipeline, draft posts, check what's already published, and ship new articles, all within a single conversation.

ginbok-web is a small project, but it represents a broader shift: the best developer tools of the next decade won't just have APIs β€” they'll be MCP-ready, designed for agents from day one.

What's Next

I'm planning to extend ginbok-web with:

  • A delete / unpublish tool for content lifecycle management
  • An analytics tool to query post performance
  • A scheduled publish feature so agents can queue content

If you're a developer curious about MCP, I highly recommend building your own server for something you own β€” a blog, a todo app, a personal dashboard. The learning curve is surprisingly gentle, and the payoff β€” having AI as a genuine operator of your systems β€” is genuinely exciting.

The future isn't just AI that answers questions. It's AI that takes action β€” on your behalf, through your own tools.

← Quay lαΊ‘i Blog
How I Built a Custom MCP Server for My Personal Blog β€” ginbok-web - Ginbok