BetterCMS gives developers, marketers, and AI assistants one structured platform to build, manage, publish, and grow modern websites.
This listing identifies a third-party MCP server. MCPBundles is not affiliated with, sponsored by, or endorsed by the service or its operator unless stated on this page.
This server may ask you to sign in when your AI client connects.
Last probed Nov 3, 2026 · mcp.bettercms.ai
141tools discovered
For AI agents — MCPBundles Directory API
For MCP client apps (human connect):
MCP connect URL: https://mcp.bettercms.ai/mcp
Skill page: https://www.mcpbundles.com/skills/bettercms-mcp-c8cb24547f
Explore capabilities (141)
read 10
write 15
Showing 25 of 141
Showing 25 of 141 tools from the public preview. Connect the server to inspect the full live tool list.
Create5
Get5
List5
Update3
Add2
Delete2
Set2
Other capabilities1
Get Project
read
get_project
Get a project's info — id, name, slug, subdomain, and its live URL (https://<handle>.bettercms.site). Use it to tell the user where their site is published / link the result. `brandKit` is the project's brand kit: colors, typography, radius and any typeScale/spacing/elevation/motion/graphics. It is edited in the BetterCMS dashboard AND by set_brand_assets and set_brand_graphics below; every write is a version a person can restore. ASSETS: point `mark`/`favicon` at a media asset OF THIS PROJECT b
Description may be truncated on the public preview.
Get Project — Get a project's info — id, name, slug, subdomain, and its live URL (https://<handle>.bettercms.site). Use it to tell the user where their site is published / link the result. `brandKit` is the project's brand kit: colors, typography, radius and any typeScale/spacing/elevation/motion/graphics. It is edited in the BetterCMS dashboard AND by set_brand_assets and set_brand_graphics below; every write is a version a person can restore. ASSETS: point `mark`/`favicon` at a media asset OF THIS PROJECT b
List Projects — List the projects this key can see — id, name, slug, and live URL each. A project-scoped key sees only its own project; a workspace-level key sees every project in the workspace. Use it to find a project you created earlier, or to confirm which sites exist before acting.
Create Project — Create a NEW project (site) in the connected workspace. YOU MUST ASK THE USER WHICH TECHNOLOGY TO BUILD WITH BEFORE CALLING THIS — offer: 1. astro (recommended default), 2. next, 3. react-ts (React + TypeScript), 4. other (headless: content and API only, they bring their own frontend). Do not pick for them; the call is refused without an answer. Sites cannot be created as plain HTML/CSS — every project is backed by one of these starters, which is what makes its content editable in the CMS. Pass
Update Project — Update the connected project's settings — rename it, change its slug/description, SEO defaults, visibility, or `presentation`. Only the provided fields change. `presentation` themes the platform's OWN renderer — the one that serves a site built in the CMS with no deployed build, and that previews structural drafts on every site. Without it that renderer falls back to a generic 768px document theme that looks like a blog, not like this brand. It is the same closed set of knobs as bcms-presentatio
Set Binding Mode — Switch this project between the two binding resolvers, from the NEXT release on. `declaredBindings: true` makes the annotator trust the template's own data-bcms-field / data-bcms-props and never guess from rendered text — the durable state; `false` returns to text-matching, which works once (at import, when the CMS values equal the built copy) and breaks the first time anyone edits a value. Call it ONLY after every page's copy is declared in the template: undeclared fields stop being editable. T
Get your MCP into directories
A working endpoint is step one. Directory coverage is the coordinated launch across ChatGPT, Claude, Cursor, the MCP Registry, and community indexes.
BetterCMS gives developers, marketers, and AI assistants one structured platform to build, manage, publish, and grow modern websites.
How do I connect BetterCMS to my AI agent?
Use the MCP endpoint listed on this page in your MCP client configuration. One-click install pills support Claude, Cursor, VS Code, and other hosts. Copy the remote MCP URL if your client needs a manual entry.
How many tools does BetterCMS provide?
Operate this server?
Request removal if you do not want BetterCMS listed here, or claim the listing if you want to manage it on MCPBundles.
Operate BetterCMS?
This server appears in the MCPBundles directory. Verify you operate it to take over the listing — name, description, logo, contact email, and skill content. We email a 6-digit code to a maintainer address your server publishes in /.well-known/security.txt or /.well-known/mcpbundles.json. Free, takes about a minute.
MCPBundles publishes this directory for MCP discovery. Except where we host or operate an offering, third-party services run under their own terms. Product and company names on this page are used in a descriptive, identifying way (including under nominative fair use where applicable); they remain the property of their owners. Nothing here grants you rights in those marks, and nothing here is an offer to sell a third party's services. Terms · Request removal
More in developer tools
Other MCP servers in this category from the directory index
Submit Conversion Receipt — Hand BetterCMS the codemod's own account of a run, so the meter can say WHY a path is undeclared. Submit the receipt `npx @bettercms-ai/convert` wrote (`--receipt out.json`) for the SAME `briefDigest` get_conversion_brief { complete: true } returned: `{ briefDigest, receipt }`, where the receipt carries `paths: { declared, rewritten, alreadyDeclared, pending[{ route, scope, path, kind, file, reason, message, fix }] }`. `paths.declared` must equal rewritten + alreadyDeclared + pending.length, and
Create Template — Save a project (or one page) as a REUSABLE template — a frozen snapshot of its content models, pages, entries, components, and forms (secrets/domains/analytics excluded). Later seed a new project from it with create_project { templateId }. Set visibility 'public' to list it in the cross-workspace gallery. Returns the new template's id.
List Templates — List your workspace's saved templates (id, name, scope, visibility). Use a template's id as create_project { templateId } to seed a new project from it.
List Content Models — List the content models (reusable schemas for dynamic collections like Blog/Products) in the connected project. A project-scoped connection sees its own project's models plus workspace-level ones, which it can read but not change.
Get Content Model — Get one content model by id INCLUDING its full field schema (keys, types, nested group/repeater children). Read this before add_field so you know the existing keys.
Create Content Model — Create a content model (reusable schema). `fields` may NEST: type 'group' = one nested object of child fields; type 'repeater' = a repeatable array of child objects. Put child fields in each group/repeater's own `fields` (any depth). Set kind:'block' to create a BLOCK type instead of a collection — a block holds no entries of its own and exists only to be stacked inside another model's `modular` field, so create your blocks first, then the model whose modular field lists their slugs. 🔴 A field o
Add Field — Append ONE field to a content model (additive — never overwrites). For a NESTED zone set type 'group'/'repeater' and provide its child `fields`. Pass `after` to insert it after an existing field instead of at the end; `ui`, `helpText`, `showIf`, `placement` and `fieldsetId` declare how it presents in the editor — read them back with get_content_model. 🔴 A field of type 'text' is created as RICH TEXT unless you send `richText: false` on it. Send `richText: false` for every value that is not prose
Update Content Model — Rename a content model, edit its description/slug/urlPattern, or set its `fieldsets`. Never touches `fields`: use add_field to extend the schema. Provide modelId plus what to change. `fieldsets` REPLACES the list (send null to drop them all); then put a field in one with add_field's `fieldsetId`. `urlPattern` is the collection's entry URL, e.g. '/blog/:slug' (null clears it). `fieldsets` are the model's editor cards: [{id, name, description?}], at most 30, ids unique, order = array index. A fiel
Delete Content Model — Delete a content model and its entries (soft delete — reversible). Provide modelId.
Get Content Types — Get the auto-generated TypeScript types for the connected project's content models/pages. Pull these to write correctly-typed code against the BetterCMS delivery SDK in the user's site.
List Pages — List the pages in the connected project — each with its full field schema, pageType (singleton|dynamic), and status.
Get Page — Get one page by id INCLUDING its field schema (keys/types/nested fields) and pageType. Read this before set_page_content or add_page_field.
Create Page — Create a page. Two ways to give it content, and they are independent. (1) `blockJson` — the page's VISUAL composition, an array of blocks; this is how you build a components-first page, by placing `component` blocks that reference published components. (2) `fields` (+ `data` for a singleton) — a typed schema whose values a site's own code reads. A CMS-hosted marketing page wants blockJson. pageType 'singleton' (exactly one entry — Home/About/Contact) or 'dynamic' (many — Blog/Products); a dynami
Add Page Field — Append ONE field to a page's schema (additive). For a NESTED zone set type 'group'/'repeater' with its child `fields`. Pass `after` to insert it after an existing field instead of at the end; `ui`, `helpText` and `showIf` declare how it presents in the editor — read them back with get_page.
Set Page Content — Set a page's field VALUES (the actual content). For a SINGLETON page (Home/About) this creates/updates its one entry — call it again to edit. `data` is keyed by field key: a 'group' value is an object, a 'repeater' value is an array of objects, an 'image' value is an asset URL. status 'draft' or 'published'.
Update Page — Edit a page: title, slug, SEO metaTitle/metaDescription, structured data (`schemaType`, `schema`), publish status (draft|published), and `blockJson` (its block composition — passing it REPLACES the whole array, so read get_page first). A `blockJson` that swaps a component block to another component comes back with `warnings` (COMPONENT_SWAP_DROPS_OVERRIDES) naming the overrides the new component does not render; they stay on the block, so swapping back restores them. It does NOT change the field
Delete Page — Delete a page and its content (soft delete — reversible). Provide pageId.
List Content Entries — List content entries (including drafts) filtered by model and/or page. Use it to SEE existing content before editing. A project-scoped connection sees its own project's entries plus workspace-level ones, which it can read but not change.
Get Content Entry — Get one content entry by id INCLUDING its `data` (field values), even when draft.
Create Content Entry — Create a content entry (a row in a dynamic collection) under a content model. Pass its field VALUES in `data`, keyed by field key — INCLUDE ALL REQUIRED FIELDS (a group value is an object, a repeater value is an array of objects, an image value is an asset url). New entries are drafts; take one live later with update_content_entry status:'published'. Optionally link it to a page with pageId. Read get_content_model first to see the field keys and which are required.
Showing the first 25 tools — full list and schemas: Directory API.
MCPBundles probed 141 tools on the live server. The tool list on this page reflects what was discovered at the last refresh — connect your client to see the full set available to your session.
What authentication does BetterCMS require?
BetterCMS may require signing in to the provider before tools can run. Connect through MCPBundles or your MCP client and complete any provider login when prompted.
Don't want this listed?
Request removal from the MCPBundles directory. We stop publishing this listing on mcpbundles.com.
MCPBundles is an independent platform built on the open Model Context Protocol standard. MCPBundles is not affiliated with, sponsored by, or endorsed by Anthropic PBC.