pterodactyl-panel-mcp
MCP server inside the Pterodactyl panel (v2 extension): let Claude, ChatGPT or Cursor manage servers, files, consoles and schedules as you, over OAuth 2.1.
Install / Use
claude mcp add jackh54 -- npx -y github:jackh54/pterodactyl-panel-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Tags
Our assessment of pterodactyl-panel-mcp
pterodactyl-panel-mcp scores 83/100 on our quality scale, 663rd of 925 AI & Machine Learning skills we index.
Its MCP Server is 15 KB long, well organised into 15 sections with 9 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated today, so pterodactyl-panel-mcp is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
pterodactyl-panel-mcp compared with similar skills
All 4 of these similar skills score higher than pterodactyl-panel-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| pterodactyl-panel-mcp (this skill)by jackh54 | 83 | 3 | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 105.5k | 3d ago | CLAUDE.md |
| claude-memby thedotmack | 100 | 104.0k | today | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 88.7k | 2d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.1k | today | CLAUDE.md |
Frequently asked questions
- How do I install pterodactyl-panel-mcp?
- Run
claude mcp add jackh54 -- npx -y github:jackh54/pterodactyl-panel-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does pterodactyl-panel-mcp work with?
- It is written for Claude Code, Claude Desktop and Cursor, as a MCP Server file. Other agents that read the same format can often use it too.
- Is pterodactyl-panel-mcp safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is pterodactyl-panel-mcp still maintained?
- The repository was last updated today, so pterodactyl-panel-mcp is actively maintained.
Skill content
View source on GitHub✨ Why
Running game servers means a lot of small, careful jobs: "why did the lobby crash at 3am?", "bump view-distance on survival and restart it after the countdown", "which plugin is spamming this error?". Panel MCP lets an AI assistant do those jobs through your panel, not around it:
- No API keys to paste anywhere. The client signs in with OAuth 2.1, the same way you sign in to the panel (password, 2FA, passkeys), and you pick what it may do on a consent screen.
- Never more than you. Every tool checks the same panel permission as the matching API endpoint. A subuser with console-only access gets console-only tools.
- Everything on the record. Each action lands in the panel's activity log once, as you, under the panel's own event names. It reads exactly like your own clicks.
- One click to cut it off. Account → Connected Apps lists every app with its access and last use. Remove one and its tokens die instantly.
- Runs in the panel process. No extra service, port, container or database: install the extension and add the URL to your client.
🧭 How it works
<p align="center"> <img src="docs/assets/how-it-works.png" alt="AI client connects, the user signs in and approves scopes, gets OAuth tokens, then calls tools on /mcp which check scope and panel permission and run the panel's own actions against Wings" width="100%"> </p>- Your MCP client finds the authorization server through
/.well-known/oauth-protected-resourceand registers itself (dynamic client registration). - You sign in to the panel and approve the connection on a consent page that shows where you will be sent back to and lets you choose Read, Control and Change files and settings.
- The client receives an access token (1 hour) and a rotating refresh token (30 days) and calls tools on
/mcp(Streamable HTTP, JSON responses). - Each tool call is checked against the scopes you granted and your panel permissions, then runs through the panel's own action classes, so anything that hooks those actions (other extensions, activity logging) sees MCP calls too.
📦 Install
[!IMPORTANT] Panel MCP is an extension for Pterodactyl Panel v2 (the
2.0-developbranch and its extension SDK). It does not run on 1.x.
From a release (recommended). Download panel-mcp.pteroext from the latest release, then on the panel host:
cd /var/www/pterodactyl
php artisan p:extension:install /path/to/panel-mcp.pteroext --enable
That runs the extension's migration (four ext_panel_mcp_oauth_* tables) and publishes its frontend. Reload the panel in your browser.
From source. Build it against your panel's SDK (from a panel checkout where npm ci && npm run build has run):
git clone https://github.com/jackh54/pterodactyl-panel-mcp.git && cd pterodactyl-panel-mcp
mkdir -p .sdk && (cd /path/to/panel/packages/sdk && npm pack --pack-destination "$OLDPWD/.sdk")
mv .sdk/pterodactyl-sdk-*.tgz .sdk/pterodactyl-sdk.tgz
npm install && npm run build && npm test
cd /var/www/pterodactyl
php artisan p:extension:pack /path/to/pterodactyl-panel-mcp --output=/tmp/panel-mcp.pteroext
php artisan p:extension:install /tmp/panel-mcp.pteroext --enable
Behind nginx, make sure /.well-known/ requests reach PHP (the stock Pterodactyl nginx config already sends everything that is not a file to index.php). Behind Cloudflare or another proxy, keep request timeouts at 100 seconds or more: wait_for_console waits up to 90.
🔌 Connect an AI client
Your MCP server URL is your panel address plus /mcp:
https://panel.example.com/mcp
| Client | Where to add it |
|---|---|
| Claude (claude.ai, Desktop, mobile) | Settings → Connectors → Add custom connector → paste the URL |
| Claude Code | claude mcp add --transport http panel https://panel.example.com/mcp |
| ChatGPT | Settings → Connectors (developer mode) → add a custom connector with the URL |
| Cursor | ~/.cursor/mcp.json → {"mcpServers": {"panel": {"url": "https://panel.example.com/mcp"}}} |
| VS Code | Command palette → MCP: Add Server → HTTP → paste the URL |
| Anything else | Any client that supports remote MCP servers with OAuth |
The client opens your panel, you sign in (if you aren't already) and approve. Connections show up under Account → Connected Apps.
<p align="center"> <img src="docs/assets/screenshot-account.png" alt="The panel account page with the Connected Apps card added by the extension" width="80%"> </p>🧰 Tools
50 built-in tools. Each one needs the scope shown and the panel permission the equivalent API endpoint requires. Admin tools only exist for root administrators; nobody else even sees them listed.
<table> <tr><th>Read</th><th>Control</th></tr> <tr valign="top"><td>list_servers · servers you can see, with live state<br>
get_server · details, limits, allocations, variables, image choices<br>
get_console · recent console output<br>
wait_for_console · wait for a line (e.g. Done ()<br>
list_files · read_file · search_files<br>
download_file · any file, base64 or a link<br>
inspect_archive · look inside a jar/zip, read plugin.yml, outline a .class<br>
list_schedules · get_activity<br>
list_backups · download_backup · a short-lived link<br>
list_allocations · ports and their notes<br>
list_databases · passwords only with Manage access<br>
get_ops_guide 🛡️ · your team's runbook<br>
query_database 🛡️ · read-only SQL
power_action · start, stop, restart, kill<br>
send_command · run a console command and return the new output<br>
run_schedule · trigger a schedule now<br>
create_backup · with a name, lock and ignore patterns
edit_file · exact search-and-replace edits<br>
write_file · create_folder<br>
rename_file · copy_file · delete_files<br>
compress_files · decompress_file<br>
pull_file · download a URL to the server<br>
upload_file · any file up to 4 MB<br>
create_upload_link · for bigger files<br>
set_startup_variable · set_docker_image<br>
save_schedule · delete_schedule<br>
save_schedule_task · delete_schedule_task<br>
update_server_config 🛡️ · limits, startup, image
restore_backup · over the files, or onto a clean server<br>
delete_backup · set_backup_lock<br>
add_allocation · update_allocation · remove_allocation<br>
create_database · returns the details for a plugin config<br>
rotate_database_password · delete_database<br>
rename_server · reinstall_server
🛡️ = root administrators only. query_database exists only when you configure a read-only database account; get_ops_guide answers once you install a guide.
Manage backups, ports and databases arrived in 1.1. Connections approved before that don't have it: remove the app under Connected Apps and connect again to tick the box. On panel builds older than an action a tool needs, that tool is simply not listed.
Every client also receives short instructions when it connects: read before changing, confirm before restarts or deletes, never run a plugin's reload command, never echo secrets. Add your own house rules under Admin → Extensions → Panel MCP.
🔒 Security
Panel MCP was written to be safe to point an AI at a production network.
| | |
|---|---|
| Authorization | OAuth 2.1 with mandatory PKCE (S256), exact redirect URI matching, RFC 8707 resource checks, dynamic client registration for public clients only. |
| Consent | Only from a real panel session (password + 2FA or passkey), CSRF protected, single use, and it names the site you will be sent back to, because client names are self-chosen. |
| Tokens | Random, stored only as SHA-256 hashes, bound to one connection. Codes live 2 minutes and work once; reusing a code revokes the connection. Refresh tokens rotate, and replaying an old one after a short retry window revokes the connection. |
| Permissions | A scope can only narrow what your account can already do. Tools run the panel's own permission checks for the server and action, and refuse suspended servers. The panel's "require 2FA" setting applies to MCP connections too. Database passwords are only returned to connections with Manage access, for accounts the panel would show them to. |
| Isolation | /mcp takes bearer tokens only: no cookies, no session, no CSRF surface, so a signed-in browser tab can't drive it. Per-connection rate limit (120 requests/minute by default). Backup restores, new ports and new databases also count against the panel's own per-server limits, shared with clicks in the panel. |
| Audit | Every change is written to the activity log as the user who connected; a connection email goes to the account owner; connections and removals are logged too. |
| Files | Path traversal is refused; uploads report size and SHA-256; overwrites need an explicit overwrite: true; request bodies are read raw so file contents are never altered by input middleware. |
| SQL | query_database uses a separate database account you create with SELECT only, plus a statement filter, a read-only transaction and a 15-second limit. Point it at game or plugin databases, never at the panel's own. |
Found a vulnerability? Please read SECURITY.md and report it privately.
⚙️ Configuration
Everything is optional. Settings go in the panel's .env (then php artisan config:clear).
| Variable | Default | What it does |
|---|---|---|
| PANEL_MCP_OPS_GUIDE_PATH | storage/app/panel-mcp/ops-guide.md | Markdown file served by get_ops_guide. Install one with php artisan panel-mcp:guide /path/to/guide.md. |
| PANEL_MCP_SQL_HOST / _PORT | 127.0.0.1 / 3306 | Database server for query_database. |
| PANEL_MCP_SQL_USERNAME / _PASSWORD | (empty = tool off) |
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
105.5kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
claude-mem
104.0kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Understand-Anything
88.7kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
78.1kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
