MCP.so
Sign In
P

Pterodactyl Mcp

@zefarie

About Pterodactyl Mcp

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.

Config

Add this server to your MCP-compatible client using the configuration below.

{
  "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"
      }
    }
  }
}

Tools

73

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

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.

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

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

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

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

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

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.

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.

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

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

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

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

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.

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

Overview

What is Pterodactyl Mcp?

Pterodactyl Mcp is an MCP server that integrates with Pterodactyl and Pelican game server panels. It provides 73 tools for server management, power control, file operations, backups, schedules, databases, users, nodes, eggs, and allocations.

How to use Pterodactyl Mcp?

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.

Key features of Pterodactyl Mcp

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

Use cases of Pterodactyl Mcp

  • Automate game server power actions (start, stop, restart).
  • Manage files, backups, and schedules on game servers.
  • Configure databases and users for game server panels.
  • Administer nodes, eggs, and allocations across panels.

FAQ from Pterodactyl Mcp

Which game server panels are supported?

Pterodactyl Mcp works with both Pterodactyl and Pelican game server panels.

How many tools does Pterodactyl Mcp include?

It offers 73 tools for server management, file operations, backups, schedules, databases, users, nodes, eggs, and allocations.

What transport modes are available?

You can use stdio (via npm) or remote via a Cloudflare Worker.

Are there any known limits?

Frequently asked questions

Which game server panels are supported?

Pterodactyl Mcp works with both Pterodactyl and Pelican game server panels.

How many tools does Pterodactyl Mcp include?

It offers 73 tools for server management, file operations, backups, schedules, databases, users, nodes, eggs, and allocations.

What transport modes are available?

You can use stdio (via npm) or remote via a Cloudflare Worker.

Comments

More Cloud & Infrastructure MCP servers