An MCP server for the Automad v2 CMS. Point any MCP-capable AI agent at your site and let it manage pages, media, shared data, config and local themes — with an offline documentation knowledge base that works without a backend at all.
Every tool takes an action and dispatches to a domain router. Live-API actions map to real, live-verified /_api/{controller}/{method} endpoints on your Automad instance.
full bridges a live instance over its JSON API. docs runs standalone — offline knowledge base plus local theme tooling, no instance and no credentials.
Three write modes. Destructive actions return a confirm token bound to an (action, target) pair; the agent has to replay the call to execute it.
Scaffold from a starter kit, build (Composer + npm), run a live dev server in the background with a single call, analyze, validate, derive a normalized field schema, preview writes as a unified diff, generate snippets and blocks.
A bundled Automad v2 knowledge base — template syntax, control structures, navigation, i18n, blocks, theme.json, headless usage — searchable with zero backend.
automad_discover enumerates the whole tool/action surface, or returns one action's input schema on demand, so the full surface doesn't have to sit in context up front.
Tools, action enums, the write-guard's classification and the docs tables are all derived from a single capability registry. Adding a tool is one entry plus one binding.
Generated from the capability registry — this table cannot drift from the code.
| Tool | Actions | What it does |
|---|---|---|
automad_pages | list get create update delete move duplicate publish batch_update trash_list trash_restore trash_permanently_delete trash_clear history history_restore breadcrumbs publication_state recent discard_draft | Manage Automad pages |
automad_media | list upload import delete | Manage Automad media |
automad_shared | get set | Manage site-wide shared data |
automad_config | get set cache_clear cache_purge | Manage Automad configuration |
automad_site | info search health | Inspect and search the site |
automad_docs | list search get | Offline Automad v2 knowledge base |
automad_theme | list install activate uninstall list_installed outdated update update_all scaffold build dev dev_stop dev_status read write files analyze validate schema diff generate | Manage and inspect local themes |
automad_image | list save | Manage image variants via v2 image controllers |
automad_components | data publication_state discard_draft publish | Manage per-page component fields (v2 ComponentController) |
automad_mail | save test reset | Manage Automad mail configuration (v2 MailConfigController) |
automad_system | check_for_update update | Check for and run Automad core updates (v2 SystemController) |
automad_file_meta | edit_info | Edit file metadata (alt text, etc.) via v2 FileController |
automad_discover | list describe | Introspect available tools and actions |
Four MCP resources (automad://themes, automad://themes/{slug}/schema,
automad://docs, automad://docs/{slug}) and five workflow prompts
ship alongside the tools.
The package is not on npm yet — build it from source and point your MCP client at dist/index.js.
git clone https://github.com/cabroe/automad-mcp-server
cd automad-mcp-server
npm install && npm run build
AUTOMAD_MODE=docs node dist/index.js
Docs mode needs no URL, no credentials and no running site: the offline knowledge base, the discovery facade and (with a themes path) the theme tooling all work.
{
"mcpServers": {
"automad": {
"command": "node",
"args": ["<repo>/dist/index.js"],
"env": {
"AUTOMAD_URL": "https://site.example.com",
"AUTOMAD_USER": "admin",
"AUTOMAD_PASS": "••••••",
"AUTOMAD_THEMES_PATH": "<automad>/packages",
"AUTOMAD_WRITE_MODE": "confirm-destructive"
}
}
}
}
Per-editor config paths for Claude Desktop, Claude Code, Cursor, Cline and Zed are in the README.
Set with AUTOMAD_WRITE_MODE. The classification lives in the capability registry, so what the guard enforces is exactly what the tools advertise.
read-onlyOnly the 33 read actions succeed. Everything else returns FORBIDDEN.
confirm-destructive · defaultOrdinary writes run directly. The 30 destructive actions return a confirm token (5-minute TTL, bound to (action, target)) that has to be replayed.
unrestrictedEverything runs immediately. Use it for scripted runs against a site you can restore.
full mode (v1 is not supported) — or nothing at all for docs modeautomad/automad:v2 container