Claude Code is strong for writing and refactoring code. When the project uses a headless CMS, you still need content models, entries, and assets. An MCP-compatible CMS lets Claude do that from the editor so you stay in flow.
Why Claude Code + CMS?
Developers who use Claude Code often build the frontend and the content structure at the same time. Without MCP, you paste API docs into chat, leave the editor for the admin panel, or write one-off scripts. With an MCP server, Claude talks to the CMS directly.
- Stay in the editor - No context switch to the admin panel for routine CMS work.
- Schema-aware - Claude can read collections, field types, and query rules.
- Reproducible - Ask Claude to set up the same structure in another project.
- Faster iteration - One prompt can create a collection, seed entries, and check published results.
Typical request: create a Products collection with name, slug, price, and image, then add sample entries and list published products under a price limit.
What is MCP?
The Model Context Protocol (MCP) is an open standard that lets AI tools discover and call functions on external services. Claude Code connects to an MCP server. The server translates natural-language requests into API calls.
When you add the ElmapiCMS MCP server, Claude gains 40 tools for project locales, collections, fields, entries (including publish and versioning), assets, and webhooks. Claude also reads built-in resources for field types, collections guidance, and query syntax.
You do not explain the API each time. You say what you want. Claude selects tools and parameters.
1. ElmapiCMS
ElmapiCMS is a self-hosted headless CMS on Laravel 13 and React. It needs PHP 8.4+. The official MCP package is @elmapicms/mcp-server (1.2+). One install hosts unlimited projects. Each project has its own API token and project ID, so you can point Claude at different client sites from the same machine.
What ships in 4.0 for AI workflows
- Draft and publish, content versioning, and locales
- Asset library with WebP images, crop tools, and optional S3 direct upload
- Built-in AI tools in the admin plus the official MCP server for Claude Code and Cursor
- Authentication for app users (signup, sign-in, refresh)
- Frontend templates for Next.js, Nuxt, and Astro
- Webhooks, JS SDK, and project API tokens
Why ElmapiCMS fits Claude Code
- Official MCP server - Maintained package with full API coverage.
- 40 tools - Schema, content lifecycle, assets, locales, and webhooks.
- Advanced queries - Filter with 13 operators, OR groups, relation filters, sort, and pagination.
- Built-in resources - Field types, collections guide, and query reference.
- Multi-project - Add one MCP config per project when you need isolation.
- Self-hosted - Data stays on your infrastructure. $149 one-time license.
Pricing: $149 one-time payment. See pricing · Live demo · MCP docs
Best for: Teams that want Claude Code wired to a self-hosted, multi-project CMS with a typed REST API for Next.js, Nuxt, and Astro.
2. NomaCMS
NomaCMS is a managed, AI-native headless CMS. You get structured content, a REST API, a JavaScript SDK, and built-in AI for writing, translation, and editing. Connect Claude Code with the official Noma MCP server without running a CMS server yourself.
Why consider NomaCMS
- Managed cloud with global CDN for assets and no server ops on your side
- AI assistant, inline field actions, and one-click entry translation
- REST API and SDK with predictable shapes for frontends
- MCP server for Claude Code and Cursor (
npx -y @nomacms/mcp-server) - Project auth, webhooks, locales, and team workspaces on paid plans
Pricing: Plans start at $15 per month after a 7-day free trial. See nomacms.com · Start free trial
Best for: Teams that want Claude Code plus a hosted CMS with AI-first workflows and delivery infrastructure included.
Set up ElmapiCMS in Claude Code
You need Node.js 18+, a running ElmapiCMS 4.0 instance, and a project API token. For full agent setup work, grant read, create, update, delete, and admin on a dedicated token.
1. Install the MCP server
npm install -g @elmapicms/mcp-server2. Get your credentials
In the ElmapiCMS admin, open the project, then go to Settings → API Access. Copy the Content API Endpoint (for example https://your-domain.com/api), the Project ID (UUID), and create a project Sanctum token. The project detail page also shows copy-ready Claude Code snippets.
Environment variables: use ELMAPI_BASE_URL for the API root. ELMAPI_API_URL is accepted as an alias. Add ELMAPI_API_KEY and ELMAPI_PROJECT_ID.
3. Add the server in Claude Code
claude mcp add elmapicms \
-e ELMAPI_BASE_URL=https://your-domain.com/api \
-e ELMAPI_API_KEY=your-project-api-token \
-e ELMAPI_PROJECT_ID=your-project-uuid \
-- npx -y @elmapicms/mcp-serverClaude Code discovers the tools automatically. You can then ask it to create collections, manage entries, publish content, run queries, and upload assets in plain language.
Multiple projects
Add a second MCP config when Claude must talk to another project on the same ElmapiCMS install:
claude mcp add elmapicms-blog \
-e ELMAPI_BASE_URL=https://your-domain.com/api \
-e ELMAPI_API_KEY=blog-project-api-token \
-e ELMAPI_PROJECT_ID=blog-project-uuid \
-- npx -y @elmapicms/mcp-serverExample workflow
A common Claude Code session with ElmapiCMS looks like this:
- Model the schema. Ask Claude to create a Blog Posts collection with title, slug, content, excerpt, featured image, and published date.
- Seed content. Ask for a few draft entries with realistic copy, then publish the ones you want live.
- Verify with queries. Ask Claude to list published posts sorted by date, or filter by category.
- Build the frontend. Point Claude at your Next.js, Nuxt, or Astro app and the JS SDK so pages consume the same schema.
Example prompts:
- Create a Products collection with name, slug, price, image, and category. Add validations where they help.
- Add 8 sample products with realistic prices. Keep them as drafts first.
- Publish the products under $50, then list published products sorted by price ascending.
- Upload this image as an asset and attach it to the hero entry.
- Create a webhook that posts to my Next.js revalidation route when entries change.
What you can do
The ElmapiCMS MCP server (1.2+) exposes 40 tools. High-level groups:
- Project - Get project info. Add locales and set the default locale (admin).
- Collections and fields - List, get, create, update, and reorder schema (admin for mutations).
- Content entries - List and filter, get, create, update, patch, publish, unpublish, discard draft, soft-delete, link translations, bulk ops, and version history.
- Assets - List, get, upload, bulk upload, update metadata, and delete.
- Webhooks - CRUD and delivery logs (admin for mutations).
Field names are kebab-case. Richtext writes use markdown strings. Relation writes send UUID or id only, not nested objects from get_entry. Save is not publish: use the publish tools when content must go live.
Built-in resources Claude can read:
- Field Types Reference (
elmapicms://field-types) - Collections Guide (
elmapicms://collections-guide) - Query Reference (
elmapicms://query-reference)
Advanced queries
The list_entries tool supports the full ElmapiCMS query API. Operators include eq, lt, lte, gt, gte, not, like, in, not_in, null, not_null, between, and not_between, plus OR groups and relation filtering.
Published products under $50:
{
"where": {
"price": { "lt": 50 },
"in-stock": true
},
"sort": "price:asc",
"paginate": 12,
"state": "published"
}OR group for guides or featured entries:
{
"where": {
"$or": [
{ "category": { "eq": "guides" } },
{ "featured": { "eq": true } }
]
},
"state": "published"
}Use state: "published" for live reads. Do not rely on a custom status field for publication state.
You describe the filter in English. Claude builds the where object and calls list_entries.
Token abilities
Project tokens control what Claude can do. Match abilities to the job:
- read - List and get collections, entries, assets, webhooks, and logs.
- create - Create entries, upload assets, create webhooks.
- update - Update, publish, unpublish, discard, versions, link translation, asset metadata, update webhooks.
- delete - Delete entries, assets, and webhooks.
- admin - Collections, fields, and locale management.
For schema setup and full content work from Claude Code, use a dedicated token with all five abilities. For read-only checks in a shared environment, use read only.
FAQ
Can I use a headless CMS with Claude Code?
Yes. ElmapiCMS and NomaCMS provide official MCP servers that connect Claude Code to your CMS. Once configured, you can create collections, manage content, run filtered queries, upload assets, and manage webhooks through natural language.
How do I connect ElmapiCMS to Claude Code?
Install @elmapicms/mcp-server (1.2+). Add it with the claude mcp add command, passing ELMAPI_BASE_URL, ELMAPI_API_KEY, and ELMAPI_PROJECT_ID. Use a project Sanctum token from Settings → API Access. ELMAPI_API_URL works as an alias for ELMAPI_BASE_URL.
What is the Model Context Protocol (MCP)?
MCP is an open standard that lets AI tools like Claude Code interact with external systems. Instead of pasting API docs into a prompt, the AI connects to your service and calls its API through defined tools. The ElmapiCMS MCP server exposes 40 tools for collections, fields, entries, assets, locales, and webhooks.
Which headless CMS has MCP support for Claude Code?
ElmapiCMS and NomaCMS offer official MCP servers that work with Claude Code and Cursor. Most other headless CMS platforms do not provide native MCP servers.
How many tools does the ElmapiCMS MCP server provide?
Package 1.2+ provides 40 tools. Coverage includes project locales, collections and fields, content entries with publish and versioning, bulk ops, assets, and webhooks. Built-in resources cover field types, collections, and query syntax. See the MCP Server docs.
How to choose
- Self-hosted multi-project + Claude Code: ElmapiCMS ($149 once, Laravel 13, 40 MCP tools, templates, Authentication).
- Managed AI-native cloud + Claude Code: NomaCMS.
Related reading: MCP-compatible headless CMS, Cursor headless CMS, MCP Server docs, pricing, and live demo.