Skip to content

How this blog works

This site is a folder of Markdown files. There is no CMS. If you can use Git, you can write here.

Clone and preview

git clone https://github.com/namndinh/blog.git
cd blog
uv sync
uv run mkdocs serve

Open http://127.0.0.1:8000. Saving a Markdown file reloads the page.

Add a post

  1. Create docs/writing/posts/your-slug.md.
  2. Use this frontmatter:
---
authors:
  - nam
categories:
  - Notes
comments: false
date: 2026-09-06
description: One or two sentences for the social card, preview, and RSS feed.
draft: false
slug: your-slug
tags:
  - notes
---
  1. Write an # title, then an excerpt, then <!-- more -->, then the rest. The # title and description become the social-card thumbnail when a link is shared (Open Graph / X / Discord).
  2. Link the post from docs/writing/index.md if it should show on the Writing page.
  3. If you are a new author, use your GitHub username in authors. MCP copies name, avatar, and profile URL into docs/writing/.authors.yml. You can also add that file by hand.

Propose a draft through MCP

The hosted MCP server at https://nam-blog-mcp.namnhutdinh.workers.dev/mcp exposes public search, get_details, and list_authors. Create and update require a bearer token Nam issues. Those tools always force draft: true and open a pull request. They do not commit to main.

When a supporting browser has this site open, WebMCP also registers read-only in-page tools: search_posts, get_current_page, navigate_to, and list_recent_posts. Those help a browser agent use the live page. They do not create posts. Writes stay on the remote MCP.

Add this to Cursor if you have a token:

{
  "mcpServers": {
    "nam-blog": {
      "url": "https://nam-blog-mcp.namnhutdinh.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer blog_…"
      }
    }
  }
}

Send it back

git checkout -b your-slug
git add docs/writing/posts/your-slug.md
git commit -m "Add post: your slug"
git push -u origin HEAD

Open a pull request against main. Every page also has Edit this page, which opens the file on GitHub.

What you do not need to touch

mkdocs.yml, the Material theme, and overrides/ are the site engine. Posts live in docs/. Leave the engine alone unless you are changing the site itself.