@kywi-software/mcp
npm
v0.24.0
Published by @kywi-software — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
Model Context Protocol servers for Kywi CMS — a site server (content/nav/media over the REST API) and a developer server (kywi.config.ts scaffolding and mutation).
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 7 = 93. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
Tool "create_webhook" can both read sensitive data and send data to an external destination. Even without an explicit untrusted-input leg, this is a single-call data-exfiltration path if the model is ever manipulated.
Fix: Separate reading from sending; require explicit user confirmation before egress of file/secret contents.
Location: flow create_webhook
In the server's implementation (`dist/developer/tools/config-mutation.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: { execFile } from 'node:child_process'; import { promisify } from 'node:util'; import { z } from 'zod'; import { textRes
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/developer/tools/config-mutation.js
Tool "create_webhook" takes a URL/host parameter "url" with no allowlist/pattern. An outbound-request tool with an unbounded destination enables SSRF and cloud-metadata access (e.g. 169.254.169.254).
Fix: Allowlist destinations or constrain the parameter; block private/link-local addresses server-side.
Location: tool create_webhook · inputSchema.properties.url
Each tool and what it can reach — statically extracted from the published source.
create_webhooknetwork egressreads sensitive dataadd_content_typeno sensitive capabilityadd_fieldno sensitive capabilityadd_moduleno sensitive capabilityadd_pluginno sensitive capabilityadd_rowno sensitive capabilityadd_themeno sensitive capabilityapprove_contentno sensitive capabilitybulk_create_contentno sensitive capabilitybulk_publishno sensitive capabilitycopy_contentno sensitive capabilitycreate_api_keyno sensitive capabilitycreate_contentno sensitive capabilitycreate_feedno sensitive capabilitycreate_userno sensitive capabilitydelete_contentno sensitive capabilitydelete_mediano sensitive capabilityexecute_feedno sensitive capabilityget_breadcrumbsno sensitive capabilityget_building_patternsno sensitive capabilityget_config_summaryno sensitive capabilityget_contentno sensitive capabilityget_content_typesno sensitive capabilityget_layoutno sensitive capabilityget_menuno sensitive capabilityget_modulesno sensitive capabilityget_navno sensitive capabilityget_pluginsno sensitive capabilityget_site_configno sensitive capabilityget_themesno sensitive capabilityget_treeno sensitive capabilitylist_api_keysno sensitive capabilitylist_componentsno sensitive capabilitylist_contentno sensitive capabilitylist_content_typesno sensitive capabilitylist_feedsno sensitive capabilitylist_mediano sensitive capabilitylist_menusno sensitive capabilitylist_module_typesno sensitive capabilitylist_pending_contentno sensitive capabilitylist_usersno sensitive capabilitylist_webhooksno sensitive capabilitymove_contentno sensitive capabilitypersonalize_moduleno sensitive capabilitypreview_schemano sensitive capabilitypublish_contentno sensitive capabilityreject_contentno sensitive capabilityremove_fieldno sensitive capabilityremove_moduleno sensitive capabilityremove_rowno sensitive capabilityrestore_versionno sensitive capabilityrevoke_api_keyno sensitive capabilityrun_migrationno sensitive capabilityscaffold_componentno sensitive capabilityscaffold_content_typeno sensitive capabilityscaffold_site_structureno sensitive capabilityscaffold_themeno sensitive capabilitysearch_contentno sensitive capabilityseed_contentno sensitive capabilitysubmit_for_reviewno sensitive capabilityunpublish_contentno sensitive capabilityupdate_contentno sensitive capabilityupdate_content_typeno sensitive capabilityupdate_feedno sensitive capabilityupdate_layoutno sensitive capabilityupdate_module_propsno sensitive capabilityupdate_site_configno sensitive capabilityupdate_theme_regionsno sensitive capabilityupload_mediano sensitive capabilityupsert_menuno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v0.24.0 latest |
A 93/100 | 3 | 1.13.0 | 2026-09-07 |
v0.19.0 |
A 93/100 | 3 | 1.13.0 | 2026-09-01 |
v0.16.0 |
A 93/100 | 3 | 1.13.0 | 2026-08-31 |
v0.15.2 |
A 93/100 | 3 | 1.13.0 | 2026-08-30 |
v0.14.0 |
A 93/100 | 4 | 1.13.0 | 2026-08-29 |
v0.13.0 |
A 93/100 | 4 | 1.13.0 | 2026-08-25 |
v0.12.1 |
A 93/100 | 4 | 1.12.1 | 2026-07-31 |
v0.10.0 |
A 93/100 | 4 | 1.12.1 | 2026-07-28 |
v0.8.0 |
A 93/100 | 4 | 1.12.1 | 2026-07-27 |
v0.7.1 |
A 93/100 | 4 | 1.10.0 | 2026-07-27 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan @kywi-software/mcp --online
Adapters for the FrontMCP framework
Transcend MCP Server — Admin tools.
Transcend MCP Server — Assessments tools.
MCP Server for Bling
MCP Server for Blogger API
Official MCP server for Brilliant Directories — manage members, posts, leads, reviews, and more.