Skip to content

Scanners

shvquu edited this page Jun 15, 2026 · 1 revision

Scanners

ServerDoctor ships five scanners. Each declares the platform capabilities it needs; the engine skips a scanner whose capabilities aren't met (for example, the Performance scanner needs a tick loop and is therefore skipped on a Velocity proxy).

Severities, ascending: OK < INFO < LOW < MEDIUM < HIGH < CRITICAL.

Plugin (plugin)

Requires HAS_PLUGINS. Inventories installed plugins.

  • Reports the number of detected plugins (INFO).
  • Flags any plugin without a version string (LOW).

Dependency (dependency)

Requires HAS_PLUGINS. Checks declared hard dependencies.

  • For each plugin, if a hard dependency is not installed → HIGH finding naming the missing dependency.

Conflict (conflict)

Requires HAS_PLUGINS. Matches the installed plugin set against the built-in conflict database.

  • When both plugins of a known conflicting pair are present, emits a conflict report carrying the definition's id, the two plugin names, severity and description.

Performance (performance)

Requires HAS_TICK_LOOP (Paper/Folia only). Evaluates the latest snapshot against thresholds:

Metric Threshold Severity
TPS (1m) < 18 MEDIUM
TPS (1m) < 15 HIGH
TPS (1m) < 10 CRITICAL
MSPT > 50 ms MEDIUM
Memory used > 85% MEDIUM
Memory used > 95% HIGH

Security (security)

Requires HAS_PLUGINS. Conservative, honest maintenance heuristics.

  • Plugins missing version or author metadata → MISSING_METADATA risk (LOW): origin and freshness are hard to verify.
  • No CVE database is invented. This scanner is a deliberate connection point for a future advisory source (e.g. Modrinth / GitHub Security Advisories).

Custom scanners

Third-party plugins can register their own scanners via the public API — see Developer API.

Clone this wiki locally