Appearance
AI tooling
dqx ships an MCP server, so an AI agent can ask about your environment instead of guessing at it.
bash
claude mcp add dqx --scope user -- dqx mcpOne registration covers every project on the machine.
What it answers
The split is worth understanding, because it decides which tool an agent should reach for.
dqx knows where. Which projects exist, where a site's code lives on the host and inside the container, what to run and in which directory, where the database is today, who holds 80 and 443, what is broken.
A framework's own tooling knows what. Your routes, your models, your config keys. Laravel Boost does this well, and dqx does not reimplement it — the two sit beside each other, and dqx's tools are prefixed dqx_ so they cannot be confused.
Why it matters more than it sounds
An agent without this guesses, and its guesses look plausible:
- It runs the test suite directly and reports a failure that is not real, because the project declares a
prepare-teststep it did not know about. - It reads a
docker exec -w /var/www/…line from a stale guideline, lands in a directory that still exists but is half-empty, and concludes a command is missing. - It writes a database port into a file, and the port changes at the next start.
Each of those is a wrong answer produced confidently. Asking a tool that reads the running machine removes the guess.
What it will not do
Read-only by default. Anything that changes what is running needs the server started with --allow-write, and some things are not exposed at any flag:
| default | --allow-write | never | |
|---|---|---|---|
| reads — info, addresses, logs, doctor, scaffolds | ✅ | ||
| running a command the project declared | ✅ | ||
| running anything else | ✅ | ||
| starting and stopping a project | asks first | ✅ | |
| creating a new project | ✅ | ||
| installing, switching, cleaning or killing an existing project | ✅ |
Creating a project is allowed and installing one is not, which sounds inconsistent until you see the line: the tool refuses any directory that already holds a .dq/config.yml, so it can only ever create in a directory it just made. It can never re-install over something somebody is working in.
Without MCP
Every fact is available to a tool that can only run a command:
bash
dqx info --json # this project: sites, checkouts, container paths, services
dqx list --json # every project on the machine
dqx doctor --json # findings with a severity, and a verdict
dqx verify --json # what every declared domain answeredEach payload carries the dqx version, and the shapes only ever gain fields.
In the project's own guidelines
dqx sync writes an environment note into the project — where its code runs, what to run in it, which services it has — in the file the project's own AI tooling composes, so an agent reads it without being told to.