@nuntly/sdk-mcp
npm
v1.0.0
Source verified
Published by nuntly — publish provenance cryptographically ties this package to that repository. That is proof of origin, not an official vendor package.
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 − 3.6 = 96. What the published surface and source actually contain:
| Points | What was found | Category |
|---|---|---|
| −3.6 | Possible combosquat of @modelcontextprotocol/sdk MTC-SUP-006 | supply-chain |
2. Client adoption risk — 96 − 6 = 90. 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 |
| ✓ | publisher verification (provenance) — cryptographic build provenance ties the artifact to its source |
| ✓ | inspection depth (source) — how much of the target the scan could see |
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.
This server (without client built-ins) exposes a complete data-exfiltration chain: list-thread-messages ⇒ send-email → create-webhook. Untrusted input is ingested, private data is read, and it can be sent to an external sink — and at least one leg is a direct schema wire (⇒), where a producer's output drops straight into a free-text parameter of the next tool, so the chain needs little agent cooperation. Static analysis proves the primitive exists, not that a specific run will occur.
Fix: Remove one leg of the trifecta: isolate untrusted-input tools from secret-reading tools and from egress tools, or require human approval between them.
Location: flow list-thread-messages → send-email → create-webhook
Tool "send-email" 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 send-email
"@nuntly/sdk-mcp" is "@modelcontextprotocol/sdk" with a decorative suffix — a common combosquat pattern.
Fix: Confirm you meant "@modelcontextprotocol/sdk". Install packages only from their documented, official name.
Location: package @nuntly/sdk-mcp
Tool "send-email" takes a path parameter "filename" with no constraint. Without a canonicalize-and-contain check (not visible statically), this permits ../ traversal outside the intended root.
Fix: Resolve and verify the path stays within an allowed root; reject traversal sequences.
Location: tool send-email · inputSchema.properties.filename
Each tool and what it can reach — statically extracted from the published source.
send-emailnetwork egressreads sensitive datacreate-webhooknetwork egressdelete-webhooknetwork egressforward-messagenetwork egresslist-thread-messagesingests untrusted inputreplay-webhook-eventnetwork egressretrieve-email-contentingests untrusted inputretrieve-message-attachmentingests untrusted inputretrieve-message-contentingests untrusted inputretrieve-webhooknetwork egressupdate-webhooknetwork egresscancel-emailno sensitive capabilitycreate-api-keyno sensitive capabilitycreate-domainno sensitive capabilitycreate-inboxno sensitive capabilitycreate-namespaceno sensitive capabilitydelete-api-keyno sensitive capabilitydelete-domainno sensitive capabilitydelete-inboxno sensitive capabilitydelete-namespaceno sensitive capabilitylist-api-keysno sensitive capabilitylist-domainsno sensitive capabilitylist-emailsno sensitive capabilitylist-inbox-threadsno sensitive capabilitylist-inboxesno sensitive capabilitylist-message-attachmentsno sensitive capabilitylist-messagesno sensitive capabilitylist-namespace-inboxesno sensitive capabilitylist-namespacesno sensitive capabilitylist-organizationsno sensitive capabilitylist-webhook-event-deliveriesno sensitive capabilitylist-webhooksno sensitive capabilitylist-webhooks-eventsno sensitive capabilityreply-to-messageno sensitive capabilityretrieve-agent-memoryno sensitive capabilityretrieve-api-keyno sensitive capabilityretrieve-bulk-emailsno sensitive capabilityretrieve-domainno sensitive capabilityretrieve-emailno sensitive capabilityretrieve-email-eventsno sensitive capabilityretrieve-email-statsno sensitive capabilityretrieve-inboxno sensitive capabilityretrieve-messageno sensitive capabilityretrieve-namespaceno sensitive capabilityretrieve-organizationno sensitive capabilityretrieve-organization-usageno sensitive capabilityretrieve-threadno sensitive capabilitysend-bulk-emailsno sensitive capabilitysend-inbox-messageno sensitive capabilityupdate-api-keyno sensitive capabilityupdate-domainno sensitive capabilityupdate-inboxno sensitive capabilityupdate-messageno sensitive capabilityupdate-namespaceno sensitive capabilityupdate-threadno sensitive capabilityupsert-agent-memoryno 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 |
|---|---|---|---|---|
v1.0.0 latest |
A 90/100 | 4 | 1.8.0 | 2026-07-23 |
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 @nuntly/sdk-mcp --online
Security scan results for the 1stay MCP server.
Security scan results for the Adguard Home MCP server.
Security scan results for the Ado Browser MCP server.
Security scan results for the Adobe Experience Dev MCP server.
Security scan results for the Aemet MCP server.
Security scan results for the Agent MCP server.