ddev_help returns exactly what ddev help would, so a flag the bridge does not expose — --remove-data on stop, --latest on a snapshot restore — is discoverable without leaving the session, and several tools point at it by name. The mapping between arguments and the CLI is stated rather than hidden: import and export both spell out which argument becomes which ddev flag. ddev_stop is explicitly called out as non-destructive, leaving the database and code intact, which is the distinction that decides whether an agent can be trusted with it unattended.
A DDEV command bridge: project lifecycle, database import, export and snapshots, container exec, service logs, and a help passthrough for the flags this surface does not expose.
- Project lifecycle: ddev_start to initialise and configure the web and database containers, ddev_stop, which is non-destructive and leaves the database and code intact, ddev_restart, and ddev_poweroff for every project and container at once.
- ddev_list for projects and their status with an active-only filter, and ddev_describe for a running project's name, location, URL, status, MySQL connection details and Mailpit.
- Databases: ddev_import_db accepting .sql, .sql.gz, .sql.bz2, .sql.xz, .mysql, .zip, .tgz and .tar.gz with an extract path for archives, and ddev_export_db with gzip, bzip2 or xz compression, both taking a target database.
- ddev_snapshot, which creates, lists, restores and cleans up database snapshots stored in .ddev/db_snapshots.
- ddev_exec, which runs a shell command inside a named service container — web by default, or db, redis, solr — with an execution directory.
- ddev_logs from a chosen service with follow and tail, and ddev_version for the DDEV binary and its components.
- ddev_help, which returns the same output as ddev help for a command or a subcommand, so exact flags and examples stay reachable from inside the session.
- message_complete_notification, which raises an OS notification with a title and message.
DDEV installed on the host, since these tools drive the ddev binary rather than reimplementing it. A project directory or a project name, since the project-scoped tools take a projectPath rather than assuming where you are.
One command — npx -y ddev-mcp
