Bulletin No.293 · Oct 20, 2026Public data only · heuristic, not an audit
MCP/Watch Weekly digest
Latest advisories
2026-10-08HIGHGHSA-cv3g-hj65-pcfh — PraisonAI2026-10-08CRITICALGHSA-9mp3-24cc-77mg — PraisonAI2026-10-08HIGHGHSA-hc5v-gxvj-58wh — PraisonAI2026-10-08HIGHGHSA-5r6c-gj4g-r697 — PraisonAI2026-10-08HIGHGHSA-4w49-gwv8-fpjg — PraisonAI2026-10-08MODERATEGHSA-4r3p-w3mc-5v34 — PraisonAI2026-10-08HIGHGHSA-79fv-7hq9-w7xg — PraisonAI2026-10-08HIGHGHSA-2gpf-2492-q9jh — PraisonAI2026-10-08MODERATEGHSA-q7m5-3jmv-vm48 — PraisonAI2026-10-08MODERATEGHSA-xpx6-x8c2-mw5w — PraisonAI2026-10-08MODERATEGHSA-wf65-4jjx-q444 — PraisonAI2026-10-07HIGHGHSA-fj8f-m44g-c479 — PraisonAI
Methodology

How scores are made

Every number on MCPWatch comes from public data and a fixed, published rule set. When we don't have data for a factor, we say so — we never assume it's good or bad.

Which servers

All latest-version entries from the official MCP Registry (registry.modelcontextprotocol.io/v0/servers) that ship an npm or PyPI package, ranked by last-week downloads (api.npmjs.org, pypistats.org). The top 500 are tracked.

Score (0–100)

The sum of points below, divided by the maximum points of the factors we actually have data for. Unknown factors are excluded and listed on each server page. Under 50 points of evidence, the score is labelled “insufficient data”.

FactorMaxSourceRule
Known advisories40OSV.dev−20 per advisory whose affected versions include the current version; −2 per historical advisory (max −8).
Maintenance20GitHubPushed <90 days: 20; <365 days: 10; older or archived: 0. Unknown if no repo/API data.
Source transparency15GitHubPublic GitHub repo with license: 15; repo without detected license: 10; no repo: 0.
Metadata stability15Registry snapshots−10 for each observed risky change without a version bump: remote host change, package identifier / registry type / image repository change, runtime command or code-executing argument change, new or removed required secret env vars, tool list change. Version-only, tracking-parameter and description text edits do not count.
Adoption10npm / PyPI≥10k weekly downloads: 10; ≥1k: 6; ≥100: 3; else 0.
85+ Strong 70+ Good 50+ Fair <50 Poor n/a Insufficient data

Rug-pull detection

Each night we snapshot the metadata a client sees in the registry — description, package arguments, environment variables, remotes, and tool lists when published — and store a structural diff when anything changes. Each diff entry is then classified. Risky (alerted on /alerts): remote URL host, scheme or port change; package identifier or registry type change; Docker image repository change; runtime command change or new arguments that execute code or redirect package sources; new or removed required secret-looking env vars (and env vars such as NODE_OPTIONS that change code loading); new remote hosts or packages; tool list changes. Informational (kept in the server's change timeline only): version bumps, image tags, download URLs and arguments that only follow the new version, URL edits limited to tracking parameters (utm_*, src, ref…) or a trailing slash, description/title text edits, and optional non-secret env vars. Risky changes without a version bump also lower the stability score. The registry does not currently publish tool names, descriptions or schemas, so tool-level tracking is shown as unknown until a source exists.

Limitations