This MCP server allows AI assistants to manage Ploi.io hosting through natural language commands, covering:
Server Management: List servers, get details, restart, view activity logs
Site Management: List, get, create, delete, deploy, suspend, resume sites; view deployment logs; search by domain
Environment & Deploy Scripts: Read and update
.envfiles and deploy scriptsDaemons & Queue Workers: List, create, restart, toggle, delete daemons and queue workers
Cron Jobs: List, create, delete cron jobs
SSL Certificates: List, request (Let's Encrypt), delete certificates
Services: Restart nginx, php-fpm, mysql, redis, supervisor
Database Management: List databases, create backups
Project Integration: Link a local project to a Ploi site via
.ploi.jsonfor one-command deployments, and check deployment status
Provides tools to manage Laravel-specific tasks such as adding the scheduler cron job and managing queue workers.
Allows requesting, listing, and deleting SSL certificates from Let's Encrypt.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ploi MCP Serverdeploy the latest changes to mydomain.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ploi MCP Server
An MCP (Model Context Protocol) server that exposes Ploi.io API functionality as tools for AI assistants like Claude.
Deploy your sites with a simple "deploy" command - no clicking around in dashboards!
Features
One-command deployments - Just say "deploy" and watch it happen
Verified deploys - Deployments wait for real completion and report success/failure (no false "success")
Project linking - Link projects to Ploi sites with
.ploi.jsonFull site lifecycle - Create, delete, deploy, suspend, resume, view logs
Server management - List, restart, view logs
Environment & deploy script - Read and update a site's
.envand deploy script without SSHDaemons & queue workers - Manage
queue:workdaemons and Ploi's per-site queue workers (create/restart/pause/delete)Cron jobs - Add/verify the Laravel scheduler (
* * * * * schedule:run) and other cronsSSL certificates - Request (Let's Encrypt), list, and delete certificates
Databases - Create/delete databases; list, run, schedule, and delete backups
Service restart - Restart nginx / php-fpm / mysql / redis / supervisor
Optional id allowlist - Hard-bound which servers/sites the mutating tools may touch (see Configuration)
Related MCP server: Dokploy MCP Server
Installation
Option 1: Global Install (Recommended)
npm install -g ploi-mcpOption 2: No Install (using npx)
Skip installation - npx will download and run it automatically when configured.
Quick Start
Step 1: Get your API token
Get your token from ploi.io/profile/api-keys.
🔐 Keep your token out of the command line. Passing
--tokenexposes it in the process list (ps aux) and shell history, and stores it in plaintext in~/.claude.json. Prefer one of the secure options below. ploi-mcp resolves the token in this order:--token-file→--token(deprecated) →PLOI_API_TOKENenv →~/.ploi/config.php(the officialploi tokenstore).
Step 2: Configure Claude Code
Add to ~/.claude.json — pass the token via the env block, not args:
If you installed globally:
{
"mcpServers": {
"ploi": {
"type": "stdio",
"command": "ploi-mcp",
"env": { "PLOI_API_TOKEN": "YOUR_TOKEN" }
}
}
}If using npx (no install):
{
"mcpServers": {
"ploi": {
"type": "stdio",
"command": "npx",
"args": ["-y", "ploi-mcp"],
"env": { "PLOI_API_TOKEN": "YOUR_TOKEN" }
}
}
}Already use the Ploi CLI? Run ploi token once and ploi-mcp will read the token from ~/.ploi/config.php automatically — no token in your MCP config at all.
Step 3: Restart Claude Code
Close and reopen Claude Code for the MCP server to load.
Step 4: Link your project
In Claude Code, say:
"Link this project to mydomain.com"Step 5: Deploy anytime
Just say:
"deploy"That's it! The deployment will run and notify you when complete.
Configuration
Claude Code
Add to ~/.claude.json:
{
"mcpServers": {
"ploi": {
"type": "stdio",
"command": "ploi-mcp",
"args": ["--token", "YOUR_TOKEN"]
}
}
}Or using environment variable:
{
"mcpServers": {
"ploi": {
"type": "stdio",
"command": "ploi-mcp",
"env": {
"PLOI_API_TOKEN": "YOUR_TOKEN"
}
}
}
}Claude Desktop
Add to config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ploi": {
"command": "ploi-mcp",
"args": ["--token", "YOUR_TOKEN"]
}
}
}Restricting which servers/sites can be mutated (recommended)
The Ploi API token is account-wide — by default the assistant can deploy, restart, suspend, or delete-backups on any server or site in your account. Two layers reduce that blast radius:
Scope the token itself. Create a least-privilege API token in Ploi (https://ploi.io/profile/api-keys) limited to only the servers you want the assistant to manage. This is the strongest bound — the MCP can't exceed what the token allows.
Set an id allowlist (optional, defence-in-depth). When these env vars are set, every mutating tool (
deploy_site,deploy_project,restart_server,suspend_site,resume_site,create/run/delete_database_backup) refuses ids outside the list. Read-only tools (list/get) are unaffected.{ "mcpServers": { "ploi": { "command": "ploi-mcp", "env": { "PLOI_API_TOKEN": "YOUR_TOKEN", "PLOI_ALLOWED_SERVER_IDS": "12,34", "PLOI_ALLOWED_SITE_IDS": "567,890" } } } }Comma-separated ids. Unset or blank = no restriction (default). A typo (a non-numeric id) fails loudly rather than silently denying everything.
Usage
Command Line Options
ploi-mcp --token YOUR_TOKEN
ploi-mcp -t YOUR_TOKEN
PLOI_API_TOKEN=YOUR_TOKEN ploi-mcpProject Setup
Link a project to its Ploi site for one-command deployments:
"Link this project to mydomain.com"This creates .ploi.json in your project:
{
"server_id": 12345,
"site_id": 67890
}Now just say "deploy" and it will:
Trigger deployment
Wait for completion (polling every 5 seconds)
Report success or failure
Available Tools
Project Tools
Tool | Description |
| Deploy current project and wait for completion |
| Link project to a Ploi site by domain |
| Check deployment status |
Server Management
Tool | Description |
| List all servers |
| Get server details |
| Restart a server |
| Get server logs (auth, error, lastlog, syslog) |
Site Management
Tool | Description |
| List sites on a server |
| Get site details |
| Search for a site by domain |
| Create a new site (vhost, directory, system user) |
| Permanently delete a site (vhost, files, system user) |
| Deploy a site and wait for completion |
| Get deployment logs |
| Suspend a site |
| Resume a suspended site |
Environment & Deploy Script
Tool | Description |
| Read a site's |
| Replace a site's |
| Read a site's deploy script |
| Replace a site's deploy script (full-file) |
Daemons
Tool | Description |
| List daemons (e.g. |
| Create a daemon |
| Restart a daemon |
| Pause / resume a daemon |
| Delete a daemon |
Cron Jobs
Tool | Description |
| List cron jobs on a server |
| Create a cron job (e.g. the Laravel scheduler) |
| Delete a cron job |
Queue Workers
Tool | Description |
| List a site's queue workers |
| Get a single queue worker |
| Create a queue worker |
| Restart a queue worker |
| Pause / resume a queue worker |
| Delete a queue worker |
SSL Certificates
Tool | Description |
| List a site's certificates |
| Request a certificate (defaults to Let's Encrypt) |
| Delete a certificate |
Services
Tool | Description |
| Restart nginx / php-fpm / mysql / redis / supervisor |
Database Management
Tool | Description |
| List databases on a server |
| Create a database (optionally with a user/password) |
| Permanently delete a database |
| List database backup configurations |
| Get a database backup configuration |
| Run an existing backup configuration now ("backup now") |
| Create a scheduled backup configuration (needs a backup destination) |
| Delete a backup configuration |
Note: mutating tools (anything that creates, updates, deletes, deploys, restarts, or toggles) carry a
destructiveHintso MCP hosts can prompt before running them, and honour the optional id allowlist.update_site_env/update_deploy_scriptwrites are applied asynchronously by Ploi — allow a few seconds before reading them back.
Example Commands
"List my servers"
"Deploy"
"Deploy mydomain.com"
"Create a Laravel site for app.mydomain.com"
"Add the scheduler cron to server 12"
"Restart the queue worker on app.mydomain.com"
"Request a Let's Encrypt cert for app.mydomain.com"
"Show me the .env for app.mydomain.com"
"Restart nginx on server 12"
"List my database backups"
"Run database backup 42 now"Development
git clone https://github.com/sudanese/ploi-mcp.git
cd ploi-mcp
npm install
npm run build
npm linkLicense
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sudanese/ploi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
