MCSL is a lightweight Minecraft server plugin that gives server administrators a single command to upload, parse, redact, and share server logs — all powered by HasteLog, a fast and free log-sharing service. No more copy-pasting giant log files into chat or Discord. One command and your log is live on the web, ready to share with support staff, developers, or your community.
MCSL is built specifically for server administrators and developers who spend time diagnosing issues on Bukkit, Spigot, Paper, Purpur, or Folia servers.
| If you are... | MCSL helps you... |
|---|---|
| A server owner with a broken plugin | Upload errors instantly and share the link with the plugin's support team |
| A developer debugging your own plugin | Get a full diagnostic report — version, all loaded plugins, errors, TPS — in one link |
| A network admin managing multiple servers | Run /mcsl share on any node and get a single URL to compare behaviour across servers |
| A support volunteer on a help Discord | Ask users to run /mcsl upload errors instead of pasting 3,000 lines of log |
| A hosting provider | Include MCSL on your pre-installed plugin list — your clients get self-service diagnostics |
Upload your entire latest.log — or just the last N lines, or only errors — to logs.protectcord.com with a single command. You get back a short, shareable URL that you can click directly from your in-game chat.
MCSL automatically scans your logs and categorises what it finds:
[ERROR], [SEVERE] entries[WARN] and [WARNING] entriesBefore anything leaves your server, MCSL scrubs sensitive data:
[REDACTED_IP][REDACTED_TOKEN][REDACTED_KEY]password=[REDACTED]config.yml)All redaction is configurable and can be turned on or off per category. Player IPs are redacted by default.
/mcsl share produces a rich, structured report including:
If your server crashes unexpectedly, MCSL's JVM shutdown hook fires automatically, uploads the last 1,000 log lines along with the parsed error summary, and logs the HasteLog URL to console — even if the Bukkit scheduler is no longer running. Online operators receive an in-game notification with the link.
Every upload runs off the main server thread. Your TPS will never drop because of a log upload.
MCSL detects and lists mods on:
fml.common.Loader, 1.13+ via fml.ModList)net.fabricmc.loader.api.FabricLoader)/mcsl upload 500[MCSL] Uploading last 500 lines to HasteLog...
[MCSL] Uploaded (last 500 lines) successfully!
[MCSL] View report: https://logs.protectcord.com/GvuuyVDqN2
The URL is clickable in-game — click it to open in your browser.
/mcsl info ──────────────────────────────────────────────────
Server Information
──────────────────────────────────────────────────
Name: My Minecraft Server
Software: Paper 1.20.4
Version: git-Paper-388 (MC: 1.20.4)
Port: 25565
Online Mode: true
Gamemode: survival
Difficulty: normal
Max Players: 100
Online: 12 / 100
Memory: 1842MB used / 4096MB max (committed: 2048MB)
Uptime: 6h 34m 12s
TPS: 19.98 / 19.97 / 19.95 (1m/5m/15m)
Plugins: 32 enabled / 33 total
──────────────────────────────────────────────────
/mcsl plugins ──────────────────────────────────────────────────
Plugins — 32 enabled / 33 total
──────────────────────────────────────────────────
[+] EssentialsX v2.20.1 by EssentialsX Team
[+] LuckPerms v5.4.108 by Luck
[+] Vault v1.7.3 by MilkBowl
[+] WorldEdit v7.3.1 by sk89q
[-] BrokenPlugin v1.0.0 by SomeAuthor
──────────────────────────────────────────────────
[+]= enabled,[-]= disabled/failed to load
/mcsl errors[MCSL] Found 3 errors and 7 warnings in the last 500 lines.
[MCSL] Last 3 errors:
[ERROR] Could not load 'plugins/BrokenPlugin.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
[ERROR] Error occurred while enabling BrokenPlugin v1.0.0 (Is it up to date?)
[MCSL] Use /mcsl upload errors to upload the full error log.
════════════════════════════════════════════════════════════
MCSL — Server Diagnostic Report
════════════════════════════════════════════════════════════
Generated : 2026-04-20 17:34:12 UTC
Generator : MCSL v1.0.0 (https://logs.protectcord.com)
SERVER INFORMATION
────────────────────────────────────────────────────────────
Name : My Minecraft Server
Software : Paper 1.20.4
Full Version : git-Paper-388 (MC: 1.20.4)
MOTD : Welcome to My Server
Online Mode : true
Port : 25565
Max Players : 100
Online Now : 12 / 100
Memory : 1842MB used / 4096MB max
Uptime : 6h 34m 12s
TPS : 19.98 / 19.97 / 19.95
PLUGINS (32 enabled / 33 total)
────────────────────────────────────────────────────────────
[+] EssentialsX v2.20.1
[+] LuckPerms v5.4.108
[-] BrokenPlugin v1.0.0 ← DISABLED
ERRORS & EXCEPTIONS (3 found)
────────────────────────────────────────────────────────────
[ERROR] Could not load 'plugins/BrokenPlugin.jar'
...
FULL LOG (500 lines)
────────────────────────────────────────────────────────────
... (redacted log content) ...
MCSL-1.0.0.jar from the Releases tab/plugins/ folderplugins/MCSL/config.yml will be generated automatically/mcsl help in-game or from consoleNo configuration required out of the box. The plugin ships with a pre-configured API key and sane defaults.
| Requirement | Version |
|---|---|
| Java | 8 or newer |
| Server | Bukkit / Spigot / Paper / Purpur / Folia |
| Minecraft | 1.8.8 — 1.21.x |
plugins/MCSL/config.yml is generated on first run. Every option is documented inline.
# HasteLog API settings
api:
timeout-ms: 50000 # HTTP request timeout
# Privacy & redaction
redaction:
enabled: true # Master toggle
redact-player-ips: true # Hide IPv4/IPv6 addresses
redact-server-ip: false # Hide the server's own IP (for /mcsl share)
redact-api-keys: true # Hide JWT tokens, Bearer keys, sk- keys, etc.
custom-patterns: [] # Your own regex patterns, e.g. "password=[^\\s]+"
# Log upload behaviour
upload:
default-lines: 25000 # Lines uploaded when no argument is given
include-server-info-header: true
include-plugin-list: true
include-mod-list: true
async: true # Always recommended
# Automatic actions
auto:
upload-on-crash: true # Auto-upload on abnormal server exit
upload-on-start: false # Upload a summary when the server starts
notify-ops-on-crash-upload: true
# /mcsl share options
share:
include-server-ip: true
include-port: true
include-player-count: true
include-performance: true
# Chat formatting
messages:
prefix: "&8[&bMCSL&8]&r "
You can change most settings without restarting:
/mcsl config redaction.redact-player-ips false
/mcsl config upload.default-lines 1000
/mcsl config auto.upload-on-crash false
/mcsl reload
⚠️ The API URL and API key are baked into the JAR and cannot be changed through config. This is intentional — it prevents misconfiguration and keeps the global key secure.
All commands require the mcsl.use permission (op by default).
/mcsl upload [argument]Uploads latest.log to HasteLog and returns a clickable URL.
| Argument | Behaviour |
|---|---|
| (none) | Upload the last upload.default-lines lines (default: 25,000) |
500 | Upload the last 500 lines |
all | Upload the entire log file |
errors | Upload only lines containing errors or warnings |
Example:
/mcsl upload 1000
/mcsl upload errors
/mcsl upload all
/mcsl shareGenerates and uploads a full structured diagnostic report — server info, plugin list, mod list, TPS, memory, errors, warnings, player events, and the full log tail — in a single HasteLog document.
This is the command to use when asking for help. Share the link with a support team, developer, or community Discord and they have everything they need to diagnose your issue.
/mcsl infoPrints a formatted server information panel directly to your chat or console. Includes software version, performance metrics, player count, and plugin summary. Nothing is uploaded — it's local only.
/mcsl errors [lines]Scans the last N lines of latest.log and prints a summary of errors and warnings directly in chat. Shows the last 10 errors inline. Suggests /mcsl upload errors if there are more.
/mcsl errors → scan last 25,000 lines
/mcsl errors 500 → scan last 500 lines
/mcsl playersScans the log for player events (join, leave, lost connection, kick, ban) and prints the last 15 in chat. Useful for quickly checking recent player activity without reading the full log.
/mcsl pluginsLists every plugin currently loaded by the server, with its version, author(s), and enabled/disabled status. Disabled or failed plugins are shown with [-] in red so they're immediately visible.
/mcsl modsLists all loaded Forge or Fabric mods, including mod ID, display name, and version. Returns a message if the server is vanilla/Bukkit-only with no mod loader.
/mcsl crashFinds the most recently modified file in the crash-reports/ directory, uploads it with a plugin list header, and returns a HasteLog URL. Useful after a crash to quickly get the report online.
/mcsl config <key> <value>Change a config setting at runtime without editing config.yml directly. Supports tab completion for key names and boolean values.
/mcsl config redaction.enabled false
/mcsl config share.include-server-ip false
/mcsl config upload.default-lines 5000
/mcsl reloadReloads config.yml from disk and recompiles any custom redaction patterns.
| Permission | Default | Description |
|---|---|---|
mcsl.use | op | Access to all /mcsl commands |
mcsl.upload | op | Upload logs to HasteLog |
mcsl.info | op | View server info |
mcsl.share | op | Generate full diagnostic reports |
mcsl.config | op | Change config at runtime |
mcsl.use is a parent permission that grants all children automatically.
| Data | Redacted? | Replacement |
|---|---|---|
| Player IPv4 addresses | ✅ Yes | [REDACTED_IP] |
| Player IPv6 addresses | ✅ Yes | [REDACTED_IPv6] |
| JWT tokens | ✅ Yes | [REDACTED_TOKEN] |
API keys (sk-, Bearer, hl_, etc.) | ✅ Yes | [REDACTED_KEY] |
| JDBC/database passwords | ✅ Yes | password=[REDACTED] |
Server IP (in /mcsl share) | ❌ No (configurable) | [SERVER_IP] |
| Player usernames | ❌ No | — |
| World names | ❌ No | — |
Only the content you explicitly request. MCSL never uploads in the background unless you have auto.upload-on-crash: true or auto.upload-on-start: true in your config. The API key is embedded in the JAR and cannot be read from config.yml.
All uploads go to logs.protectcord.com, which is a HasteLog instance operated by ProtectCord. Documents are accessible to anyone with the link.
MCSL collects anonymous usage statistics via bStats. This includes:
No log content, player data, or server-identifying information is ever collected. You can disable bStats server-wide in plugins/bStats/config.yml.
Q: Does /mcsl upload upload the entire log file?
No — by default it uploads the last 25,000 lines. Use /mcsl upload all for the full file, or specify a number like /mcsl upload 500.
Q: Can players see the uploaded URL?
Only operators (or players with mcsl.use) can run any MCSL command. The URL is shown only to the command sender.
Q: Is the API key safe?
The API key is XOR-obfuscated and compiled into the JAR — it does not appear as a readable string in the bytecode. It is also excluded from config.yml entirely and cannot be changed or read by server admins.
Q: Does this work on Folia? MCSL loads on Folia servers. Commands, log reading, and uploads all work. TPS detection uses Folia's scheduler where available.
Q: Can I use a self-hosted HasteLog instance? Not through config — the URL is baked into the JAR. Contact ProtectCord if you need a custom build for your hosting environment.
Q: Does it work with Forge or Fabric? MCSL is a Bukkit plugin, so it runs on hybrid servers like Mohist (Forge+Bukkit) or Cardboard (Fabric+Bukkit). Mod detection works on these platforms via reflection.
| Resource | Link |
|---|---|
| HasteLog Service | logs.protectcord.com |
| bStats Dashboard | bstats.org/plugin/bukkit/MCSL/30872 |
Made with ❤️ by ProtectCord · Powered by HasteLog

MCSL is a dedicated server admin tool that lets you share your console logs, crash logs, timings, latest log and more. The platform allows sharing and management logs much easier.