Team Fortress 2 (TF2) RCON Commands: Server Admin Reference
Every TF2 RCON command an admin needs: connect over Source RCON, read status, kick and ban by SteamID with persistence, control match and team cvars, add and remove bots, change maps, and broadcast - plus the free-to-play ban-evasion and userid gotchas.
Team Fortress 2 runs a Source-engine dedicated server (srcds), so it uses the standard Source RCON protocol. This reference covers connecting, moderation, match settings, bots, and the gotchas that catch new admins.
How TF2 RCON works
RCON uses the Source RCON protocol (TCP) on the server's game port (default 27015). Set the password in server.cfg:
rcon_password "your_strong_password"
An empty password disables RCON. Connect any Source RCON client and authenticate; after several failed attempts the server auto-bans the offending IP (sv_rcon_maxfailures, sv_rcon_banpenalty).
SourceMod commands (sm_kick, sm_ban, sm_gag, ...) are a separate plugin layer, NOT vanilla RCON. They only work if SourceMod is installed. Everything below is vanilla.
Listing players
| Command | What it returns |
|---|---|
status | Every player's userid, name, and SteamID (STEAM_0:X:XXXXX), plus ping and state. |
The userid is a session integer that resets on map change and reconnect - re-run status right before a kick.
Moderation
| Command | Syntax | Notes |
|---|---|---|
kick | kick <name> | Kick by name (quote names with spaces). |
kickid | kickid <userid> [reason] | Kick by the status userid - more reliable. |
banid | banid <minutes> <steamid> [kick] | Ban a SteamID; 0 = permanent. Add kick to remove immediately. |
addip | addip <minutes> <ip> | Ban an IP; 0 = permanent. |
removeid / removeip | removeid <steamid> | Lift a SteamID / IP ban. |
writeid / writeip | writeid | Persist the ban lists to banned_user.cfg / banned_ip.cfg. |
banid 0 STEAM_0:1:12345 kick
addip 0 1.2.3.4
writeid
writeip
Bans are in-memory until you run writeid/writeip, and only reload if exec banned_user.cfg + exec banned_ip.cfg are in your server.cfg. TF2 is free-to-play, so pair every ID ban with an IP ban to slow ban evasion.
Match settings
| Cvar | Description |
|---|---|
mp_timelimit <minutes> | Time per map before rotation (0 = unlimited). |
mp_winlimit <rounds> | Map ends when a team wins this many rounds. |
mp_maxrounds <rounds> | Hard cap on total rounds. |
mp_friendlyfire <0|1> | Team damage. |
mp_autoteambalance <0|1> | Auto-balance uneven teams. |
mp_teams_unbalance_limit <n> | Player-difference threshold for balancing (0 = off). |
mp_restartgame <seconds> | Restart the round after a countdown. |
mp_scrambleteams | Randomize team assignments now. |
tf_weapon_criticals <0|1> | Random crits (0 = competitive standard). |
sv_cheats <0|1> | Gate for cheat commands - never enable on a public server. |
Tournament mode
mp_tournament 1 enables ready-up matches (autobalance off, teams must ready). Use mp_tournament_restart to return to the ready-up state - mp_restartgame does not bypass it.
Bots
| Command | Description |
|---|---|
tf_bot_add [count] [class] [team] [difficulty] | Add AI bots. Class e.g. soldier; team red/blue; difficulty easy-expert. |
tf_bot_kick <name|all> | Remove a bot or all bots. |
tf_bot_quota <n> | Target number of bots. |
tf_bot_quota_mode <normal|fill|match> | fill keeps N total; match keeps N per human. |
tf_bot_difficulty <0-3> | Default difficulty for new bots. |
Maps and server control
| Command | Description |
|---|---|
changelevel <map> | Change map, keeping players connected. |
map <map> | Full session restart (disconnects everyone). |
nextlevel <map> | Queue the next map without changing now. |
exec <file> | Run a .cfg from tf/cfg/. |
hostname "<name>" | Set the browser name. |
sv_password "<pw|>" | Join password (empty = public). |
Communication
| Command | Description |
|---|---|
say <message> | Broadcast to all players. |
sv_alltalk <0|1> | Let everyone hear all voice chat. |
Quick reference
status # userids + SteamIDs
kickid 3 "Rule break" # kick by userid
banid 0 STEAM_0:1:12345 kick # permanent ban + kick
addip 0 1.2.3.4 # IP ban (F2P evasion)
writeid && writeip # persist bans
changelevel cp_process_final # change map
say "Server restarting soon"
Running these in MantaScope
MantaScope's web RCON connects to your TF2 server over Source RCON from the browser - run these commands, manage bans that persist across restarts, add and remove bots, and automate restarts and announcements without a desktop tool.