Most SMP communities live in two places at once: in the game, and in a Discord server. DiscordSRV connects the two so they stop being separate rooms. It bridges chat both ways, mirrors the events people care about, and can link a player's Minecraft identity to their Discord account so ranks and roles stay in step across both. This post covers what it does, how the setup fits together at a high level, how account linking and role sync work, and the gotchas that catch people out. It is a deep dive from the essential SMP plugins starter kit, and part of the wider guide to running a Minecraft SMP.
What DiscordSRV does
The headline feature is two-way chat. A message typed in your in-game chat appears in a chosen Discord channel, and a message typed in that Discord channel appears in game, so someone at their desk without the game open can still talk to the players who are on. On top of that it posts join and leave messages to Discord, so you can see the server's activity at a glance without being in game yourself.
It can also mirror your server console into a private Discord channel, which is a genuinely useful way to watch logs and run the occasional command from your phone, as long as that channel is locked down to staff only. Beyond chat and console, the feature the rest depends on is linked accounts: a player proves that a given Minecraft account and a given Discord account are the same person, and once that link exists you can sync roles and groups between the two.
Setup at a high level
The setup has a few moving parts, and it is worth understanding the shape before you start rather than following steps blindly. First you create a bot application in the Discord developer portal, which gives you a bot user and a token. The token is the secret that lets DiscordSRV log in as that bot, so you treat it like a password: it goes in the plugin config and nowhere public.
Then you invite the bot to your Discord server with the right permissions, and you collect the channel IDs for the channels you want to use, the main chat channel and, if you want it, the console channel. Those IDs and the token go into the DiscordSRV config, which is where you map an in-game channel to a Discord channel. DiscordSRV needs two privileged gateway intents switched on for the bot in the developer portal, the Message Content Intent so the bot can read what people type, and the Server Members Intent so it can track who joins, leaves and holds which role. On the invite, the simplest path the DiscordSRV docs suggest is to give the bot Administrator, or if you would rather scope it down, the read and send message permissions for the channels it uses. In the config the token goes in the BotToken field, and you map an in-game channel to a Discord channel under Channels, pairing the channel name with its Discord channel ID.
The plugin ships with a fairly well-commented config, so once the token, intents and channel IDs are correct, the default chat bridge works with little else. Start there, confirm chat is flowing both ways, and only then move on to the optional pieces like the console channel and role sync.
Account linking
Account linking is how DiscordSRV knows that a Minecraft player and a Discord user are the same person. The usual flow is that a player runs a link command in game and receives a short code, then sends that code to the bot in Discord, which completes the link. Once linked, the plugin can act on both identities together, which is what everything below depends on.
Linking is worth encouraging because it is the gate to the good features. You can leave chat and join messages working without anyone linking, but role sync, and any perks you want to grant based on Discord membership, only work for players who have linked. Make the link command easy to find, and consider a small in-game nudge for unlinked players.
Syncing Discord roles to LuckPerms groups
This is the feature that makes the integration feel joined up. DiscordSRV can map a Discord role to an in-game group, so when someone is given a role in Discord they automatically receive the matching group in your permissions plugin, and lose it when the role is removed. If you run LuckPerms, which we recommend and cover in setting up LuckPerms, that means your Discord ranks and your in-game ranks can be managed from one place.
The common use is supporter and staff ranks. Someone becomes a supporter role in Discord, and DiscordSRV grants them the supporter group in game, with whatever kit access or home limit that group carries, without you touching the console. You set this up in the synchronisation config, pairing each Minecraft group with a Discord role ID under GroupRoleSynchronizationGroupsAndRolesToSync, and the pairing is case-sensitive so the group name has to match exactly. By default it runs both ways: a role granted in Discord adds the matching group in game, and a group granted in game adds the role in Discord, and if you only want it to read from Minecraft and write to Discord you turn its one-way option on. The catch is that role sync only applies to linked players, so it rests on the account linking above actually being done.
Common gotchas
The single most common problem is the message content intent being switched off. If chat relays one way but not the other, or the bot seems connected but silent, this is the first thing to check in the developer portal. The second is permissions: if the bot cannot see or post in the channel you gave it, nothing flows, so confirm the bot's role can read and send messages in that specific channel, which is separate from access to the server as a whole.
Two more worth naming. The console channel must be private and staff-only, because anyone who can type in it may be able to run server commands, so treat it with the same care as SSH access. And keep the bot token secret: it should never end up in a screenshot, a pasted config or a public repo, and if it ever leaks, regenerate it in the developer portal straight away. Beyond those, most setup pain comes down to a wrong channel ID or a typo in the config, so when something does not work, re-check the IDs and the token before assuming anything deeper is broken.
Where it fits
DiscordSRV is optional, but for a community that already runs on Discord it turns two separate rooms into one. Get the bot, token, intents and channel IDs right, confirm chat flows both ways, then layer on account linking and role sync once the basics are solid. For the rest of the plugins that make up a healthy SMP, the essential SMP plugins guide has the full starter kit.
If you are still choosing where to run the server itself, browse our game hosting and pick the box the community grows on.