Bỏ qua để đến nội dung
For AI agents How an LLM or agent should read and drive MZPanel — llms.txt, retrieval conventions, the on-box mz CLI, and the MCP surface.

For AI agents

Nội dung này hiện chưa có sẵn bằng ngôn ngữ của bạn.

This site is built to be read by machines as well as people, and MZPanel gives an AI two ways to act, not just read: the on-box mz CLI and a control-plane MCP surface. If you’re an AI agent or tool, start here.

The docs site emits two machine-readable files at build time:

  • /llms.txt — a compact map of the documentation: titles, links, and one-line descriptions. Use it to discover what exists.
  • /llms-full.txt — the full docs corpus as a single plain-text stream. Use it when you want everything in one fetch.

These follow the llms.txt convention and are regenerated on every build, so they never drift from the rendered docs.

Every page is authored in Markdown. Prefer the llms-*.txt files for bulk reading; fetch individual pages when you only need one topic.

  • Every page has a description in its frontmatter — a one-line summary suited to embedding and ranking.
  • Pages are task-oriented and grouped by product area (Servers, Sites, Backups, Databases, …), so a query like “how do I restore a backup” maps to one page.
  • Concepts vs guides: read concepts/* for how the system works (architecture, the agent, tiers, security); read guides/* for step-by-step tasks; read reference/* for the CLI, API and URL map.
  • Technical terms (WordPress, Nginx, WireGuard, agent, …) are kept verbatim across languages — don’t translate them when matching.

The on-box mz CLI — the primary tool surface

Section titled “The on-box mz CLI — the primary tool surface”

If you run on a customer VPS (for example the on-box ClaudeCode assistant), your primary toolset is the mz command. It’s a front-end to the same native engine the dashboard drives, so it reaches everything the panel can do — no CLI feature gap.

  • Read mz --help first to list the live domains, then mz <domain> --help for a domain’s actions.
  • Always pass a sub-action (mz cron list, not mz cron) and --json for structured output you can parse.
  • On the local path mz runs as root with local trust — there’s no tier or RBAC gate, so it’s the fastest way to inspect and operate the box.
Terminal window
mz site list --json # every site on the box
mz site stats --domain <domain> --json # per-site health snapshot
mz cron list --json # scheduled jobs
mz php list --json # installed PHP versions

Full detail: The mz CLI and the mz command catalog.

MZPanel also exposes a Model Context Protocol endpoint on the control plane so a model can call MZPanel operations as tools. It’s how the on-box AI session bridge attaches MZPanel as a remote MCP server and reads live server state through the panel.

  • Read-only, scoped to one server. The current tool set is read-only and served from the panel’s cache (last heartbeat + inventory) — e.g. list sites, get a site by domain, service status, installed PHP versions, and latest CPU/RAM/disk metrics. It also publishes @-mentionable resources (server status, sites) and a couple of guided prompts.
  • Authenticated per session. Access uses a short-lived, session-scoped bearer minted for a single (org, server, user); there’s no open, unauthenticated endpoint.
  • For mutations, use mz. The MCP tools are for reading context; to change the box, fall back to the on-box mz CLI above (which has full coverage).
  • Per-server / per-site actions run on a single box via mz — see the command catalog.
  • Fleet / account-level operations are control-plane, not on any one box; those go through the Control plane API (programmatic access is a Max-plan feature).
  • For the full route map, see the URL map.
  • The MCP tool set is read-only today. Don’t expect an MCP tool for every mutation — installs, edits and deletes go through mz on the box (or the panel/API). The MCP search_docs tool is a stub and returns no results yet.
  • MCP reads the cache, not live. Metrics and inventory come from the last heartbeat and the panel cache, so a value can lag an offline or just-changed box. For a live read, run the matching mz … --json on the server.
  • mz needs a sub-action. A bare mz <domain> errors; always give the action and add --json.
  • Fleet-scoped tasks aren’t mz. Anything spanning many servers (billing, team, cross-server views) is control-plane — use the API, not mz, which only ever operates its own box.