MSSP Setup Guide
The Mud Server Status Protocol (MSSP) lets crawlers and directories read live statistics directly from your server — player counts, uptime, and more. MudMonster also uses a custom MSSP key to verify MUD ownership without needing an external account or email challenge. Setup varies by codebase; jump to yours below.
What is MSSP?
MSSP is a Telnet sub-negotiation protocol defined in the
MUD Protocols specification.
When a client connects and sends IAC WILL MSSP,
your server responds with a structured block of key/value pairs:
IAC SB MSSP MSSP_VAR "NAME" MSSP_VAL "My Realm" MSSP_VAR "PLAYERS" MSSP_VAL "14" MSSP_VAR "UPTIME" MSSP_VAL "1715000000" IAC SE
Crawlers like MudMonster connect periodically to collect this data without occupying a real player slot. The connection is short-lived and has no impact on gameplay.
Standard Variables
MudMonster reads the following standard MSSP fields. All are optional — broadcast what you can.
| Variable | Example value | Notes |
|---|---|---|
NAME | My Realm | Full MUD name |
PLAYERS | 14 | Current online player count |
UPTIME | 1715000000 | Unix timestamp of last server start |
PORT | 4000 | Primary connection port |
HOSTNAME | myrealm.com | Canonical hostname |
CODEBASE | ROM 2.4 | Server codebase / engine |
WEBSITE | https://myrealm.com | Public website URL |
MINIMUM AGE | 0 | 0 = all ages welcome |
FAMILY | DIKU | Broad codebase family |
GENRE | Fantasy | Game genre |
Ownership Verification Key
When you claim a listing on MudMonster, you'll receive a unique token. Add it to your MSSP config as a custom variable — MudMonster will connect, read the value, and confirm ownership automatically.
MSSP_VAR "MUDMONSTER_VERIFY" MSSP_VAL "mm-verify-your-token-here"
The token is single-use and only needs to be present during verification. Once confirmed:
- You'll see a success message on the listing page.
- You can safely remove
MUDMONSTER_VERIFYfrom your config. - Your account gains edit access to the listing.
Evennia
Evennia has built-in MSSP support. Add or update MSSP_META_DATA
in your server/conf/settings.py:
# server/conf/settings.py
MSSP_META_DATA = {
"NAME": "My Realm",
"PLAYERS": lambda: evennia.SESSION_HANDLER.count_sessions(only_connected=True),
"UPTIME": lambda: int(gametime.SERVER_START_TIME),
"CODEBASE": "Evennia",
"WEBSITE": "https://myrealm.com",
# Ownership verification — remove after confirming on MudMonster
"MUDMONSTER_VERIFY": "mm-verify-your-token-here",
}
Callable values are evaluated at query time, giving live player counts.
Restart Evennia after editing settings (evennia restart).
SMAUG / SMAUG FUSS
Most SMAUG variants ship with an mssp.c module.
Custom variables are typically defined in mssp.c
inside the mssp_table[] array:
/* In mssp.c — add to the mssp_table[] or equivalent struct */
{ "MUDMONSTER_VERIFY", NULL, "mm-verify-your-token-here", 0 },
If your SMAUG variant reads MSSP config from a flat file (e.g. area/mssp.dat), add a line:
MUDMONSTER_VERIFY mm-verify-your-token-here
Reboot the MUD after editing. Check your codebase's documentation for the exact file and format.
ROM / Merc / DikuMUD
Stock ROM 2.4, Merc, and most DikuMUD variants do not include MSSP out of the box.
You'll need to add it to your telnet negotiation code — usually in
comm.c
or a dedicated mssp.c file.
A minimal implementation sends the MSSP block in response to the Telnet WILL MSSP negotiation:
/* Telnet constants */
#define IAC 255
#define WILL 251
#define SB 250
#define SE 240
#define MSSP 70 /* 0x46 */
#define MSSP_VAR 1
#define MSSP_VAL 2
void send_mssp(DESCRIPTOR_DATA *d) {
char buf[4096];
int n = 0;
buf[n++] = IAC; buf[n++] = SB; buf[n++] = MSSP;
/* NAME */
buf[n++] = MSSP_VAR;
n += sprintf(buf + n, "NAME");
buf[n++] = MSSP_VAL;
n += sprintf(buf + n, "My Realm");
/* PLAYERS — replace num_playing() with your own function */
buf[n++] = MSSP_VAR;
n += sprintf(buf + n, "PLAYERS");
buf[n++] = MSSP_VAL;
n += sprintf(buf + n, "%d", num_playing());
/* Ownership verification */
buf[n++] = MSSP_VAR;
n += sprintf(buf + n, "MUDMONSTER_VERIFY");
buf[n++] = MSSP_VAL;
n += sprintf(buf + n, "mm-verify-your-token-here");
buf[n++] = IAC; buf[n++] = SE;
write_to_descriptor(d->descriptor, buf, n);
}
Call send_mssp(d) from your Telnet negotiation handler
when you receive IAC DO MSSP.
Several community patches exist for ROM/Merc — search your codebase's forum for "MSSP patch".
CircleMUD / tbaMUD
tbaMUD (the standard CircleMUD descendant) includes MSSP support. Variables are defined
in src/mssp.c in the
mssp_info array:
/* src/mssp.c */
struct mssp_data mssp_info[] = {
{ "NAME", NULL, CONFIG_MUDNAME, 0 },
{ "PLAYERS", get_player_count, NULL, 0 },
/* ... existing entries ... */
/* Add before the terminating NULL entry: */
{ "MUDMONSTER_VERIFY", NULL, "mm-verify-your-token-here", 0 },
{ NULL, NULL, NULL, 0 } /* terminator — keep last */
}; Recompile and restart after editing. Stock CircleMUD 3.x does not include MSSP — use tbaMUD or apply a patch.
LPMud / FluffOS / MudOS
MSSP in LP-family drivers is typically implemented in the mudlib, not the driver itself. In FluffOS you can hook into Telnet negotiation via the master object or a dedicated daemon. A common pattern (Lima / MudOS mudlib style):
/* /secure/daemons/mssp_d.c — create and load via master.c or init */
#define IAC "ÿ"
#define WILL "û"
#define SB "ú"
#define SE "ð"
#define MSSP "F"
#define MSSP_VAR ""
#define MSSP_VAL ""
string build_mssp() {
mapping vars = ([
"NAME" : mud_name(),
"PLAYERS" : "" + sizeof(users()),
"UPTIME" : "" + time(),
"MUDMONSTER_VERIFY" : "mm-verify-your-token-here",
]);
string out = IAC + SB + MSSP;
foreach(string key, string val : vars) {
out += MSSP_VAR + key + MSSP_VAL + val;
}
return out + IAC + SE;
}
void send_mssp(object connection) {
efun::write_socket(connection, build_mssp());
}
Call send_mssp() when you detect
IAC DO MSSP in your Telnet negotiation handler.
Driver and mudlib APIs vary — check your specific driver's documentation for socket write functions.
PennMUSH
PennMUSH 1.8.7+ supports MSSP. Variables are configured in
mush.cnf:
# mush.cnf — add under the [mssp] section or at the top level mssp_name My Realm mssp_hostname myrealm.com mssp_port 4201 # Custom variable for MudMonster ownership verification mssp_MUDMONSTER_VERIFY mm-verify-your-token-here
The exact directive format depends on your PennMUSH version. Some versions use
mssp_extra_<key> for custom variables.
Check your mush.cnf comments or the
PennMUSH GitHub for your version.
A @shutdown/reboot picks up config changes.
TinyMUX
TinyMUX 2.x supports MSSP via netmux.conf.
Look for the mssp_* directives:
# netmux.conf mssp_name My Realm mssp_port 4201 mssp_hostname myrealm.com # Custom field — some TinyMUX versions support free-form extra vars # If not supported natively, add via the soft-code @mssp command: # @mssp MUDMONSTER_VERIFY=mm-verify-your-token-here
Older TinyMUX builds may not support arbitrary custom keys from the config file.
In that case, use the in-game @mssp command
if available, or apply a patch to add the key in the C source.
Custom / Homebrew Codebases
If you're running a custom server, MSSP requires handling the Telnet sub-negotiation sequence. The full exchange:
- Client connects and sends
0xFF 0xFB 0x46(IAC WILL MSSP) - Your server responds with
0xFF 0xFD 0x46(IAC DO MSSP) - Your server then immediately sends the MSSP data block (IAC SB MSSP ... IAC SE)
The MSSP data block format:
Byte sequence: 0xFF 0xFA 0x46 ← IAC SB MSSP (start) 0x01 ← MSSP_VAR "NAME" ← key bytes (ASCII) 0x02 ← MSSP_VAL "My Realm" ← value bytes (ASCII) 0x01 ← MSSP_VAR "MUDMONSTER_VERIFY" 0x02 ← MSSP_VAL "mm-verify-your-token-here" ...more key/value pairs... 0xFF 0xF0 ← IAC SE (end)
Rules: keys and values are plain ASCII. Do not include null bytes. Values can be empty strings. The full variable list and spec are at tintin.mudhalla.net/protocols/mssp.
Testing Your MSSP
Use mudlet or a raw TCP tool to verify your MSSP is broadcasting correctly:
# netcat — sends IAC WILL MSSP and prints the raw response printf '\xff\xfb\x46' | nc -q 3 your.mud.host 4000 | cat -v # If you see "^?^Z^F" followed by key/value pairs, MSSP is working. # Look for MUDMONSTER_VERIFY in the output.
Or use the MudMonster verify button on your listing claim page — it will report whether the token was found.
Mudlet's Server Info dialog (Ctrl+Shift+I) also shows MSSP data received from the connected server.
After Verification
Once MudMonster confirms the token:
- Remove
MUDMONSTER_VERIFYfrom your MSSP config — it's no longer needed. - Your account now has edit access to the listing.
- Keep the remaining MSSP variables — MudMonster crawls
PLAYERSperiodically to update the live player count on your listing.