1. Create a token
In the panel open Settings → MCP, give the token a name (one per computer or app), and press Create token. It asks for your authenticator code, then shows the token once. Copy it. Anyone with the token can manage this panel’s websites, so keep it like a password. Revoke a token there at any time; the list shows when and from where each one was last used.2. Connect your AI app
The server address ishttps://your-panel-domain/mcp. The Settings → MCP page shows these commands with your address and token filled in.
- Claude Code
- Claude Desktop
- Cursor and others
3. Ask it
- “Deploy acme/shop on shop.example.com with a MySQL database.”
- “Deploy this project folder to my Laravelify server on app.example.com.”
- “Why did the last deploy of shop fail? Fix it and deploy again.”
- “Set MAIL_HOST and MAIL_PORT on shop.”
- “Which of my websites are turned off?”
- “Upload the Firebase key from my backup’s private.tgz into storage/app/private of the API site.”
What it can do
Deleting websites and changing server settings are not available through MCP; do those in the panel.
Deploying a folder from your computer
The server cannot read files on your computer, so the assistant pushes the folder to a new private GitHub repository first (gh repo create --private --source . --push), then deploys that repository. Make sure your Laravelify GitHub App can read it (GitHub → Settings → Applications → the App → Repository access). After that, every push deploys by itself.
Private files and ports
- Private files. Keys and certificates are not in Git. After a site’s first deploy, the assistant uploads them with
upload-file(a single file or an archive it unpacks). Deploys keep them: a deploy only resets files that Git tracks. Paths must stay inside the site folder, and links inside archives are skipped. - Ports are picked for you. Every new site gets a port that nothing uses: not another website, not a Laravelify service, and not anything listening on the server right now (for example an app still running from an old server). Ports from an old server’s nginx files do not matter, only the domains do. A port you choose yourself is refused if something holds it, with the name of what holds it.
Moving from an old server
- Databases. With
create_database, the site uses the MySQL database and login the panel makes.DB_*values from an old.envare left out, so the old server’s login cannot lock the site out. Import your data into the new database (phpMyAdmin, ormysqlon the server); MCP does not import dumps. - APP_KEY. Keep the old server’s
APP_KEYin the env so data it encrypted still opens. A deploy only creates a key when there is none. - Special nginx rules. Paths the old nginx sent elsewhere (callbacks, webhooks) can be added with
update-nginx. - Allow the tools in Claude Code. In auto mode Claude Code may ask before each Laravelify call or before reading backup files. Allow them once: run
/permissionsin Claude Code and addmcp__laravelify.
Good to know
- Deploys started by the assistant show Mcp as their trigger, in the panel and in Telegram.
/mcpsigns in with the token only, so the access prompt does not get in the way. Ten wrong tokens in a minute block that IP for a minute.- Behind the Cloudflare tunnel the address is your panel’s normal HTTPS domain; nothing else needs opening.