Back to Browse

Cmssy MCP Server

Developer ToolsModerate7.8MCP RegistryLocal
Free

Server data from the Official MCP Registry

Headless CMS whose page sections are defined by your own code: pages, records, media, commerce.

About

Headless CMS whose page sections are defined by your own code: pages, records, media, commerce.

Security Report

7.8
Moderate7.8Low Risk

Valid MCP server (1 strong, 1 medium validity signals). 2 known CVEs in dependencies (1 critical, 0 high severity) Package registry verified. Imported from the Official MCP Registry. Trust signals: trusted author (5/5 approved).

3 files analyzed · 3 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

What You'll Need

Set these up before or after installing:

Workspace API token, created in Dashboard > API Tokens. Starts with cs_.Required

Environment variable: CMSSY_API_TOKEN

Id of the workspace the server reads and writes.Optional

Environment variable: CMSSY_WORKSPACE_ID

Base URL of the cmssy backend the workspace lives on.Optional

Environment variable: CMSSY_API_URL

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-cmssy-io-cmssy-mcp": {
      "env": {
        "CMSSY_API_URL": "your-cmssy-api-url-here",
        "CMSSY_API_TOKEN": "your-cmssy-api-token-here",
        "CMSSY_WORKSPACE_ID": "your-cmssy-workspace-id-here"
      },
      "args": [
        "-y",
        "@cmssy/mcp-server"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

@cmssy/mcp-server

MCP server for Cmssy CMS — enables AI-driven page creation and management with i18n support.

Setup

Prerequisites

  1. Your Cmssy backend API URL (e.g. https://api.your-cmssy.com)
  2. An API token (create in Dashboard > API Tokens, starts with cs_)
  3. Your workspace ID

Add to Claude Code

Add to .mcp.json in your project root:

{
  "mcpServers": {
    "cmssy": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cmssy/mcp-server",
        "--token",
        "cs_YOUR_TOKEN",
        "--workspace-id",
        "YOUR_WORKSPACE_ID",
        "--api-url",
        "https://api.your-cmssy.com"
      ]
    }
  }
}

Environment Variables

