Skip to content

v2.0.0 — Plugin-system + 3 production plugins

Choose a tag to compare

@jmrGrav jmrGrav released this 09 May 23:18
· 10 commits to main since this release
v2.0.0
4f0ae72

🚀 What's new

Major release introducing an extensible plugin-system in hugo-mcp, with three production-ready plugins shipped.

Architecture

  • core/plugin_base.pyHugoMcpPlugin abstract contract (3 methods: is_enabled, validate_config, on_page_event)
  • core/plugin_loader.py — Auto-discovery at startup, parallel execution with per-plugin timeout, graceful degradation on failures
  • plugins/_template/ — Skeleton for writing your own plugin in 5 minutes

Bundled plugins

Plugin What it does Mode
indexnow Submit URLs to Bing/Yandex On every event
google-indexing Submit URLs to Google Indexing API v3 (JWT RS256, daily quota tracking) On every event
cloudflare Purge CDN cache full / partial / smart

The cloudflare plugin's smart mode does targeted partial purge on create_page / update_page (canonical URL + sitemap + RSS + listing + home), and full purge_everything on delete_page.

⚠️ Breaking changes

  • purge_cloudflare() removed from main.py. Cache purge handled by plugins/cloudflare/.
  • config/plugins.yaml now gitignored. Use config/plugins.example.yaml as template.

📦 Migration from v1.x

git pull
pip install 'PyJWT[crypto]'
cp config/plugins.example.yaml config/plugins.yaml
# Edit config/plugins.yaml with your keys and zone_id
sudo systemctl daemon-reload && sudo systemctl restart hugo-mcp

Also update /etc/systemd/system/hugo-mcp.service — add /var/lib/hugo-mcp to ReadWritePaths and Google API IP ranges to IPAddressAllow (see tag annotation for full details).

📖 Read more