Skip to main content
McDis-RCON is configured through a single YAML file called md_config.yml. This file controls all aspects of McDis behavior, from Discord connection to process management.

Configuration File Location

The md_config.yml file must be located in the directory where you run mcdis run (your McDis root directory):
McDis/
├── md_config.yml  ← Configuration file
├── server1/
├── server2/
└── ...

Generating Configuration

Create the default configuration file:
mcdis init
This generates a template md_config.yml with commented examples:
# =========================================
#         McDis RCON Configuration
# =========================================

### Application designed to stream the Minecraft console to Discord.
### This application is intended to work on Linux systems.

### General Advice:
### While it may run on Windows, some features may not work as expected.
### The File Manager may not function properly if you do not own the files.
### To apply any changes, you must restart McDis!
Configuration changes require a restart! McDis-RCON only reads the configuration file on startup. Use the Restart button in the panel or restart manually.

Configuration Structure

The configuration file has several main sections:

Bot Token

Discord bot authentication token

Panel ID

Discord channel ID for the control panel

Language

Interface language (en/es)

Backups

Number of backups to retain (1-5)

Flask

File download server configuration

Processes

Server and network definitions

Full Configuration Example

Here’s a complete example with explanations:
# =========================================
#         McDis RCON Configuration
# =========================================

### Discord Bot Configuration
Bot Token: YOUR_BOT_TOKEN_HERE

### Panel Channel ID
Panel ID: 1234567890123456789

### Language Settings
### Valid Values: [en, es]
### Default Value: en
Language: en

### Backup Retention
### Valid Values: [1, 5] (inclusive)
### Default Value: 3
Backups: 3

### Flask Download Server
Flask:
  Allow: false
  IP: '0.0.0.0'
  Port: 8000

### Process Definitions
Processes:
  Networks:
    velocity:
      start_cmd: java -Xms1G -Xmx2G -jar velocity.jar
      stop_cmd: end
      blacklist:
        - 'logged in'
        - 'has disconnected'

  Servers:
    survival:
      start_cmd: java -Xms4G -Xmx8G -jar paper.jar nogui
      stop_cmd: stop
      blacklist:
        - 'Can\'t keep up'
        - 'Debug'
        
    creative:
      start_cmd: java -Xms2G -Xmx4G -jar fabric-server-launch.jar nogui
      stop_cmd: stop
      blacklist: []

Configuration Sections Explained

Bot Token

Bot Token: YOUR_BOT_TOKEN_HERE
  • Type: String
  • Required: Yes
  • Description: Your Discord bot token from the Discord Developer Portal
Get your bot token from the Discord Developer Portal. See Discord Setup for details.

Panel ID

Panel ID: 1234567890123456789
  • Type: Integer
  • Required: Yes
  • Description: Discord channel ID where the panel will be created
Enable Developer Mode in Discord (User Settings → Advanced → Developer Mode), then right-click a channel and select “Copy ID”.

Language

Language: en
  • Type: String
  • Required: No
  • Default: en
  • Valid Values: en (English), es (Spanish)
  • Description: Interface language for messages and responses

Backups

Backups: 3
  • Type: Integer
  • Required: No
  • Default: 3
  • Valid Values: 1-5 (inclusive)
  • Description: Maximum number of backup versions to retain per process
When this limit is reached, the oldest backup is automatically deleted when creating a new one.

Flask

Flask:
  Allow: false
  IP: '0.0.0.0'
  Port: 8000
  • Allow:
    • Type: Boolean
    • Default: false
    • Description: Enable/disable Flask download server
  • IP:
    • Type: String
    • Default: '0.0.0.0'
    • Description: IP address to bind Flask server (use public IP for external access)
  • Port:
    • Type: Integer
    • Default: 8000
    • Description: Port for Flask server to listen on
Flask server is required for downloading files larger than 5MB. Ensure the port is open in your firewall and the IP is publicly accessible.

Processes

The processes section defines all managed servers and networks:
Processes:
  Networks:
    <network_name>:
      start_cmd: <command>
      stop_cmd: <command>
      blacklist: [<terms>]
      
  Servers:
    <server_name>:
      start_cmd: <command>
      stop_cmd: <command>
      blacklist: [<terms>]
See Process Setup for detailed information.

Configuration Validation

McDis-RCON validates configuration on startup:

Bot Token Validation

✖ The 'Bot Token' variable must be a string.

Panel ID Validation

✖ The 'Panel ID' variable must be an integer.

Language Validation

✖ The 'Language' variable must be one of the following: en, es.

Backups Validation

✖ The 'Backups' variable must be between 1 and 5, not 10.

Flask Validation

✖ The 'Flask: Allow' variable must be a boolean.
✖ The 'Flask: IP' variable must be a string.
✖ The 'Flask: Port' variable must be an integer.

Process Validation