Instead of CLI args, you can set:

  • CMSSY_API_TOKEN — API token (cs_xxx)
  • CMSSY_WORKSPACE_ID — Workspace ID
  • CMSSY_API_URL — API URL (required, e.g. https://api.your-cmssy.com)

Response shape (write tools)

As of 0.6.0, most write tools accept an optional response arg:

  • response: "minimal" (default) - returns a small ack (~200 bytes): {id, slug, hasUnpublishedChanges, updatedAt} for page tools, {pageId, blockId, hasUnpublishedChanges, updatedAt} for block tools, {id, slug, status, updatedAt} for form tools, {id, slug, updatedAt} for model tools, {id, status, updatedAt} for record tools, {id, orderNumber, status, paymentStatus, fulfillmentStatus, total, balanceDue, currency, updatedAt} for order tools, {id, code, type, value, enabled, updatedAt} for discount tools.
  • response: "full" - returns the full mutation response (pre-0.6 behavior).

Use "full" only if you need the post-write state inline; otherwise issue a follow-up get_page/get_form/get_model/get_record. This keeps agent context windows from being eaten by echoed content.

Tools that accept response: create_page, update_page_blocks, update_page_settings, publish_page, unpublish_page, revert_to_published, update_page_layout, add_block_to_page, update_block_content, remove_block_from_page, create_form, update_form, create_model, update_model, create_record, update_record, create_manual_order, edit_order, update_order_details, mark_order_paid, record_order_payment, refund_order, cancel_order, transition_order_fulfillment, set_order_pipeline_stage, record_order_invoice, create_discount, update_discount, set_discount_enabled.

patch_block_content and the various delete_* / status-only tools (update_form_submission_status, import_records) already returned a compact ack and don't take response.

Available Tools

Read Tools

ToolDescription
list_pagesPage tree with hierarchy (optional search filter)
get_pageFull page with blocks, i18n content and region settings (own regionSettings + resolved resolvedRegions with inheritance source) by slug or id
get_site_configLanguages, navigation, site name
get_workspace_infoWorkspace name, plan, limits
list_mediaMedia library listing

Write Tools

ToolDescription
create_pageCreate a new page
update_page_blocksSet full blocks array on a page
update_page_settingsUpdate page metadata and SEO
publish_pagePublish a page
unpublish_pageUnpublish a page
delete_pageDelete a page
revert_to_publishedDiscard draft, revert to published

Block Helper Tools

ToolDescription
add_block_to_pageInsert a block at position (auto-generates UUID + translations)
update_block_contentMerge content into an existing block
patch_block_contentSurgical HTML patch (insert/replace around unique markers)
remove_block_from_pageRemove a block by ID
update_page_layoutUpdate layout blocks and overrides
update_region_settingsSet one layout region's settings (manifest-validated; other regions untouched)
update_region_settings

Region (layout position) settings are declared by the workspace's layout manifest and validated against it on write. The tool reads the page's current layoutRegionSettings, replaces only the named region and writes the whole list back, so sibling regions keep their values (entries for regions the manifest no longer declares, and keys a region's schema no longer has, are dropped on the way - the same pruning the admin editor does). The backend's own BAD_USER_INPUT message is returned verbatim for an unknown region, an unknown key, or a non-empty values on a region that declares no settings (such a region accepts values: {} only); blockWarnings are surfaced when present.

{ "pageId": "...", "region": "sidebar", "values": { "width": "wide" } }

Child pages inherit a region's settings unless they set their own - get_page shows the effective value per region in resolvedRegions (settingsAreInherited, settingsSourcePageId).

patch_block_content

For small edits on long HTML content strings (e.g. a docs-article body), patch_block_content is ~10x cheaper in tokens than update_block_content and catches marker mistakes before anything writes to the DB.

{
  "pageId": "...",
  "blockId": "...",
  "locale": "en",
  "operations": [
    {
      "op": "insert_before",
      "marker": "<h2>Environment Variables</h2>",
      "html": "<hr><h2>cmssy skills install</h2><p>...</p>",
    },
  ],
}

Three ops: insert_before, insert_after, replace_section. Every marker must match exactly once - 0 or 2+ matches error out with the actual count (no silent half-applied state). For replace_section, startMarker is inclusive and endMarker is exclusive.

Requires @cmssy/cli-registered workspace with PAGES_EDIT permission. Default fieldPath is "content" (the HTML body on docs-article); override if patching a different string field.

Model Tools (Custom Data Models)

AI agents can define ModelDefinitions and CRUD their records. Schema/fields follow PropertyField from @cmssy/types; records are validated against the model on every write.

ToolDescription
list_modelsList all ModelDefinitions in the workspace
get_modelGet a model by id (ObjectId) or slug
create_modelCreate a model (name, slug, fields, optional statusField)
update_modelUpdate any field of a model (fields change triggers schema migrate)
delete_modelDelete a model — cascades to all its records
list_recordsList records with filter (JSON), sort, pagination, optional populate
get_recordGet a record by id
create_recordCreate a record; data keyed by model field keys
update_recordUpdate a record's data and/or transition its status
delete_recordDelete a record
import_recordsBulk import up to 1000 records; returns { importedCount, errors }

Requires workspace permissions MODELS_VIEW (read) / MODELS_CREATE / MODELS_EDIT / MODELS_DELETE depending on the operation.

Commerce Tools (Orders, Carts, Discounts)

Manage the storefront's orders, carts, and discount codes. All money fields are integer minor units (cents). Order/discount write tools accept the response arg (see Response shape).

ToolDescription
list_ordersList orders (filter by payment/fulfillment status, customer, dates)
get_orderGet an order with items, payments, and tax summary
get_order_pipelineGet the workspace's configurable order pipeline stages
create_manual_orderCreate an admin-entered order
edit_orderReplace an order's line items (recomputes totals)
update_order_detailsUpdate customer email, notes, and tracking
mark_order_paidRecord a full payment (manual reconciliation, no provider verify)
record_order_paymentRecord a partial payment against the balance due
refund_orderRefund an order (full, or partial with amount)
cancel_orderCancel an order
transition_order_fulfillmentMove an order to a new fulfillment status (with optional tracking)
set_order_pipeline_stageMove an order to a pipeline stage
record_order_invoiceAttach an invoice (number, url, provider) to an order
list_cartsList shopping carts (admin view, optional status filter)
list_discountsList discount codes (filter by enabled/type/code)
get_discountGet a discount by id
create_discountCreate a discount (percentage / fixed / free_shipping)
update_discountPartial update (code/type/currency lock once the code is used)
set_discount_enabledEnable or disable a discount
list_productsProduct catalog with stock + variant info (over a Data Model)
bulk_update_productsBulk set/adjust status, stock, or price on selected products
bulk_delete_productsBulk-delete selected product records

Products are records of a Custom Data Model; these tools add product-aware stock/variant reads and bulk writes on top of the generic record tools. The bulk tools target an explicit ids list or everything matching a filter (allMatching: true). There is no per-variant stock write and no standalone inventory mutation - stock is set/adjusted in bulk via patch.setStock / patch.adjustStock.

Requires workspace permissions ORDERS_VIEW / ORDERS_MANAGE (orders), CARTS_VIEW (carts), DISCOUNTS_VIEW / DISCOUNTS_MANAGE (discounts), MODELS_VIEW / MODELS_EDIT / MODELS_DELETE (products).

Customer Tools

Customers are the accounts that sign in to the site - records of a model with accounts enabled - not the team that manages the workspace (list_team).

ToolDescription
list_customersList customers with status, verification, last login, company and order stats (paginated)
get_customerOne customer's account summary plus the profile record's data
suspend_customerBlock sign-in and end every live session (orders and carts stay)
unsuspend_customerLet a suspended customer sign in again
send_customer_password_resetEmail an active customer the forgot-password reset link
resend_customer_verificationIssue and email a fresh verification link to a pending customer
unlock_customerClear the failed sign-in counter and lockout

Webhook Tools

Manage outbound event webhooks. create_webhook and rotate_webhook_secret return the signing secret once - it cannot be retrieved again.

ToolDescription
list_webhooksList webhook endpoints (secrets never returned)
list_webhook_deliveriesRecent delivery attempts (pending/success/failed)
list_webhook_event_typesThe authoritative allowlist of subscribable events
create_webhookCreate an endpoint; returns the endpoint + secret (once)
update_webhookPartial update; pass enabled to enable/disable
rotate_webhook_secretRotate the signing secret (returns new secret once)
delete_webhookDelete an endpoint

Requires workspace permissions WEBHOOKS_VIEW (read) / WEBHOOKS_MANAGE (create, update, rotate, delete).

Resources

URIDescription
cmssy://sitemapFull page tree as JSON
cmssy://workspaceWorkspace info + site config

Example Workflow

> List all pages in my workspace
> Search for pages matching "blog"
> Show me the available block types
> Which pages still use block types the site no longer registers?
> Create a new "Features" page with content in English and Polish
> Add a hero block to the Features page
> Publish the Features page

Development

pnpm install
pnpm dev -- --token cs_xxx --workspace-id xxx --api-url http://localhost:4000

Reviews

No reviews yet

Be the first to review this server!