Pterodactyl Mcp
About
MCP server for Pterodactyl and Pelican game server panels. 73 tools for server management, power control, file operations, backups, schedules, databases, users, nodes, eggs, and allocations. Supports both stdio (npm) and remote (Cloudflare Worker) modes.
Details
- Author
- zefarie
- Downloads
- 361
- Categories
- Cloud Service
Jump to
- 73 tools covering server management, power control, and file operations.
- Supports both Pterodactyl and Pelican game server panels.
- Offers stdio and remote (Cloudflare Worker) transport modes.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Pterodactyl McpCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install it via npm for stdio mode or deploy a remote instance using a Cloudflare Worker. Invoke the tools through an MCP client that supports the configured transport.
list_servers
List all game servers on the Pterodactyl panel with name, status, and resource limits. Call this first to discover server IDs and identifiers. Returns numeric 'id' (for admin tools like suspend_server, delete_server, update_server_build) and short 'identifier' (for client tools like start_server, send_command, list_files). Supports pagination. Requires Application API key.
get_server
Get detailed static configuration for a server: name, description, resource limits, container config (egg, Docker image, startup command), allocations, and timestamps. Use for server config inspection. For live resource usage (CPU/RAM/disk), use get_server_resources instead. Sensitive environment variables are masked. Requires Application API key.
suspend_server
Suspend a server (admin action). Suspended servers are forcefully stopped and users cannot start them until unsuspended. Use to disable a server for policy violations or billing issues. Use unsuspend_server to re-enable. Requires Application API key.
unsuspend_server
Unsuspend a previously suspended server (admin action). Re-enables the server so users can start and use it again. Idempotent: calling on a non-suspended server has no effect. Requires Application API key.
reinstall_server
Reinstall a server's egg/template (admin action). WARNING: This wipes ALL server files and reinstalls from scratch. All player data, configs, and world files will be permanently deleted. Consider create_backup before proceeding. Requires Application API key.
create_server
Create a new game server on the panel (admin action). Requires egg ID (from list_eggs), owner user ID (from list_users), allocation ID, and resource limits. Use list_eggs to find available server templates and list_nodes to find nodes with capacity. Requires Application API key.
delete_egg
Permanently delete an egg/server template from a nest (admin action). WARNING: Servers currently using this egg will NOT be deleted but may not start correctly after the egg is removed. This action cannot be undone. Use get_egg to verify the egg before deleting. Requires Application API key.
delete_server
Permanently delete a server and ALL its data including files, databases, and backups (admin action). WARNING: This action cannot be undone. The server will be removed from the panel entirely. Consider create_backup before proceeding. Requires Application API key.
update_server_details
Update a server's metadata: name, description, owner, or external ID (admin action). Only specify the fields you want to change - current values are preserved for unspecified fields. For resource limits, use update_server_build. Requires Application API key.
update_server_build
Update a server's resource limits: memory, CPU, disk, swap, IO weight, CPU pinning, and feature limits like max databases/backups (admin action). Only specify the fields you want to change - current values are preserved for unspecified fields. Changes take effect after server restart. For server metadata (name, owner), use update_server_details. Requires Application API key.
update_server_startup
Update a server's startup configuration: startup command, Docker image, or egg template (admin action). Only specify the fields you want to change - current values are preserved for unspecified fields. Changes take effect after server restart. Requires Application API key.
list_server_databases
List databases attached to a server from the admin perspective (admin action). Returns database host, name, and connection details. For client-level database access, use list_client_databases instead. Requires Application API key.
list_users
List all user accounts registered on the panel (admin action). Returns user ID, username, email, language, and admin status. Use to find user IDs needed for create_server (owner) or update_server_details. Supports pagination. Requires Application API key.
get_user
Get detailed information for a specific user account by numeric ID (admin action). Returns username, email, language, admin status, and timestamps. Use list_users to find the user ID first. Requires Application API key.
create_user
Create a new user account on the panel (admin action). The user can then be assigned as owner of servers via create_server or update_server_details. SECURITY WARNING: Setting root_admin to true grants FULL panel access. Requires Application API key.
update_user
Update an existing user account's details: username, email, password, or admin status (admin action). Use list_users or get_user to find the user ID first. Requires Application API key.
list_nodes
List all infrastructure nodes in the panel (admin action). Returns node ID, name, FQDN, total/allocated resources (memory, disk, CPU), and maintenance mode status. Use to check available capacity before creating servers. Supports pagination. Requires Application API key.
get_egg
Get full details of a specific egg/server template (admin action). Returns name, Docker image, startup command, install script, configuration, and all environment variables with their default values and validation rules. Use list_nests to find the nest_id and list_eggs to find the egg_id. Requires Application API key.
get_node
Get detailed information about a specific infrastructure node (admin action). Returns name, FQDN, resource limits, allocated resources, scheme, and maintenance status. Use list_nodes to find the node ID first. Requires Application API key.
get_node_config
Get the Wings daemon configuration for a node (admin action). Returns the config.yml content needed to configure the Wings daemon. Sensitive fields (tokens, keys) are redacted. Use when setting up or troubleshooting a node. Requires Application API key.
import_egg
Import or create a new egg (server template) in a nest (admin action). Eggs define the Docker image, startup command, and configuration for a type of game server. Use list_nests to find the nest_id first. The egg will be available for creating new servers via create_server. Requires Application API key.
list_eggs
List all available eggs/server templates on the panel (admin action). Returns egg ID, name, description, Docker images, and startup command. Use to find the egg ID needed for create_server. Common eggs: Minecraft, Rust, Terraria, etc. Requires Application API key.
list_roles
List all admin roles defined on the panel (admin action). Returns role ID, name, and timestamps. Roles control admin panel access permissions. Requires Application API key.
list_mounts
List all mount points configured on the panel (admin action). Returns mount name, source path, target path, and read-only status. Mounts allow sharing host directories with server containers. Requires Application API key.
list_nests
List all nests (egg categories) on the panel (admin action). Nests group related eggs together (e.g. 'Minecraft', 'Voice Servers', 'Rust'). Returns nest ID, name, author, and description. Use the nest ID with list_eggs or get_egg to find specific server templates. Requires Application API key.
get_nest
Get details of a specific nest (egg category) by ID (admin action). Returns name, description, author, and metadata. Use list_nests to find the nest_id. Requires Application API key.
list_allocations
List all port allocations for a node (admin action). Shows IP, port, alias, and which server is using each allocation. Use list_nodes to find the node_id first. Requires Application API key.
create_allocation
Create new port allocations on a node (admin action). Ports can be individual ('25565') or ranges ('25565-25570'). Use list_nodes to find the node_id first. Requires Application API key.
delete_allocation
Delete a port allocation from a node (admin action). Cannot delete allocations that are in use by a server. Use list_allocations to find the allocation_id. Requires Application API key.
list_egg_variables
List all environment variables defined for an egg (admin action). Shows name, env_variable key, default value, validation rules, and user editability. On Pelican panels, use nest_id=0. Requires Application API key.
create_egg_variable
Add a new environment variable to an egg (admin action). The 'rules' field uses Laravel validation syntax (e.g., 'required|string|max:20'). Use list_nests and list_eggs to find the nest_id and egg_id. Requires Application API key.
update_egg_variable
Update an existing environment variable on an egg (admin action). All fields are optional - only provided fields will be changed. Use list_egg_variables to find the variable_id. Requires Application API key.
delete_egg_variable
Delete an environment variable from an egg (admin action). This is permanent and cannot be undone. Use list_egg_variables to find the variable_id. Requires Application API key.
export_egg
Export an egg as JSON that can be imported into another Pterodactyl panel (admin action). Returns the complete egg configuration including variables, install script, and Docker settings in the standard Pterodactyl egg export format. Use list_nests and list_eggs to find the nest_id and egg_id. Requires Application API key.
get_server_resources
Get real-time CPU, memory, disk, network usage and current power state (running/stopped/starting/stopping) for a server. Use when asked about performance, lag, resource consumption, or uptime. For static config details (limits, egg, allocations), use get_server instead. Requires Client API key.
start_server
Start a stopped game server. The server must be in 'offline' or 'stopped' state. Has no effect if already running. Use get_server_resources to check current power state before calling. For stopping, use stop_server. Requires Client API key.
stop_server
Stop a running game server gracefully. Sends a stop signal so the server shuts down cleanly (saves world data, disconnects players). If the server does not stop, use kill_server as a last resort. Requires Client API key.
restart_server
Restart a game server. Works whether the server is running or stopped. Equivalent to stop + start. Use when a config change requires a restart or when the server is unresponsive. Idempotent. Requires Client API key.
kill_server
Forcefully kill a server process immediately. WARNING: Unsaved data will be lost. Only use when stop_server fails or the server is frozen and unresponsive. Prefer stop_server for graceful shutdown. Requires Client API key.
send_command
Send a console command to a running game server (e.g., Minecraft '/say hello', '/whitelist add Player', '/op Player'). The server MUST be running or the command will fail silently. For power control (start/stop/restart), use the dedicated power tools instead. WARNING: Commands are sent directly to the server console and execute immediately. Requires Client API key.
list_files
List files and directories in a server's filesystem. Returns name, size, type (file/directory), and modification timestamps. Use to browse server files before reading or editing them. Start with directory '/' to see root contents. Requires Client API key.
read_file
Read the contents of a text file on a server. Returns the raw file content as a string. Use list_files first to find the file path. Common files: /server.properties, /bukkit.yml, /config.yml. Not suitable for binary files. Requires Client API key.
write_file
Write content to a file on a server. Creates the file if it does not exist, or overwrites it entirely if it does. Use read_file first to get current content if you need to modify an existing file. The server may need a restart for config changes to take effect. Requires Client API key.
create_folder
Create a new directory/folder on a server's filesystem. Specify the parent directory and the new folder name. Use list_files to verify the parent directory exists first. Requires Client API key.
delete_files
Permanently delete one or more files or folders on a server. WARNING: This cannot be undone. Use list_files first to verify the files exist. Consider create_backup before deleting important files. Requires Client API key.
compress_files
Compress one or more files or folders into a .tar.gz archive on the server. Useful before downloading large directories or for creating manual backups of specific files. Returns the archive details. Requires Client API key.
decompress_file
Extract/decompress an archive file (.tar.gz, .zip) on the server. Files are extracted into the same directory as the archive. Use list_files to verify the archive exists first. Requires Client API key.
rename_file
Rename or move a file or folder on a server. Can be used to change a filename or move a file to a different location within the same directory root. Use list_files to verify the file exists first. Requires Client API key.
list_backups
List all backups for a server. Returns backup UUID, name, size, success status, lock status, and creation timestamps. Use before create_backup to check if backup limit is reached. Requires Client API key.
create_backup
Create a new backup of a server. The backup runs in the background and may take several minutes depending on server size. Use list_backups to check backup status and available slots. The server's backup limit (from list_servers feature_limits.backups) determines the maximum number of backups. Requires Client API key.
list_schedules
List all scheduled tasks (cron jobs) for a server. Returns schedule name, cron expression, active status, and last/next run times. Use to check automated restarts, backups, or command schedules. Requires Client API key.
list_client_databases
List databases attached to a server from the client/user perspective. Returns database name, host, and connection details. For admin-level database management, use list_server_databases instead. Requires Client API key.
list_subusers
List all sub-users who have access to a specific server, including their permissions. Returns UUID, username, email, and permission list for each sub-user. Use to audit who has access to a server. Requires Client API key.
get_startup_variables
Get startup configuration for a server: startup command, environment variables, and available Docker images. Use to inspect or troubleshoot server startup parameters. For modifying startup config (admin), use update_server_startup instead. Requires Client API key.
get_account
Get the current authenticated user's account information (username, email, admin status, language). Use to verify which account the Client API key belongs to. Requires Client API key.
get_schedule
Get details of a specific scheduled task for a server, including its tasks (actions). Returns schedule name, cron expression, active status, last/next run times, and all associated tasks. Use list_schedules first to find schedule IDs. Requires Client API key.
create_schedule
Create a scheduled task for a server (e.g., automatic restarts, backups). Uses cron syntax for timing. Use list_schedules to see existing schedules. Common examples: '0 */6 * * *' for every 6 hours, '0 3 * * *' for daily at 3 AM. Requires Client API key.
update_schedule
Update an existing scheduled task for a server. All cron fields and the name must be provided (this is a full replace). Use get_schedule to see the current values before updating. Requires Client API key.
delete_schedule
Delete a scheduled task from a server. This removes the schedule and all its associated tasks permanently. Use list_schedules to find the schedule_id. Requires Client API key.
create_schedule_task
Add a task to a schedule. Actions: 'command' (console command), 'power' (start/stop/restart/kill), 'backup' (create backup). time_offset delays execution in seconds after the schedule triggers. Use get_schedule to see existing tasks on a schedule. Requires Client API key.
delete_schedule_task
Remove a task from a schedule. Use get_schedule to see the tasks and their IDs on a schedule before deleting. Requires Client API key.
create_subuser
Add a sub-user to a server by email. Permissions are strings like 'control.start', 'control.stop', 'control.restart', 'file.read', 'file.create', 'file.update', 'file.delete', 'backup.create', 'backup.read', 'database.read', etc. Use list_subusers to see existing sub-users. Requires Client API key.
update_subuser
Update the permissions of an existing sub-user on a server. This replaces ALL permissions, so include every permission the user should have. Use list_subusers to find the user UUID and see current permissions. Requires Client API key.
delete_subuser
Remove a sub-user's access to a server. This revokes all their permissions immediately. Use list_subusers to find the user UUID. Requires Client API key.
create_database
Create a new MySQL database for a server. 'remote' controls which hosts can connect (% = any host). The server must have available database slots (check feature_limits.databases from list_servers). Use list_client_databases to see existing databases. Requires Client API key.
delete_database
Delete a MySQL database from a server. WARNING: This permanently destroys the database and all its data. Use list_client_databases to find the database ID. Consider creating a backup first. Requires Client API key.
rotate_database_password
Generate a new random password for a database. Returns the new connection details including the new password. The old password is immediately invalidated. Use list_client_databases to find the database ID. Requires Client API key.
delete_backup
Delete a backup from a server. This permanently removes the backup file and frees a backup slot. Use list_backups to find the backup UUID. Requires Client API key.
download_backup
Get a temporary download URL for a backup. The URL expires after a short time. Use list_backups to find the backup UUID. Only completed backups (is_successful: true) can be downloaded. Requires Client API key.
restore_backup
Restore a server from a backup. If truncate is true, all current files are deleted before restoring. WARNING: This is irreversible and will overwrite existing files. The server should be stopped before restoring. Use list_backups to find the backup UUID. Requires Client API key.
download_file
Get a temporary download URL for a file on the server. Useful for large files or binaries that can't be read as text. The URL expires after a short time. Use list_files to find file paths. For small text files, use read_file instead. Requires Client API key.
get_recent_logs
Read the most recent log lines from a server. Defaults to reading /logs/latest.log (Minecraft). For other server types, specify the log file path. Returns the last N lines. Use this after send_command to check the server's response, or to diagnose crashes and errors. Requires Client API key.
get_server_activity
Get the activity/audit log for a server. Shows events like starts, stops, file edits, commands sent, and user actions. Useful for tracking what happened on a server. This endpoint may not be available on all Pterodactyl versions. Requires Client API key.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"pterodactyl mcp": {
"pterodactyl": {
"command": "npx",
"args": [
"-y",
"@zefarie/pterodactyl-mcp"
],
"env": {
"PTERODACTYL_URL": "https://panel.example.com",
"PTERODACTYL_APP_KEY": "papp_your_application_key",
"PTERODACTYL_CLIENT_KEY": "ptlc_your_client_key"
}
}
}
}
}
McpServers
{
"pterodactyl": {
"command": "npx",
"args": [
"-y",
"@zefarie/pterodactyl-mcp"
],
"env": {
"PTERODACTYL_URL": "https://panel.example.com",
"PTERODACTYL_APP_KEY": "papp_your_application_key",
"PTERODACTYL_CLIENT_KEY": "ptlc_your_client_key"
}
}
}
MCP server for Pterodactyl and Pelican game server panels. 73 tools for server management, power control, file operations, backups, schedules, databases, users, nodes, eggs, and allocations. Supports both stdio (npm) and remote (Cloudflare Worker) modes.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.

