Pterodactyl Mcp

by zefarie

361 downloads
Not rated
GitHub

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

- 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:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Pterodactyl Mcp
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. 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.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.