✖ my_server: The process name must not exceed 40 characters.
✖ .mdbackups: A process cannot be named '.mdbackups', '.mdaddons' or Flask.
✖ You can't have two processes with the same name: my_server
✖ server@123: Process names can only contain letters, numbers, periods (.), hyphens (-), underscores (_), and spaces.
✖ my_server: The 'start_cmd' variable must be a string.
✖ my_server: The 'blacklist' variable must be a list of strings.
If validation fails, McDis-RCON will exit with an error message. Fix the issue in md_config.yml and restart.

Configuration Best Practices

Backup Configuration

Keep a backup copy of md_config.yml before making changes

Use Comments

Add comments to document your configuration decisions

Validate YAML

Use a YAML validator to check syntax before restarting

Version Control

Consider using Git to track configuration changes

Common Configuration Patterns

Single Server Setup

Processes:
  Networks:
  Servers:
    my_server:
      start_cmd: java -Xms4G -Xmx8G -jar paper.jar nogui
      stop_cmd: stop
      blacklist:
        - 'Can\'t keep up'

Multi-Server Network

Processes:
  Networks:
    proxy:
      start_cmd: java -Xms1G -Xmx2G -jar velocity.jar
      stop_cmd: end
      blacklist: []
      
  Servers:
    lobby:
      start_cmd: java -Xms2G -Xmx4G -jar paper.jar nogui
      stop_cmd: stop
      blacklist: []
      
    survival:
      start_cmd: java -Xms6G -Xmx12G -jar paper.jar nogui
      stop_cmd: stop
      blacklist: []
      
    creative:
      start_cmd: java -Xms2G -Xmx4G -jar paper.jar nogui
      stop_cmd: stop
      blacklist: []

Development Setup

# Development configuration
Language: en
Backups: 5  # Keep more backups during development

Flask:
  Allow: true  # Enable for testing downloads
  IP: '127.0.0.1'  # Local only
  Port: 8000

Processes:
  Servers:
    test_server:
      start_cmd: java -Xms1G -Xmx2G -jar server.jar nogui
      stop_cmd: stop
      blacklist: []  # No filtering during development

Production Setup

# Production configuration
Language: en
Backups: 3  # Standard retention

Flask:
  Allow: true
  IP: '123.45.67.89'  # Public IP
  Port: 8000

Processes:
  Networks:
    velocity:
      start_cmd: java -Xms1G -Xmx2G -XX:+UseG1GC -jar velocity.jar
      stop_cmd: end
      blacklist:
        - 'logged in'
        - 'has disconnected'
        - 'ServerConnector'
        
  Servers:
    lobby:
      start_cmd: java -Xms4G -Xmx4G -XX:+UseG1GC -jar paper.jar nogui
      stop_cmd: stop
      blacklist:
        - 'Can\'t keep up'
        - 'Debug'
        - 'moved too quickly'

Editing Configuration

You can edit the configuration file:

Via File Manager (Discord)

1

Open File Manager

Click Files in the Discord panel
2

Navigate to Root

Ensure you’re in the McDis/ directory
3

Select md_config.yml

Choose md_config.yml from the dropdown
4

Edit

Click Edit to open the text editor (if file is < 4000 chars)Or click Request to download, edit locally, and re-upload

Via SSH/Terminal

# Using nano
nano /path/to/mcdis/md_config.yml

# Using vim
vim /path/to/mcdis/md_config.yml

# Using your preferred editor
code /path/to/mcdis/md_config.yml

Applying Configuration Changes

After editing md_config.yml:
1

Save File

Ensure your changes are saved to disk
2

Validate Syntax

Optionally validate YAML syntax:
python3 -c "import yaml; yaml.safe_load(open('md_config.yml'))"
3

Restart McDis

Click the Restart button in the Discord panelOr restart manually:
# In McDis terminal, type:
exit
# Then restart:
mcdis run
4

Verify Changes

Check the terminal output for validation errors

Troubleshooting Configuration Issues

Common causes:
  • Missing colon after key
  • Incorrect indentation (use spaces, not tabs)
  • Unquoted strings with special characters
  • Missing quotes around strings
Example fix:
# Wrong
Bot Token YOUR_TOKEN

# Right
Bot Token: YOUR_TOKEN
Possible causes:
  • File not named md_config.yml exactly
  • File in wrong directory
  • File encoding issues
Solution: Ensure file is in the same directory where you run mcdis run and named exactly md_config.yml.
Cause: Configuration is only read on startupSolution: Restart McDis-RCON after making changes.
Cause: Process names can only contain: letters, numbers, ., -, _, spacesSolution: Rename process to use only allowed characters:
# Wrong
server@123: ...

# Right
server_123: ...

Configuration Reference

For detailed information on specific configuration sections:

Discord Setup

Bot token and panel configuration

Process Setup

Configuring servers and networks

Advanced Options

Flask, backups, and optimization

Quickstart

Step-by-step first-time setup

Example Configurations

See real-world configurations in production:

AeternumBot

Complete configuration for Aeternum SMP

Template Config

Use mcdis init to generate a template with examples

Build docs developers (and LLMs) love