🚧 this is the first vibe-coded draft of an MCP server prototype for Wagtail. Proceed with caution! Until this is ready, you might prefer to use wagtail-cli. See CMS with AI, not AI CMS: Wagtail 8.0’s new API for context.
A Model Context Protocol (MCP) server for Wagtail, exposing the Wagtail v3 API as model-callable tools. Point a Claude/OpenCode/Hermes-style agent at a Wagtail site and let it read content, create pages, upload images, publish and revert — through the same authenticated operations the v3 API provides.
- 60 curated tools covering the full shipped v3 operation surface: pages
(incl. revisions, move/copy/revert, aliases, translations), images,
documents, snippets, redirects, sites and locales — plus
api_call/api_schema, an OpenAPI-backed escape hatch for anything else. - In-process dispatch — tools call the mounted v3 API inside the process via Django's test client, so auth, permissions, validation and action logic are the real thing. No network hop, no half-reimplemented client.
- Bearer-token auth with Wagtail
APIToken; the v3 API stays the single authority for authorization. - Stateless Streamable HTTP — a Django view that works under WSGI and ASGI, with no extra processes.
wagtail-mcp is a Django app: add wagtail.api.v3 and wagtail_mcp, mount
/api/v3/ and /mcp/, create an API token, point a client at /mcp/. See the
full getting started.
Point a remote MCP client at the endpoint:
{
"mcp": {
"wagtail": {
"type": "remote",
"url": "http://localhost:8000/mcp/",
"headers": {
"Authorization": "Bearer <your-api-token>",
"Content-Type": "application/json"
}
}
}
}The repo ships demo/, a Wagtail site that mounts both the API and the MCP
endpoint and seeds a demo token:
just demoThen use demo/'s token (see demo/README.md) in your client config. The
editorial scenario test is a complete
worked example an agent can follow.
- Getting started
- Tool reference — all 60 tools, grouped by resource.
- Configuration — settings, deployment, token security.
- Escape hatch —
api_call/api_schema. - Limitations
- API feedback
This package supports Wagtail 8.0 and up (the v3 API preview), Django 5.2/6.0, and the compatible Python versions.
Install dependencies, run the tests, lint, and run the demo (asgiref.sync
handles the transport, so just test and just lint are the normal gates):
just install
just test
just lint
just demoSee CONTRIBUTING.md for the full contribution workflow, including the agent-behavior eval suite.