Atlas / MCP servers / cmssy-io / @cmssy/mcp-server

@cmssy/mcp-serverSAFE

mcp/cmssy-io/cmssy-mcp

MCP server for cmssy, a headless CMS whose page sections are defined by your own code.

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
6 4r · 1w · 1d
Transport
stdio
License
MIT
Stars
1
01

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

  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@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 ID
  • CMSSY_API_URL — API URL (optional; defaults to https://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

Read from source at commit 73632c8c3149OBSERVED · 2026-10-11
02

Connect

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-code (npm)
claude mcp add mcp-server --env CMSSY_API_TOKEN=${CMSSY_API_TOKEN} -- npx -y @cmssy/[email protected]
03

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.

ToolRiskDescription
delete_recorddestructivea destructive tool
get_pagereadReads a page.
list_pagesread
list_recordsreadread
probe_toolreada tool
update_region_settingswriteSet the settings of one layout region on a page, e.g. a sidebar
04

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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (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)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_record
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/__tests__/cli-flags.test.ts:92
fileURLToPath(new URL("../../package.json", import.meta.url)),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/__tests__/client-marker.test.ts:131
readFileSync(resolve(here, "../../package.json"), "utf8"),
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, zod, @types/node, graphql, tsx, typescript, vitest
Why it matters. 7 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 73632c8c3149full audit observations/trust-audit/mcp-server/cmssy-io__cmssy-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1173632c8c3149SAFEB89first audit
06

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.

Advertisement