@cmssy/mcp-serverSAFE
MCP server for cmssy, a headless CMS whose page sections are defined by your own code.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
MCP server for Cmssy CMS — enables AI-driven page creation and management with i18n support.
Setup
Prerequisites
- Your Cmssy backend API URL (e.g.
https://api.your-cmssy.com) - An API token (create in Dashboard > API Tokens, starts with
cs_) - 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@latest",
"--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 IDCMSSY_API_URL— API URL (optional; defaults tohttps://api.cmssy.io, so set it only for a self-hosted backend)
Checking which build is running
--version and --help need no token, so they answer even when the server is not configured. Run the flag against the same spec your client launches, copied out of your mcp.json:
npx -y @cmssy/mcp-server --version # what an unpinned config runs npx -y @cmssy/mcp-server@latest --version # what the registry serves today npm view @cmssy/mcp-server version # the newest published version
The first two can disagree, and that disagreement is the answer: a warm npx cache holds the build an unpinned spec resolved to earlier, while @latest re-resolves and reports the newest one. So @latest --version cannot diagnose a stale cache - it is the command that hides it. Ask the unpinned spec first when a tool fails on a field the API should serve, then compare.
Clearing the cache is npx clear-npx-cache, or pin the version in your config so nothing has to be diagnosed.
Response shape (write tools)
As of 0.6.0, most write to
73632c8c3149OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add mcp-server --env CMSSY_API_TOKEN=${CMSSY_API_TOKEN} -- npx -y @cmssy/[email protected]Exposed tools (6)
4 read · 1 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
delete_record | destructive | a destructive tool |
get_page | read | Reads a page. |
list_pages | read | |
list_records | read | read |
probe_tool | read | a tool |
update_region_settings | write | Set the settings of one layout region on a page, e.g. a sidebar |
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- declared (3 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (4)
delete_record
fileURLToPath(new URL("../../package.json", import.meta.url)),readFileSync(resolve(here, "../../package.json"), "utf8"),
@modelcontextprotocol/sdk, zod, @types/node, graphql, tsx, typescript, vitest
Gates applied: no_behavioural_pass.
73632c8c3149full audit observations/trust-audit/mcp-server/cmssy-io__cmssy-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 73632c8c3149 | SAFE | B | 89 | first audit |
Questions
What is the @cmssy/mcp-server MCP server?
MCP server for cmssy, a headless CMS whose page sections are defined by your own code.
What tools does @cmssy/mcp-server expose?
6 in total: 4 read-only, 1 that write, and 1 that can delete or overwrite (delete_record). Every one is listed on this page with its risk.
Is @cmssy/mcp-server safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does @cmssy/mcp-server need?
It reads CMSSY_API_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does @cmssy/mcp-server run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @cmssy/mcp-server at 0.93.1.
How current is this page?
The grade is for one exact copy of the source (73632c8c3149), read on 2026-10-11. The repository is watched and re-audited when it changes.