Self-hosted Minecraft ↔ Discord bridge

Your server.
Your Discord.
Connected.

Keep the conversation going between Minecraft and Discord. Relay chat, follow player activity, and manage your server from one familiar place.

One Minecraft server. One Discord community. Your own bot.
Illustrative demo
Minecraft chat
Discord · craftcord
illustrative · not live evidence
Live-tested · pre-releaseTested on vanilla English Minecraft Java 26.2 (Temurin 25.0.1) with Python 3.13.7 on Windows: startup, local-log chat and events, in-game Discord messages confirmed by a player, moderation commands, and Discord test-server checks. Pterodactyl log streaming has not been live-tested. No release has been published yet; installs are a development checkout.
Tested environmentVanilla English-language Minecraft Java 26.2
Python3.13 (live-tested: 3.13.7 on Windows)
ScopeOne Discord server and one Minecraft server per install
Chat parserPlugin-rewritten chat lines with custom ranks or prefixes are not recognized
Built for your stack

Useful where your community already is.

CraftCord keeps the bridge small, inspectable, and under your control.

01

Keep everyone in the conversation

Two-way chat relay means players and Discord members can talk without asking where everyone is. Minecraft lines are posted by your bot. Discord lines show up in-game under the sender’s display name.

LIVE RELAY · SAMPLE
Minecraft

[Discord] Jamie: Logging in now. I’ll bring the stone!

Discord · from your bot

[Minecraft] Alex: Anyone working on the town hall?

02

Know what’s happening in your world

Joins, leaves, deaths, and advancements arrive as colored embeds in the channel your community watches. Challenges and goals use the same style as advancements.

🟢 Jamie joined the game

💀 River was slain by Zombie

🏆 Alex earned the advancement [Stone Age]

🔴 River left the game

03

Your server at a glance

A pinned Discord embed updates in place, every 30 seconds by default. Uptime is observed reachability through RCON, and who’s online uses the server’s player sample, so the list can be incomplete. If the server can’t be reached, the same message switches to Server Offline and keeps the address and last-updated time.

🟢 Server Online

Town Hall SMP

Address
play.server.com
Version
26.2
Ping
42 ms
Players
3 / 20
Uptime
3h 18m

Who’s onlineJamie, Alex, River

04

Manage access from Discord

Named slash commands follow member, moderator, and administrator permission tiers.

COMMANDS
/statusMember
/whitelist addModerator
/kickModerator
05

Run it your way

Run CraftCord on your own computer or leave it online on a cloud host such as PebbleHost. Read local logs, use compatible Pterodactyl access, and keep credentials out of the website.

Your environment, your configuration.Optional staff-only console mirroring is disabled by default.
Product screenshots

The real thing, in Discord and Minecraft.

Captures from a live test server running vanilla Java 26.2, separate from the illustrative demo above.

CraftCord pinned status embed in a Discord #server-status channel showing Server Online, address play.server.com, version 26.2, 19 ms ping, 0 of 20 players, and uptime.
Pinned status embed · server onlineLive capture from a test server running vanilla Java 26.2.
CraftCord event embeds in Discord: a player joined the game, two deaths, an advancement [Stone Age], and the player leaving the game.
Join, death, advancement, and leave embedsLive capture from a test server running vanilla Java 26.2.
Discord chat channel showing a member message followed by the CraftCord bot relaying in-game chat as [Minecraft] SwornHero: Yea!! We are about to start on the Roof!!
Minecraft → Discord chatIn-game chat posted to Discord by the bot as [Minecraft] Player: message.
Minecraft chat showing a blue [Discord] tag before a relayed Discord message, followed by the player replying in-game.
Discord → Minecraft chatDiscord messages appear in-game with a blue [Discord] tag.
CraftCord reply to the /status slash command showing Server Offline, “Cannot reach the Minecraft server right now.”, address play.server.com, and the last-updated time.
/status command · server offlineReply to /status while the Minecraft server is unreachable.
Minecraft disconnect screen reading “Failed to connect to the server. You are banned from this server. Reason: Test Ban.”
Minecraft banned screenWhat a player sees after being banned with /ban.
Ephemeral CraftCord replies in Discord: /ban returns “Banned SwornHero: Test Ban” and /pardon returns “Unbanned SwornHero”.
Ban and Pardon commands in DiscordModerator-only replies are visible only to the person who ran the command.
Minecraft server console lines mirrored to a Discord console channel, showing the RCON ban, the banned player being disconnected, and the RCON unban.
Ban and Pardon shown in the console channel on DiscordOptional staff-only console mirroring (ENABLE_CONSOLE_MIRROR=true).
Where it runs

Your machine or the cloud.

CraftCord is self-hosted. Keep it on your PC while you develop, or leave it running on a Discord bot host. This website does not host the bot for you.

How it works

Four steps. No central CraftCord service.

The website helps you get oriented. You run the bot on your computer or a host you choose.

01

Create your Discord bot application

Make an application in the Discord Developer Portal, invite it to one guild, and keep the token in your own .env file.

02

Connect Minecraft

Give CraftCord RCON access and a local latest.log or compatible Pterodactyl log source to read server activity.

03

Configure your community

Choose the Discord channels, roles, and server settings in your local configuration.

04

Run it yourself

Start main.py on your computer or a cloud host such as PebbleHost. The website does not run or host the bot for you.

Questions, answered

Know before you connect.

Start with the source

Bring your community together.

Read the setup guide, then make CraftCord yours.