Docker MCP Server
OCI · GHCR.IO/GAVINLUCAS/DOCKER-MCP-SERVER:2.1.1 · 3 COMPONENTS · SCANNED AUG 3
Manage Docker (containers, images, Compose, Swarm, registries) via the Docker SDK and CLI.
Deprecated
This server is marked deprecated in the MCP registry.
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security0
- Malware scan not yet available for this package.Unverified
- CVE data not yet available for this package.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency-health data not yet available.Unverified
Provenance & Transparency6
- Repository check failed: the declared repository URL redirects; it must resolve directly. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 25 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability77
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 29203 tokens (~180/item across 162 items; 156 tools + 6 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (23% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
oci · ghcr.io/gavinlucas/docker-mcp-server:2.1.1
claude mcp add gavinlucas-docker-mcp-server -- docker run --rm -i ghcr.io/gavinlucas/docker-mcp-server:2.1.1
codex mcp add gavinlucas-docker-mcp-server -- docker run --rm -i ghcr.io/gavinlucas/docker-mcp-server:2.1.1
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gavinlucas-docker-mcp-server": {
"type": "local",
"command": [
"docker",
"run",
"--rm",
"-i",
"ghcr.io/gavinlucas/docker-mcp-server:2.1.1"
],
"enabled": true
}
}
} mcp_servers:
gavinlucas-docker-mcp-server:
command: "docker"
args: ["run", "--rm", "-i", "ghcr.io/gavinlucas/docker-mcp-server:2.1.1"] {
"mcpServers": {
"gavinlucas-docker-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/gavinlucas/docker-mcp-server:2.1.1"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +4
- Stability: unverified → 0.27 ▲ functional
- 31 Jul 26 −2
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 31
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed oci/ghcr.io/gavinlucas/docker-mcp-server:2.1.1
Provenance none
Ecosystem: oci · Outcome: none
Reason: no_attestation
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
buildx_bake ~260
Build multiple targets defined in a bake file (HCL, JSON, or compose). args: targets - Bake targets to build (default: the `default` group) files - Bake file paths (`-f`, repeatable) set_overrides - Per-target overrides, e.g. ["app.platform=linux/amd64"] push - Push results to the registry load - Load results into the local image store no_cache - Do not use cache when building pull - Always pull a newer base image builder - Override the active builder cwd - Working directory containing the bake file (defaults to the server's cwd) timeout_seconds - Subprocess timeout (default 1800s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| builder | string | — | — |
| cwd | string | — | — |
| files | array | — | — |
| load | boolean | — | — |
| no_cache | boolean | — | — |
| pull | boolean | — | — |
| push | boolean | — | — |
| set_overrides | array | — | — |
| targets | array | — | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
buildx_build ~800
Build an image with BuildKit via `docker buildx build`. Replaces the legacy `image_build` tool when you need any of: multi-platform output (`platforms`), modern cache export (`cache_from`/`cache_to`), SBOM or provenance attestations, build secrets, or multi-stage builds with `target`. Always runs with `--progress=plain` so output is captured rather than redrawn on a TTY. args: context - Build context: a filesystem path or Git/HTTP URL (verbatim; no `~`/glob expansion). The `-` stdin-tarball form is NOT supported (stdin isn't forwarded — it'd block on the server's own stdin); serve a pre-packed tarball over HTTP instead. tags - Image references to apply (`-t`, repeatable) platforms - Target platforms, e.g. ["linux/amd64", "linux/arm64"] file - Dockerfile path (relative to context unless absolute) build_args - Build-time variables (each becomes `--build-arg KEY=VALUE`) build_contexts - Additional named build contexts (e.g. {"deps": "./vendor"}) labels - Labels to set on the resulting image (each becomes `--label KEY=VALUE`) annotations - OCI manifest annotations (passed verbatim, repeatable) target - Target build stage to stop at push - Push the result to the registry (mutually exclusive with `load`) load - Load the result into the local image store (single-platform builds only) output - Custom `--output` specs (e.g. ["type=tar,dest=out.tar"]) no_cache - Do not use cache when building no_cache_filter - Stage names to exclude from caching pull - Always attempt to pull a newer version of each base image cache_from - Cache import specs, e.g. ["type=registry,ref=user/img:cache"] cache_to - Cache export specs builder - Override the active builder sbom - Shorthand for `--attest=type=sbom`; pass "true" or a config string provenance - Shorthand for `--attest=type=provenance`; pass "true", "false", or a config string attest - Custom attestation specs (r…
| Name | Type | Req | Description |
|---|---|---|---|
| annotations | array | — | — |
| attest | array | — | — |
| build_args | object | — | — |
| build_contexts | object | — | — |
| builder | string | — | — |
| cache_from | array | — | — |
| cache_to | array | — | — |
| context | string | yes | — |
| file | string | — | — |
| labels | object | — | — |
| load | boolean | — | — |
| no_cache | boolean | — | — |
| no_cache_filter | array | — | — |
| output | array | — | — |
| platforms | array | — | — |
| provenance | string | — | — |
| pull | boolean | — | — |
| push | boolean | — | — |
| sbom | string | — | — |
| secret | array | — | — |
| ssh | array | — | — |
| tags | array | — | — |
| target | string | — | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
buildx_create ~233
Create a new builder instance. args: name - Name for the new builder (defaults to a generated name) driver - BuildKit driver (e.g. "docker-container", "kubernetes", "remote") driver_opts - Driver-specific options (each becomes `--driver-opt KEY=VALUE`) use - Set the new builder as the current one bootstrap - Boot the builder immediately platforms - Platforms the builder advertises config - Path to a buildkitd config file node_name - Node name within the builder (for multi-node builders) append - Append a node to an existing builder named `name` returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| append | boolean | — | — |
| bootstrap | boolean | — | — |
| config | string | — | — |
| driver | string | — | — |
| driver_opts | object | — | — |
| name | string | — | — |
| node_name | string | — | — |
| platforms | array | — | — |
| use | boolean | — | — |
No output schema declared.
No examples provided.
buildx_du ~128
Report BuildKit cache disk usage as a list of records. A large cache can easily generate more output than MAX_CLI_OUTPUT_BYTES; if that happens the captured stdout is truncated and this tool drops the final (partial) record before parsing. For an exhaustive accounting on a busy builder, run `docker buildx du --format '{{json .}}'` on the host directly. args: builder - Override the active builder returns: list - One dict per cache record (parsed from `--format '{{json .}}'`)
| Name | Type | Req | Description |
|---|---|---|---|
| builder | string | — | — |
No output schema declared.
No examples provided.
buildx_history_inspect ~241
Inspect a single build record by ref, parsed from `--format json`. Returns the full record for one build — duration, materials, attestations, error (if any) — for debugging a failed or slow build found via `buildx_history_list`. Requires buildx >= v0.13. args: ref - Build record ref. Pass the `ref` field from `buildx_history_list` directly — it reports a qualified "<builder>/<node>/<id>", but `history inspect` only accepts the bare id, so this reduces it to the id and (unless `builder` is given) targets the builder named in the ref. Empty/omitted inspects the most recent build; the `^N` syntax (e.g. "^0" = latest) is also valid. builder - Builder instance the build ran on (defaults to the one in `ref`, else active) returns: dict - The parsed build record (or {"raw": <stdout>} if the output isn't a JSON object)
| Name | Type | Req | Description |
|---|---|---|---|
| builder | string | — | — |
| ref | string | — | — |
No output schema declared.
No examples provided.
buildx_history_list ~151
List recent build records (BuildKit build history), parsed from `--format '{{json .}}'`. Each record is a past build with its ref, name, status, step counts, and timestamps — useful for finding a build to drill into with `buildx_history_inspect`. Requires buildx >= v0.13 (older versions have no `history` subcommand and this raises with the CLI's "unknown command" error). args: builder - Builder instance to read history from (defaults to the active builder) returns: list - One dict per build record (ref, name, status, total/completed/cached steps, times)
| Name | Type | Req | Description |
|---|---|---|---|
| builder | string | — | — |
No output schema declared.
No examples provided.
buildx_imagetools_create ~266
Create a manifest list / OCI image index from existing per-platform tags. Replaces `docker manifest create` + `docker manifest push` — builds the index and pushes it in one operation. Source tags must already be pushed; this only stitches them together. args: target - Tag for the new manifest list (`-t`) sources - Source image references to combine append - Append to the existing manifest at `target` rather than replacing dry_run - Print the resulting manifest without pushing annotations - OCI annotations (repeatable; passed verbatim) platforms - Filter source platforms when combining descriptor_files - Files to read source descriptors from, instead of refs builder - Override the active builder timeout_seconds - Subprocess timeout (default 600s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| annotations | array | — | — |
| append | boolean | — | — |
| builder | string | — | — |
| descriptor_files | array | — | — |
| dry_run | boolean | — | — |
| platforms | array | — | — |
| sources | array | yes | — |
| target | string | yes | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
buildx_imagetools_inspect ~272
Inspect a manifest in a registry without pulling. Replaces `docker manifest inspect`. The standalone `docker manifest` command is in maintenance mode and lacks support for OCI image indexes, attestations, and annotations — `buildx imagetools inspect` is the path forward and handles both single-platform manifests and multi-platform manifest lists / OCI indexes. Uses the docker CLI's credential store; `registry_manifest` answers the same question over direct HTTPS with no daemon or plugin. args: image - Image reference, e.g. "alpine:3.19" or "ghcr.io/org/repo@sha256:..." raw - Return the raw manifest bytes (a JSON document) instead of the human-rendered tree format - Go template format string (mutually exclusive with `raw`) builder - Override the active builder returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}. When `raw=True` or `format="{{json .}}"`, `stdout` is a JSON document the caller can parse.
| Name | Type | Req | Description |
|---|---|---|---|
| builder | string | — | — |
| format | string | — | — |
| image | string | yes | — |
| raw | boolean | — | — |
No output schema declared.
No examples provided.
buildx_inspect ~100
Inspect a builder instance. args: name - Builder name (defaults to the active builder) bootstrap - Boot the builder if it isn't already running returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}. stdout is human-readable; parse with the agent or call buildx_list for JSON.
| Name | Type | Req | Description |
|---|---|---|---|
| bootstrap | boolean | — | — |
| name | string | — | — |
No output schema declared.
No examples provided.
buildx_list ~62
List builder instances. returns: list - One dict per builder (parsed from `--format '{{json .}}'`). If the captured stdout was truncated by MAX_CLI_OUTPUT_BYTES the last (likely partial) record is dropped before parsing.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
buildx_prune ~248
Remove BuildKit cache entries. Destructive: this tool always passes `--force` because no interactive prompt is available under MCP. Pair with `buildx_du` first to inventory what would be removed. args: all - Include internal/frontend images filters - Filter by attributes (e.g. {"until": "24h", "type": "exec.cachemount"}) reserved_space - Amount of disk to always keep (e.g. "10GB") max_used_space - Maximum disk space the cache may use (e.g. "20GB") min_free_space - Target amount of free disk after pruning (e.g. "5GB") builder - Override the active builder timeout_seconds - Subprocess timeout (default 600s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | — | — |
| builder | string | — | — |
| filters | object | — | — |
| max_used_space | string | — | — |
| min_free_space | string | — | — |
| reserved_space | string | — | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
buildx_remove ~147
Remove a builder instance. args: name - Builder name to remove (mutually exclusive with `all_inactive`) all_inactive - Remove every inactive builder keep_state - Keep the BuildKit state volume keep_daemon - Keep the BuildKit daemon process running force - Force removal even if the builder is in use returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| all_inactive | boolean | — | — |
| force | boolean | — | — |
| keep_daemon | boolean | — | — |
| keep_state | boolean | — | — |
| name | string | — | — |
No output schema declared.
No examples provided.
buildx_use ~198
Select the active builder for subsequent buildx operations. Without `default` or `global_default` the switch applies only to the current CLI session. `default` persists the choice for the current Docker context; `global_default` persists across all Docker contexts. Use `buildx_list` to see available builders and their current status. To avoid switching the global default, pass a specific builder name directly via `buildx_build`'s `builder` parameter instead. args: name - Builder name to activate (from `buildx_list`) default - Persist as default builder for the current Docker context global_default - Persist as default builder across all Docker contexts returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| default | boolean | — | — |
| global_default | boolean | — | — |
| name | string | yes | — |
No output schema declared.
No examples provided.
compose_build ~185
Build images for a compose project. args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override services - Specific services to build (default: all) pull - Always attempt to pull a newer base image no_cache - Do not use cache when building timeout_seconds - Subprocess timeout (default 1800s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| no_cache | boolean | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| pull | boolean | — | — |
| services | array | — | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
compose_config ~190
Render the canonical compose configuration after merges, profiles, and variable substitution. args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override profiles - Profiles to activate before rendering services_only - List service names only (`--services`) format - "yaml" (default) or "json" returns: dict - {"config": str|dict|None, "raw": <CliResult dict>}; `config` is a parsed dict when format="json" and parsing succeeds, otherwise the rendered text from stdout.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| format | string | — | — |
| profiles | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services_only | boolean | — | — |
No output schema declared.
No examples provided.
compose_cp ~303
Copy files/folders between a service container and the server host's filesystem. Exactly one of `source`/`dest` is `SERVICE:PATH`; the other is a path on the host running this MCP server, read/written as the server's user (same host exposure as the file-path archive tools — see SECURITY.md). Copying to stdout (`dest="-"`) is unsupported; use the container-archive tools. args: source - `SERVICE:SRC_PATH` or a host path dest - `SERVICE:DEST_PATH` or a host path (not "-") index - Container index when the service has multiple replicas (default 1) all_containers - Copy to/from all containers of the service (`--all`) project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override timeout_seconds - Subprocess timeout (default 300s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| all_containers | boolean | — | — |
| dest | string | yes | — |
| files | array | — | — |
| index | integer | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| source | string | yes | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
compose_down ~195
Stop and remove containers, networks (and optionally volumes) for a compose project. args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override profiles - Profiles to consider volumes - Also remove named volumes declared by the project (destructive) remove_orphans - Remove containers not declared in the compose file timeout_seconds - Subprocess timeout (default 300s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| profiles | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| remove_orphans | boolean | — | — |
| timeout_seconds | number | — | — |
| volumes | boolean | — | — |
No output schema declared.
No examples provided.
compose_exec ~309
Run a command inside an already-running compose service container (see also `container_exec`). Always passes `-T` (no TTY). Pass an exec-form argv (e.g. `["python", "-V"]`); a `["sh", "-c", "..."]` form interprets shell metacharacters in untrusted substrings. args: service - Service name from the compose file command - Argv to execute inside the container project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override index - Container index when the service has multiple replicas (default 1) workdir - Working directory inside the container user - User to run as inside the container (uid or name) env - Environment variables to set for the exec session timeout_seconds - Subprocess timeout (default 60s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| command | array | yes | — |
| env | object | — | — |
| files | array | — | — |
| index | integer | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| service | string | yes | — |
| timeout_seconds | number | — | — |
| user | string | — | — |
| workdir | string | — | — |
No output schema declared.
No examples provided.
compose_images ~132
List the images used by a compose project's services, parsed from `--format json`. args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override services - Restrict to these services (default: all) returns: list - One dict per container image (service, container, repository, tag, id, size)
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
No output schema declared.
No examples provided.
compose_kill ~191
Send a signal to a compose project's containers (default SIGKILL). args: services - Restrict to these services (default: all) signal - Signal to send (default "SIGKILL"; e.g. "SIGTERM", "SIGHUP") remove_orphans - Also remove containers for services not in the compose file project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| remove_orphans | boolean | — | — |
| services | array | — | — |
| signal | string | — | — |
No output schema declared.
No examples provided.
compose_list ~54
List compose projects known to the daemon (across all directories). args: all - Include stopped projects returns: list - One dict per project (parsed from `--format json`)
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | — | — |
No output schema declared.
No examples provided.
compose_logs ~237
Fetch a bounded slice of logs from a compose project (never follows). args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override services - Restrict to these services (default: all) tail - Lines per container (default 200), or the literal "all" (still capped at MAX_CLI_OUTPUT_BYTES) since - Show logs since this timestamp/duration (e.g. "10m", "2024-01-01T00:00:00") until - Show logs before this timestamp/duration timestamps - Include per-line timestamps returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
| since | string | — | — |
| tail | — | — | — |
| timestamps | boolean | — | — |
| until | string | — | — |
No output schema declared.
No examples provided.
compose_pause ~132
Pause the containers of a compose project (freezes their processes). args: services - Restrict to these services (default: all) project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
No output schema declared.
No examples provided.
compose_port ~291
Resolve the host binding for a service's container port. The compose equivalent of `docker port`: which host address/port a service's private port is published on. `published` is None when the port isn't published. args: service - Service name from the compose file private_port - The container-internal port to look up protocol - "tcp" (default) or "udp" index - Container index when the service has multiple replicas (default 1) project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override returns: dict - {"service", "private_port", "protocol", "published": "host:port"|None, "host": str|None, "port": int|None, "bindings": list[str]}. `published`/`host`/`port` describe the first binding; `bindings` lists every line (a port can be published on more than one address, e.g. IPv4 and IPv6).
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| index | integer | — | — |
| private_port | integer | yes | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| protocol | string | — | — |
| service | string | yes | — |
No output schema declared.
No examples provided.
compose_ps ~162
List containers in a compose project, parsed from `--format json`. args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override services - Restrict output to these services all - Include stopped containers as well returns: dict - {"services": list[dict], "raw": <CliResult dict>}; on non-zero exit `services` is an empty list and the caller should inspect `raw.stderr`.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | — | — |
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
No output schema declared.
No examples provided.
compose_pull ~263
Pre-fetch images for a compose project's services without starting them. Use this to stage images before an outage window, to refresh cached images before `compose_up`, or to verify images are accessible without starting containers. For registry-authenticated pulls ensure the daemon is logged in first with `system_login`. `compose_up --pull always` does the same as part of startup; use this tool when you want to separate the pull step. args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`; overrides auto-discovery) project_name - Override the compose project name services - Pull only these services; omit to pull all ignore_pull_failures - Continue if an individual image pull fails timeout_seconds - Subprocess timeout (default 1800s for large image pulls) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| ignore_pull_failures | boolean | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
compose_restart ~255
Stop then start services without recreating containers or applying config changes. Use this to bounce a service (e.g. to pick up a runtime file change or clear an in-memory state). If the compose file has changed (new image, environment, volumes, ports) use `compose_up` instead — it recreates affected containers to apply the diff. `stop_timeout_seconds` controls the SIGTERM grace period before Docker sends SIGKILL. args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Override the compose project name services - Restart only these services; omit to restart all stop_timeout_seconds - Seconds to wait for graceful stop before SIGKILL timeout_seconds - Subprocess timeout (default 300s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
| stop_timeout_seconds | integer | — | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
compose_run ~327
Run a one-off command against a compose service. Always passes `-T` (no TTY under MCP). Defaults to detached with `--rm` so the call returns promptly. args: service - Service name from the compose file command - Command + args to run (exec-form; no shell unless you invoke one) project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override detach - Run detached (default True) rm - Remove the container after the run (default True) no_deps - Don't start linked services workdir - Working directory inside the container user - User to run as inside the container (uid or name) env - Environment variables to set inside the container name - Optional container name timeout_seconds - Subprocess timeout (default 600s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| command | array | — | — |
| detach | boolean | — | — |
| env | object | — | — |
| files | array | — | — |
| name | string | — | — |
| no_deps | boolean | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| rm | boolean | — | — |
| service | string | yes | — |
| timeout_seconds | number | — | — |
| user | string | — | — |
| workdir | string | — | — |
No output schema declared.
No examples provided.
compose_start ~183
Start existing (stopped) containers of a compose project. Counterpart to `compose_stop`: starts existing containers without recreating them. Use `compose_up` to (re)create containers from the compose file. args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override services - Specific services to start (default: all) timeout_seconds - Subprocess timeout (default 600s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
compose_stop ~200
Stop services in a compose project without removing their containers. Unlike `compose_down`, containers/networks/volumes survive — use `compose_start` to bring them back. args: project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override services - Specific services to stop (default: all) stop_timeout_seconds - Grace period before SIGKILL (passed as `--timeout`) timeout_seconds - Subprocess timeout (default 300s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
| stop_timeout_seconds | integer | — | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
compose_top ~151
Show the running processes of a compose project's containers. Output is the `ps`-style process table per service (not JSON); read it from `stdout`. args: services - Restrict to these services (default: all) project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
No output schema declared.
No examples provided.
compose_unpause ~134
Unpause the containers of a compose project (resumes paused processes). args: services - Restrict to these services (default: all) project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | — | — |
No output schema declared.
No examples provided.
compose_up ~298
Bring up a Docker Compose project, detached. Always runs detached (`-d`) so it can't block the server. Use `compose_ps` to confirm services are running, or `wait=True` to block until they're healthy. args: project_dir - Dir with the compose file (default: server cwd; paths verbatim, no shell expansion) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override profiles - Profiles to activate services - Specific services to bring up (default: all) build - Build images before starting pull - Pull strategy: "always", "missing", "never", or "policy" (compose default) remove_orphans - Remove containers for services not in the compose file wait - Block until services are healthy (adds `--wait`) timeout_seconds - Subprocess timeout (default 600s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| build | boolean | — | — |
| files | array | — | — |
| profiles | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| pull | string | — | — |
| remove_orphans | boolean | — | — |
| services | array | — | — |
| timeout_seconds | number | — | — |
| wait | boolean | — | — |
No output schema declared.
No examples provided.
compose_wait ~200
Block until the named service containers stop, then return their exit codes. For one-shot / batch services. A long-running service that never exits blocks until `timeout_seconds`, then the subprocess is killed (TimeoutExpired) — bound it sensibly. Exit codes are on stdout. args: services - One or more services to wait on. At least one is required. project_dir - Dir with the compose file (default: server cwd) files - Explicit compose file paths (repeatable, `-f`) project_name - Compose project name override timeout_seconds - Subprocess timeout (default 300s) returns: dict - {"returncode": int, "stdout": str, "stderr": str, "truncated": bool}
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | — | — |
| project_dir | string | — | — |
| project_name | string | — | — |
| services | array | yes | — |
| timeout_seconds | number | — | — |
No output schema declared.
No examples provided.
config_create ~231
Create an immutable Swarm config object; requires a swarm manager. Configs store non-sensitive configuration files (nginx.conf, app.yaml, etc.) and mount them into service containers at a specified path. Unlike secrets, config data is not encrypted at rest — use `secret_create` for credentials or keys. `data` is raw bytes; encode strings first (e.g. `"my config".encode()`). Once created, a config is immutable: to update it, create a new config with a new name and update the service to reference it, then remove the old config with `config_remove`. args: name - Unique config name within the swarm data - Raw bytes content of the config file labels - Labels to set on the config templating - Templating driver config (e.g. {"Name": "golang"} for Go template syntax) returns: dict - The created config's attrs including its id
| Name | Type | Req | Description |
|---|---|---|---|
| data | string | yes | — |
| labels | object | — | — |
| name | string | yes | — |
| templating | object | — | — |
No output schema declared.
No examples provided.
config_inspect ~49
Get a swarm config by id or name. args: id_or_name - The config id or name returns: dict - The config's attrs
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | string | yes | — |
No output schema declared.
No examples provided.
config_list ~100
List swarm configs; requires a swarm manager. Unlike secrets, config attrs include the actual config data (`Spec.Data`, base64-encoded) since configs are not treated as sensitive. Valid filter keys: `id`, `name`, `names`, `label` (key or key=value). args: filters - Narrow the list; omit to return every config returns: list - A list of config attrs dicts
| Name | Type | Req | Description |
|---|---|---|---|
| filters | object | — | — |
No output schema declared.
No examples provided.
config_remove ~43
Remove a swarm config. args: id_or_name - The config id or name returns: bool - True after removal
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| result | boolean | yes | — |
No examples provided.
container_archive_get ~154
Retrieve a file or directory from a container as a tar archive, returned in band. For large paths prefer `container_archive_get_to_file`, which streams to a host path; the in-band bytes here are capped (default 32 MiB) because MCP base64-encodes them. args: id_or_name - The container id or name path - Path inside the container max_bytes - Abort with ValueError if the archive exceeds this many bytes (defaults to 32 MiB) returns: dict - Mapping with archive (bytes) and stat (dict) keys
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | string | yes | — |
| max_bytes | integer | — | — |
| path | string | yes | — |
No output schema declared.
No examples provided.
container_archive_get_to_file ~174
Retrieve a file or directory from a container as a tar archive written to a file on the server host. Streams straight to disk (no in-band byte cap). The file is written by the server's user; `~` is expanded and an existing file is refused unless `overwrite=True`. args: id_or_name - The container id or name path - Path inside the container dest_path - Destination path on the server host for the tarball overwrite - Replace dest_path if it already exists (default False) returns: dict - {"path": <resolved path>, "bytes_written": int, "stat": dict}
| Name | Type | Req | Description |
|---|---|---|---|
| dest_path | string | yes | — |
| id_or_name | string | yes | — |
| overwrite | boolean | — | — |
| path | string | yes | — |
No output schema declared.
No examples provided.
container_archive_put ~207
Upload a tar archive to a path inside a container, from in-band bytes or a file on the server host. Pass exactly one of `data` (tar bytes in band) or `from_file` (a path on the server host, streamed straight to the daemon — preferred for large archives, since in-band bytes are base64-encoded by MCP). `from_file` is read by the server's user; `~` is expanded. args: id_or_name - The container id or name path - Destination path inside the container (must already exist) data - Tar archive bytes; exactly one of data/from_file from_file - Path on the server host to the tar archive to upload; exactly one of data/from_file returns: bool - True if the upload succeeded
| Name | Type | Req | Description |
|---|---|---|---|
| data | string | — | — |
| from_file | string | — | — |
| id_or_name | string | yes | — |
| path | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| result | boolean | yes | — |
No examples provided.
container_commit ~295
Snapshot a container's current filesystem state as a new image. Useful for capturing a debugging state or saving manual changes made inside a container. For repeatable builds use a Dockerfile instead. The container is paused by default during the snapshot to ensure filesystem consistency — set `pause=False` only if the container cannot be paused. `changes` accepts Dockerfile instructions to apply on top of the snapshot, e.g. `["CMD ["python", "app.py"]", "ENV FOO=bar"]`. args: id_or_name - Container id or name to snapshot repository - Repository name for the new image, e.g. "myorg/myimage" tag - Tag for the new image (default: "latest") message - Commit message stored in the image metadata author - Author string stored in the image metadata pause - Pause the container during commit for consistency (default True) changes - Dockerfile instructions (CMD, ENV, EXPOSE, etc.) to apply to the image conf - Additional image configuration overrides as a dict returns: dict - The new image's attrs
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | — | — |
| changes | — | — | — |
| conf | object | — | — |
| id_or_name | string | yes | — |
| message | string | — | — |
| pause | boolean | — | — |
| repository | string | — | — |
| tag | string | — | — |
No output schema declared.
No examples provided.
container_create ~283
Create a container from an image without starting it. Use this when you need to configure a container (with `extra_kwargs`) before its first start, or want creation and start as separate observable steps. For the common case of create-then-start-immediately use `container_run` instead — it does both in one call. Start the created container with `container_start`. Common `extra_kwargs` keys: `name` (str), `environment` (list of "KEY=VAL" or dict), `ports` (dict, e.g. `{"80/tcp": 8080}`), `volumes` (dict, e.g. `{"/host/path": {"bind": "/container/path", "mode": "rw"}}`), `labels` (dict). For anything else docker-py's `ContainerCollection.create` accepts, call `docs_lookup(section="containers")` rather than guessing a key name. args: image - Image to create the container from, e.g. "nginx:alpine" command - Override the image's default command; string or list of strings extra_kwargs - Additional docker-py ContainerCollection.create keyword arguments returns: dict - The created container's attrs (not yet running)
| Name | Type | Req | Description |
|---|---|---|---|
| command | — | — | — |
| extra_kwargs | object | — | — |
| image | string | yes | — |
No output schema declared.
No examples provided.
container_diff ~51
Inspect changes on a container's filesystem. args: id_or_name - The container id or name returns: list - Filesystem changes since the image was created
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | string | yes | — |
No output schema declared.
No examples provided.
container_exec ~320
Run a command inside a running container (for a compose service, prefer `compose_exec`). Security: when any element of `cmd` is agent-controlled, use an exec-form argv list that does not invoke a shell (e.g. `["python", "-V"]`, `["ls", path]`). A string `cmd`, or a shell form like `["sh", "-c", template]`, interprets shell metacharacters in the untrusted parts. args: id_or_name - The container id or name cmd - Command to execute (prefer exec-form argv, no shell, when any element is agent-controlled) stdout - Attach to stdout stderr - Attach to stderr stdin - Attach to stdin tty - Allocate a pseudo-TTY privileged - Run with extended privileges user - User to run the command as detach - Detach from the exec environment - Environment variables workdir - Working directory inside the container demux - Return stdout and stderr separately returns: dict - Mapping with exit_code and output keys
| Name | Type | Req | Description |
|---|---|---|---|
| cmd | — | yes | — |
| demux | boolean | — | — |
| detach | boolean | — | — |
| environment | — | — | — |
| id_or_name | string | yes | — |
| privileged | boolean | — | — |
| stderr | boolean | — | — |
| stdin | boolean | — | — |
| stdout | boolean | — | — |
| tty | boolean | — | — |
| user | string | — | — |
| workdir | string | — | — |
No output schema declared.
No examples provided.
container_export ~271
Export a container's filesystem as a tar archive: to a file on the server host, or in band. With `dest_path` the archive streams straight to disk (no byte cap), so it handles large containers — the file is written by the server's user, `~` is expanded, and an existing file is refused unless `overwrite=True`. Without `dest_path` the tar bytes are returned in band, capped at `max_bytes` (default 32 MiB) because MCP base64-encodes them — a fallback for when no writable host path exists (e.g. a containerized server without a bind mount). args: id_or_name - The container id or name dest_path - Destination path on the server host; omit to return the bytes in band overwrite - Replace dest_path if it already exists (default False) max_bytes - In-band mode: abort with ValueError beyond this many bytes (default 32 MiB) returns: bytes | dict - the tar bytes (in band), or {"path": <resolved path>, "bytes_written": int}
| Name | Type | Req | Description |
|---|---|---|---|
| dest_path | string | — | — |
| id_or_name | string | yes | — |
| max_bytes | integer | — | — |
| overwrite | boolean | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
container_inspect ~126
Return the full inspect detail for a single container. Use this when you need complete information about one container — config, state, network settings, mounts, environment variables, and resource limits. For a quick overview of many containers use `container_list` instead (returns a summary per container). For just logs or stats use `container_logs` / `container_stats`. args: id_or_name - Container id (full or short) or name returns: dict - Full container inspect attrs (equivalent to `docker inspect`)
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | string | yes | — |
No output schema declared.
No examples provided.
container_kill ~70
Send a signal to a container. args: id_or_name - The container id or name signal - Signal to send (defaults to SIGKILL) returns: dict - The container's attrs after kill
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | string | yes | — |
| signal | string | — | — |
No output schema declared.
No examples provided.
container_list ~198
List containers. args: all - Show all containers, including stopped ones since - Only show containers created after this id or name before - Only show containers created before this id or name limit - Maximum number of results filters - Filter by attributes (e.g. status, label) sparse - Skip inspect calls and return less detail ignore_removed - Ignore containers removed during listing managed_only - Only return containers created by this MCP server (filters on the docker-mcp-server.managed label); combines with any `filters` given returns: list - A list of container attrs dicts
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | — | — |
| before | string | — | — |
| filters | object | — | — |
| ignore_removed | boolean | — | — |
| limit | integer | — | — |
| managed_only | boolean | — | — |
| since | string | — | — |
| sparse | boolean | — | — |
No output schema declared.
No examples provided.
container_logs ~377
Get the logs of a container: a one-shot snapshot by default, or a bounded live tail with `follow=True`. Follow mode returns when `limit_lines` lines are collected, `timeout_seconds` elapses, or the container exits, whichever comes first — so the agent can watch live output without blocking forever. `limit_lines`/`timeout_seconds` apply only in follow mode; `until` only in snapshot mode. Caveat for `ssh://` daemons: docker-py can't cancel an SSH stream, so in follow mode the `timeout_seconds` watchdog can't interrupt a fully silent container — use the snapshot mode there if you need a hard time bound. args: id_or_name - The container id or name stdout - Include stdout stderr - Include stderr timestamps - Include timestamps tail - Number of lines from the end (default 200), or the literal "all" for everything since - Only return logs created after this unix timestamp until - Only return logs created before this unix timestamp (snapshot mode only) follow - Follow the live log stream instead of returning a snapshot limit_lines - Follow mode: max lines to collect before returning (default 200) timeout_seconds - Follow mode: max wall-clock seconds before returning what was collected (default 30) returns: str - Decoded log output (up to `limit_lines` lines in follow mode)
| Name | Type | Req | Description |
|---|---|---|---|
| follow | boolean | — | — |
| id_or_name | string | yes | — |
| limit_lines | integer | — | — |
| since | number | — | — |
| stderr | boolean | — | — |
| stdout | boolean | — | — |
| tail | — | — | — |
| timeout_seconds | number | — | — |
| timestamps | boolean | — | — |
| until | number | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | — |
No examples provided.