Docker MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Docker MCP Serverlist my running containers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Docker MCP Server
基于MCP标准协议的Docker操作工具,支持标准的Docker CLI命令和Docker Compose操作。
MCP 协议支持
此服务器完全符合MCP(Model Context Protocol)标准,包括:
支持MCP协议版本:2024-11-05
初始化和生命周期管理
标准工具接口(tools/list, tools/call)
正确的错误处理(带有isError字段)
符合JSON-RPC 2.0消息格式
Related MCP server: Docker MCP Server
功能特性
基本容器操作
list_containers- 列出所有Docker容器list_images- 列出所有Docker镜像run_container- 运行一个Docker容器,支持多种参数配置stop_container- 停止一个Docker容器remove_container- 移除一个Docker容器pull_image- 拉取一个Docker镜像
Docker Compose操作
compose_up- 启动Docker Compose服务compose_down- 停止并移除Docker Compose服务compose_ps- 列出Docker Compose服务compose_logs- 查看Docker Compose服务的日志compose_build- 构建Docker Compose服务
特别说明: 支持Docker Compose的新老版本命令,自动在
docker compose(新版)和docker-compose(旧版)之间切换。服务器会优先尝试新版命令格式,如失败则自动尝试使用旧版命令,以提供最大兼容性。
高级容器管理
inspect_container- 展示容器的详细信息container_logs- 获取容器的日志exec_container- 在运行中的容器中执行命令container_stats- 显示容器资源使用情况统计
镜像管理
build_image- 从Dockerfile构建镜像prune_images- 移除未使用的镜像
网络管理
list_networks- 列出所有Docker网络create_network- 创建一个新的Docker网络remove_network- 移除一个Docker网络network_connect- 将容器连接到网络
卷管理
list_volumes- 列出所有Docker卷create_volume- 创建一个Docker卷remove_volume- 移除一个Docker卷
系统信息
system_info- 显示系统级信息system_df- 显示Docker磁盘使用情况
安全检查
security_scan- 扫描Docker镜像中的漏洞(需要安装额外工具如trivy)
使用方法
确保安装了NodeJS和Docker
克隆仓库并安装依赖
git clone https://github.com/yourusername/docker-mcp.git cd docker-mcp npm install构建项目
npm run build运行服务器
npm start
与MCP客户端集成
任何支持MCP协议的客户端都可以与此服务器交互,例如:
初始化连接:
initialize获取可用工具列表:
tools/list调用工具:
tools/call使用指定的工具名称和参数
Features
List Docker containers
List Docker images
Run Docker containers
Stop running containers
Remove containers
Pull Docker images from registries
Docker Compose operations (up, down, ps, logs, build)
Compatibility with both new and legacy Docker Compose versions
Installation
Prerequisites
Node.js 18 or higher
Docker installed and running on your system
Docker Compose installed (for Compose operations)
Both
docker compose(V2, integrated) anddocker-compose(V1, standalone) are supported
Install from npm
npm install -g docker-mcp-serverInstall from source
Clone this repository
Install dependencies:
cd docker-mcp
npm installBuild the project:
npm run buildUsage
Running the server
docker-mcp-serverOr if installed from source:
npm startConfiguring with Claude
You can use the included installation script to automatically configure the Docker MCP server with Claude:
npm run install-configThis script will:
Detect your Claude installations (Desktop and/or VSCode)
Update the configuration files to include the Docker MCP server
Set up the correct paths for your system
Manual Configuration
If you prefer to configure manually, you need to add the Docker MCP server to your MCP settings configuration file:
For Claude Desktop App (macOS)
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"docker-mcp": {
"command": "node",
"args": ["/path/to/docker-mcp/dist/index.js"],
"disabled": false,
"autoApprove": []
}
}
}For Claude in VSCode
Edit ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json:
{
"mcpServers": {
"docker-mcp": {
"command": "node",
"args": ["/path/to/docker-mcp/dist/index.js"],
"disabled": false,
"autoApprove": []
}
}
}Note: After configuring the Docker MCP server in VS Code, you may need to restart VS Code for the changes to take effect in Cline. If you encounter issues with the Docker MCP server not being recognized or working properly in Cline, try restarting VS Code.
MCP Compliance
This server implements the Model Context Protocol (MCP) standard and supports:
MCP protocol version: 2024-11-05
Initialization and lifecycle management
Standard tools interface with
tools/listandtools/callmethodsProper error handling following MCP conventions
JSON-RPC 2.0 message format
Available Tools
Docker Container Tools
list_containers
List all Docker containers.
Parameters:
all(boolean, optional): Show all containers (default shows just running)
list_images
List all Docker images.
run_container
Run a Docker container.
Parameters:
image(string, required): Docker image to runname(string, optional): Name for the containerdetach(boolean, optional): Run container in backgroundports(array of strings, optional): Port mappings (e.g. ["8080:80"])volumes(array of strings, optional): Volume mappings (e.g. ["/host/path:/container/path"])env(array of strings, optional): Environment variables (e.g. ["KEY=value"])command(string, optional): Command to run in the container
stop_container
Stop a running Docker container.
Parameters:
container(string, required): Container ID or name
remove_container
Remove a Docker container.
Parameters:
container(string, required): Container ID or nameforce(boolean, optional): Force removal of running container
pull_image
Pull a Docker image from a registry.
Parameters:
image(string, required): Image name (e.g. "nginx:latest")
Docker Compose Tools
All Docker Compose tools support both
docker compose(V2) anddocker-compose(V1) commands, with automatic fallback from new to legacy format if needed.
compose_up
Start Docker Compose services.
Parameters:
file(string, optional): Path to docker-compose.yml fileprojectName(string, optional): Specify project nameservices(array of strings, optional): Services to start (default: all services)detach(boolean, optional): Run in backgroundbuild(boolean, optional): Build images before starting containersremoveOrphans(boolean, optional): Remove containers for services not defined in the Compose file
compose_down
Stop and remove Docker Compose services.
Parameters:
file(string, optional): Path to docker-compose.yml fileprojectName(string, optional): Specify project namevolumes(boolean, optional): Remove named volumes declared in the volumes sectionremoveOrphans(boolean, optional): Remove containers for services not defined in the Compose file
compose_ps
List Docker Compose services.
Parameters:
file(string, optional): Path to docker-compose.yml fileprojectName(string, optional): Specify project nameservices(array of strings, optional): Services to show (default: all services)
compose_logs
View Docker Compose service logs.
Parameters:
file(string, optional): Path to docker-compose.yml fileprojectName(string, optional): Specify project nameservices(array of strings, optional): Services to show logs for (default: all services)follow(boolean, optional): Follow log outputtail(string, optional): Number of lines to show from the end of the logs (e.g. "100")
compose_build
Build Docker Compose services.
Parameters:
file(string, optional): Path to docker-compose.yml fileprojectName(string, optional): Specify project nameservices(array of strings, optional): Services to build (default: all services)noCache(boolean, optional): Do not use cache when building the imagepull(boolean, optional): Always attempt to pull a newer version of the image
Advanced Container Management Tools
inspect_container
Show detailed information about a container.
Parameters:
container(string, required): Container ID or nameformat(string, optional): Format the output using a Go template
container_logs
Fetch the logs of a container.
Parameters:
container(string, required): Container ID or nametail(string, optional): Number of lines to show from the end of the logs (e.g. "100")since(string, optional): Show logs since timestamp (e.g. "2021-01-02T13:23:37") or relative (e.g. "42m" for 42 minutes)until(string, optional): Show logs before timestamp (e.g. "2021-01-02T13:23:37") or relative (e.g. "42m" for 42 minutes)timestamps(boolean, optional): Show timestamps
exec_container
Execute a command in a running container.
Parameters:
container(string, required): Container ID or namecommand(string, required): Command to executeinteractive(boolean, optional): Keep STDIN open even if not attached
container_stats
Display a live stream of container resource usage statistics.
Parameters:
container(string, required): Container ID or namenoStream(boolean, optional): Disable streaming stats and only pull the first result
Image Management Tools
build_image
Build an image from a Dockerfile.
Parameters:
dockerfile(string, optional): Path to Dockerfiletag(string, required): Name and optionally a tag in the name:tag formatcontext(string, required): Path to the build contextbuildArgs(object, optional): Build-time variablesnoCache(boolean, optional): Do not use cache when building the imagepull(boolean, optional): Always attempt to pull a newer version of the image
prune_images
Remove unused images.
Parameters:
all(boolean, optional): Remove all unused images, not just dangling onesfilter(string, optional): Provide filter values (e.g. "until=24h")
Network Management Tools
list_networks
List all Docker networks.
create_network
Create a new Docker network.
Parameters:
name(string, required): Network namedriver(string, optional): Driver to manage the network (default "bridge")subnet(string, optional): Subnet in CIDR format (e.g. "172.30.0.0/16")gateway(string, optional): Gateway for the subnetinternal(boolean, optional): Restrict external access to the network
remove_network
Remove a Docker network.
Parameters:
name(string, required): Network name or ID
network_connect
Connect a container to a network.
Parameters:
network(string, required): Network name or IDcontainer(string, required): Container ID or namealias(array of strings, optional): Add network-scoped alias for the container
Volume Management Tools
list_volumes
List all Docker volumes.
create_volume
Create a Docker volume.
Parameters:
name(string, required): Volume namedriver(string, optional): Volume driver name (default "local")labels(object, optional): Labels to set on the volume
remove_volume
Remove a Docker volume.
Parameters:
name(string, required): Volume name
System Information Tools
system_info
Display system-wide information.
Parameters:
format(string, optional): Format the output using a Go template
system_df
Show Docker disk usage.
Parameters:
verbose(boolean, optional): Show detailed information on space usage
Security Tools
security_scan
Scan a Docker image for vulnerabilities.
Parameters:
image(string, required): Image to scan (e.g. "nginx:latest")verbose(boolean, optional): Show detailed vulnerability information
Note: Security scanning requires external tools like trivy to be installed on your system.
License
MIT
Available Tools
27 toolsbuild_imageC
Build an image from a Dockerfile
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Name and optionally a tag in the name:tag format | |
| pull | No | Always attempt to pull a newer version of the image | |
| context | Yes | Path to the build context | |
| noCache | No | Do not use cache when building the image | |
| buildArgs | No | Build-time variables | |
| dockerfile | No | Path to Dockerfile |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only restates the primary action. It does not mention side effects (creating/tagging an image), cache behavior, network access, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words and the main action front-loaded. It is concise, though arguably too terse for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no annotations, and no output schema, the description is too minimal. It does not explain required inputs (tag and context), what the build returns, or how this differs from compose_build.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter meaning beyond the schema; it only references 'Dockerfile,' which the schema already documents as a path property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb and resource: 'Build an image from a Dockerfile' clearly states what the tool does. However, it does not differentiate from sibling tools such as compose_build, which also builds images from Dockerfiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like pull_image or compose_build. There are no prerequisites, exclusions, or context signals in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_buildC
Build Docker Compose services
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Path to docker-compose.yml file | |
| pull | No | Always attempt to pull a newer version of the image | |
| noCache | No | Do not use cache when building the image | |
| services | No | Services to build (default: all services) | |
| projectName | No | Specify project name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only repeats the basic operation; it does not mention side effects like creating images, fetching dependencies, or cache behavior, nor does it say what happens on failure or what output is produced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the core action, with no wasted words. However, it is so brief that it provides less functional context than would be ideal, preventing a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five optional parameters, no annotations, no output schema, and no usage guidance, this minimal description is insufficient for reliable tool selection. It omits defaults, alternate-sibling relationships, and behavioral outcomes, making it a borderline minimal-fixture rather than a complete definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter has a meaningful description in the schema, so the tool description need not repeat them. The description adds no parameter semantics, but the schema carries the load, justifying the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Build') and resource ('Docker Compose services'), making it clear the action is to build images for Compose-defined services. It does not explicitly name sibling tools like compose_up or build_image, but the Compose qualifier helps distinguish it from single-image builds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as compose_up or build_image. An agent cannot tell whether this tool only builds images without starting services or when compose_up might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_downB
Stop and remove Docker Compose services
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Path to docker-compose.yml file | |
| volumes | No | Remove named volumes declared in the volumes section | |
| projectName | No | Specify project name | |
| removeOrphans | No | Remove containers for services not defined in the Compose file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of explaining the tool's destructive behavior. While 'stop and remove' signals some destructive action, it does not disclose that this also removes associated networks, that volumes are only removed when the volumes parameter is set, or that orphan containers may be removed based on removeOrphans.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler or redundant phrasing. The core action is front-loaded and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a destructive operation with no annotations and no output schema, the one-line description is not complete enough for an agent to safely reason about consequences. Information about what gets removed by default, when to avoid this tool, and how the projectName parameter scopes the operation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the schema already explains all four parameters. The tool description provides no additional parameter-level context about how file, volumes, projectName, or removeOrphans affect the teardown behavior, so it does not elevate the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb phrase, 'Stop and remove Docker Compose services,' which clearly identifies the operation and resource. It is easily distinguished from siblings like compose_up, compose_ps, compose_logs, and compose_build, and from stop_container/remove_container which target individual containers rather than a Compose-managed group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for tearing down a Docker Compose stack, but it does not explicitly state when to choose this tool over alternatives such as stop_container or remove_container. There are no exclusions or conditions given, so an agent must infer the intended use from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_logsA
View Docker Compose service logs
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Path to docker-compose.yml file | |
| tail | No | Number of lines to show from the end of the logs (e.g. "100") | |
| follow | No | Follow log output | |
| services | No | Services to show logs for (default: all services) | |
| projectName | No | Specify project name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. The verb 'View' conveys a read-only, non-destructive operation, but the description does not mention streaming behavior, default output scope, or potential blocking behavior when 'follow' is enabled. These are meaningful behavioral traits for a log tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or redundancy. It states the verb and resource directly and wastes no words, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has no required parameters, and the schema already documents every parameter. The description is sufficient for a basic understanding, though it could be slightly stronger by explicitly contrasting with 'container_logs' or noting default behavior. Overall, an agent can select and invoke it correctly with the provided information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description adds no additional parameter-level meaning beyond the tool's overall purpose, which is consistent with the baseline score of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('View') and a specific resource ('Docker Compose service logs'), making the tool's purpose immediately understandable. It clearly points to Compose-related logging rather than individual container logging, though it does not explicitly differentiate from the sibling 'container_logs' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Docker Compose service logs' implies when the tool should be used, but the description provides no explicit guidance about when to choose this tool over alternatives such as 'container_logs'. There are no when-not-to-use conditions or named fallback tools, leaving the routing decision largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_psC
List Docker Compose services
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Path to docker-compose.yml file | |
| services | No | Services to show (default: all services) | |
| projectName | No | Specify project name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not explain whether a compose file is required, what happens if 'file' is omitted, how 'projectName' affects results, or what the output looks like. The basic read-only nature is implied but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is efficient, though slightly under-specified for a tool with three optional parameters and no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, no annotations, and three optional parameters, yet the description only provides a high-level action. It omits return value expectations, default behavior, and command semantics, leaving an agent without enough context to invoke it confidently in varied situations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all three parameters with 100% coverage, so a baseline of 3 is appropriate. The description adds no extra meaning about how 'file', 'services', or 'projectName' interplay, but it does not need to compensate for coverage gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('Docker Compose services'), clearly indicating the tool's core function. It does not, however, explicitly contrast with sibling tools like 'list_containers', leaving some room for ambiguity about whether it lists services or running containers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_containers or compose_up. The description simply states the action without any context on prerequisites, typical workflows, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_upB
Start Docker Compose services
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Path to docker-compose.yml file | |
| build | No | Build images before starting containers | |
| detach | No | Run in background | |
| services | No | Services to start (default: all services) | |
| projectName | No | Specify project name | |
| removeOrphans | No | Remove containers for services not defined in the Compose file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must carry behavioral disclosure. It only says 'Start Docker Compose services' and does not mention side effects such as image building, network/volume creation, foreground blocking, or container removal with remove_orphans. This is a significant gap for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler, front-loading the primary action. It is highly scannable and appropriately leaves parameter details to the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutating tool with no annotations and no output schema, a one-line description is insufficient. It omits behavioral expectations, foreground/background behavior, and return or output information, requiring the agent to rely on prior Docker knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all six parameters with full descriptions, so the description carries little burden. It adds no parameter-level nuance, but the schema already provides the necessary meanings, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Start') and resource ('Docker Compose services'), making the core operation clear. It is distinguishable from siblings like compose_down and compose_ps, though it does not explicitly name alternative tools, so it falls just short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when starting Docker Compose services, and the sibling set includes complementary operations like compose_down and compose_build. However, it gives no explicit when-to-use guidance, preconditions, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
container_logsB
Fetch the logs of a container
| Name | Required | Description | Default |
|---|---|---|---|
| tail | No | Number of lines to show from the end of the logs (e.g. "100") | |
| since | No | Show logs since timestamp (e.g. "2021-01-02T13:23:37") or relative (e.g. "42m" for 42 minutes) | |
| until | No | Show logs before timestamp (e.g. "2021-01-02T13:23:37") or relative (e.g. "42m" for 42 minutes) | |
| container | Yes | Container ID or name | |
| timestamps | No | Show timestamps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states a basic fetch operation and does not mention output format, streaming behavior, whether logs are returned once or continuously, or any side effects. This is a significant gap given the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It states the core purpose efficiently and leaves parameter details to the schema, which is the ideal structure for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description plus fully documented schema is minimally viable, but it leaves out behavior such as return format and log-following semantics. An agent could call it correctly, but may be uncertain about what response to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions, so the description does not need to re-document them. It adds no extra meaning about defaults, parameter interactions, or format nuances, but the baseline of 3 is appropriate since the schema is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb-resource pair: 'Fetch the logs' of 'a container'. It is unambiguous and differentiates from sibling tools by specifying container logs, though it does not explicitly distinguish itself from compose_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the name and description: when you need logs for a container. However, it provides no explicit guidance about when to prefer this over compose_logs or inspect_container, and no exclusions or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
container_statsA
Display a live stream of container resource usage statistics
| Name | Required | Description | Default |
|---|---|---|---|
| noStream | No | Disable streaming stats and only pull the first result | |
| container | Yes | Container ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the key live-streaming behavior, but it does not explain that the stream may run indefinitely until interrupted, nor what resource metrics are included, and it adds little beyond the noStream parameter's own schema description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler. 'Live stream' and 'resource usage statistics' are packed with meaning, and the most important behavioral trait is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully covers parameters, but there is no output schema and no annotation support. The description is adequate for a simple call, but it leaves gaps around what statistics are shown, how the stream terminates, and what the output format looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds no additional semantic detail about container selection or the noStream flag, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Display'), a clear resource ('container'), and a distinct domain ('resource usage statistics'). This differentiates the tool from siblings like container_logs or inspect_container without needing to inspect their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as container_logs or inspect_container. The description does not mention any exclusions, prerequisites, or conditions like 'use noStream for a one-time snapshot'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_networkB
Create a new Docker network
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Network name | |
| driver | No | Driver to manage the network (default "bridge") | |
| subnet | No | Subnet in CIDR format (e.g. "172.30.0.0/16") | |
| gateway | No | Gateway for the subnet | |
| internal | No | Restrict external access to the network |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that a network is created but does not mention idempotency, failure behavior if the network already exists, permission requirements, or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately concise for a tool whose parameters are fully documented in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the schema covers all parameters, there is no output schema and no annotation coverage. The description omits important operational context such as return value, uniqueness constraints, and failure scenarios, leaving an agent uninformed about edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all five parameters. The description adds no parameter-level meaning, but the baseline of 3 is appropriate because the schema already handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Create' and the resource 'Docker network', making the operation unambiguous. It is readily distinguished from sibling tools such as list_networks, remove_network, and network_connect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, such as network_connect for attaching containers or list_networks for inspecting existing networks. The intended usage is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_volumeD
Create a Docker volume
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Volume name | |
| driver | No | Volume driver name (default "local") | |
| labels | No | Labels to set on the volume |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the sole source of behavioral disclosure. It only states that a volume is created, without mentioning idempotency, behavior if the volume name already exists, driver implications, label handling, permissions, or side effects. This is a serious gap for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short, front-loaded sentence with no wasted words. However, because it largely restates the tool name and omits useful context, it is under-specified rather than genuinely well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with one required parameter, an object-typed labels parameter, no output schema, and no annotations, this description is far too sparse. It does not mention required parameters, defaults, expected behavior, or failure modes, so an agent cannot predict the tool's behavior or return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the three parameters and the driver default. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a Docker volume' is essentially a grammatical expansion of the tool name create_volume; it adds only the word 'Docker' and no new meaning. It is clear but tautological, and does not differentiate itself beyond the obvious verb from sibling volume tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool, when not to use it, or which sibling tools might be alternatives (e.g., list_volumes, remove_volume). An agent is left to infer usage solely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exec_containerC
Execute a command in a running container
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Command to execute | |
| container | Yes | Container ID or name | |
| interactive | No | Keep STDIN open even if not attached |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are entirely absent, so the description carries the full burden of behavioral disclosure. It reveals that a command is executed in a running container but says nothing about side effects, whether output or exit codes are returned, or how the interactive parameter affects behavior. For an arbitrary-command execution tool, this is under-disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler and the core action front-loaded. It is appropriately concise, though it sacrifices behavioral context that other dimensions require.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that executes arbitrary commands, the description is thin: it omits return behavior, the semantics of interactive mode, caution about destructive effects, and explicit disambiguation from sibling tools. With no annotations and no output schema, this leaves an agent under-informed about the consequences of calling the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes all three parameters with 100% coverage, so the baseline is 3. The description adds marginal context by specifying the container is already running, but it does not add meaning to command or interactive beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: execute a command in a running container. It distinguishes itself from run_container and compose_up because it implies the container already exists, but it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus run_container, container_logs, or inspect_container. The phrase 'running container' implies the prerequisite that the container must already be active, but no explicit when-to-use or when-not-to-use direction is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_containerC
Show detailed information about a container
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Format the output using a Go template | |
| container | Yes | Container ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that the operation is read-only, what kind of information is returned, whether the container must exist, or how errors are surfaced. 'Show detailed information' is minimally informative but not transparent about behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear, front-loaded sentence with no redundant words or filler. It communicates the core purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should explain return format, read-only nature, and likely failure cases. It provides none of that, leaving an agent to infer important invocation and post-invocation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters and their meaning. The description adds no extra parameter-level detail, which matches the baseline for well-covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Show') and resource ('container') and indicates the output is detailed information, which separates it from list/log/stat commands. It does not explicitly differentiate from sibling tools, but the tool name and context make the intent reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus sibling tools like container_logs, container_stats, or exec_container. The description implies 'when you need detailed info,' but offers no explicit selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_containersB
List all Docker containers
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Show all containers (default shows just running) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure, but it only says 'List'. It does not mention that running without 'all' excludes stopped containers, and the word 'all' actually conflicts with the schema's stated default of showing only running containers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or repetition. The main action and resource are front-loaded, and nothing extraneous is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter list operation, the schema covers the parameter, but the description alone is incomplete: it fails to clarify the running-only default and contains an 'all' wording that could mislead an agent. The missing usage context lowers completeness below what a strong minimal definition would provide.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'all' parameter is already clearly documented in the schema. The tool description adds no additional parameter meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a clear action ('List') and resource ('Docker containers'), and it is easy to distinguish from sibling tools like list_images or list_volumes. However, the word 'all' is ambiguous because the schema says the default is just running containers, so the description slightly overstates the default behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus other list tools, nor when to set the 'all' parameter. The schema's parameter description implies the default behavior, but the tool description itself offers no selection or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_imagesA
List all Docker images
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. 'List' clearly signals a read-only operation, but the description does not explicitly state that it has no side effects, what outputs it returns, or other behavioral details such as sorting or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the verb and object. Every word contributes meaning, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool with no complex side effects, 'List all Docker images' is sufficient for an agent to select and invoke the tool correctly. There is no missing information that would prevent correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter documentation is unnecessary. The word 'all' reinforces that no filtering or arguments are expected, which is consistent with the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a clear resource ('Docker images'), immediately distinguishing it from sibling tools like list_containers and list_volumes. There is no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the verb-resource pairing: use this tool to enumerate Docker images. However, there is no explicit guidance about when not to use it or which alternative to prefer, though the simple scope makes this less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_networksA
List all Docker networks
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. 'List all Docker networks' implies a read-only enumeration with no filtering or side effects, and the word 'all' indicates full-scope listing. However, it does not describe return format, pagination, permissions, or potential failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, four-word sentence with no filler or redundancy. It front-loads the core action and resource, earning every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, simple listing operation, the description is mostly complete: an agent can infer what to call and why. It omits details about the returned data, but given no output schema exists and the tool is trivial to invoke, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there are no parameter semantics for the description to elaborate. A baseline of 4 is appropriate for a parameter-free tool, and the description has nothing missing on this front.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a specific resource ('Docker networks'), making the tool's function immediately clear. It also distinguishes itself from siblings like list_containers, list_images, and remove_network by naming a distinct resource and operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the verb 'List' and the resource 'networks', but there is no explicit guidance about when to prefer this over alternatives or when not to use it. It does not mention sibling tools such as create_network or remove_network, though the resource-specific naming makes confusion unlikely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_volumesA
List all Docker volumes
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of signaling behavior. 'List all' clearly indicates a read-only, unfiltered enumeration, so there are no hidden destructive side effects. It does not mention output shape or daemon requirements, but those are minor for a zero-parameter list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single six-word sentence with no filler. The verb and resource are front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter list tool, the description is largely complete: it names the action, scope, and resource. The only gap is that it does not hint at the return shape or fields, but that is generally inferable for a volume listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so the baseline for parameter semantics is 4. There are no parameters for the description to explain, and the description correctly implies that the tool takes no arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('list') and resource ('Docker volumes'), and the word 'all' clarifies scope. This clearly distinguishes it from sibling tools like list_containers and list_images by naming the exact resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: use this when you want all Docker volumes. However, there is no explicit guidance about alternatives or when not to use it, such as comparing it to create_volume, remove_volume, or other list_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_connectB
Connect a container to a network
| Name | Required | Description | Default |
|---|---|---|---|
| alias | No | Add network-scoped alias for the container | |
| network | Yes | Network name or ID | |
| container | Yes | Container ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Connect a container to a network' communicates the core mutation but does not mention whether the container must be running, whether the network must already exist, whether prior connections change, idempotence, or what the response contains. This is thin for a state-changing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. It is efficient and easy to parse, though its brevity contributes to missing context rather than being a structural flaw.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a modifying operation with no annotations and no output schema, this description is incomplete. It does not clarify key operational context such as network existence, container state, whether aliases are allowed/required, or what happens on failure or success. The schema covers parameters but not usage conditions or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, including clear explanations for network, container, and alias. The description adds no parameter-level detail, but the schema already handles that burden, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Connect') and resource ('a container to a network'), which clearly distinguishes it from network-level siblings like create_network and remove_network. An agent can tell this tool attaches an existing container to a network rather than managing networks themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action itself implies when to use it, but there is no explicit guidance about when to use this vs alternatives, no exclusions, and no stated prerequisites such as the network or container already existing. Usage context is left to inference rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prune_imagesB
Remove unused images
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Remove all unused images, not just dangling ones | |
| filter | No | Provide filter values (e.g. "until=24h") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that images will be removed, but it does not explain whether deletion is irreversible, what qualifies as 'unused,' or what side effects may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately concise, though it is so brief that it sacrifices useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is too thin. It lacks information about when to prune, what exactly gets removed by default, and what consequences the operation has.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already documented in the input schema. The description adds no extra meaning beyond the schema, which is acceptable but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the resource ('unused images'), which distinguishes it from sibling tools like list_images, pull_image, and remove_container. The meaning is immediately understandable even without additional context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description implies a cleanup operation, but an agent receives no help deciding between this and other image-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pull_imageB
Pull a Docker image from a registry
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Image name (e.g. "nginx:latest") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that pulling downloads data, requires registry access, may need authentication, consumes disk space, or can be a long-running operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence with no filler. It front-loads the core purpose and is appropriately sized for a one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus schema is minimally viable for invoking the tool with one parameter, but it lacks behavioral context such as side effects, registry access requirements, and failure modes. It could be more complete despite the simple interface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema adequately documents the image parameter with an example. The description adds no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: pulling a Docker image from a registry. This clearly distinguishes it from sibling tools like build_image, run_container, and list_images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as build_image or when pulling is needed before run_container. Usage context is only implied by the verb 'pull.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_containerC
Remove a Docker container
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force removal of running container | |
| container | Yes | Container ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Remove a Docker container' and fails to disclose that removal is destructive, that running containers require the force flag, or that the operation is irreversible. For a mutation tool, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words, but it is under-specified rather than appropriately concise. The brevity comes at the cost of omitting important behavioral and usage context for a destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a destructive action, the description is not complete enough. An agent cannot infer the delete semantics, the force behavior, or how this differs from stop_container. For such a simple tool, these missing details are critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'container' and 'force' already documented in the input schema. The description adds no additional parameter meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Remove') and a specific resource ('Docker container'), which distinguishes it from sibling tools like remove_network and stop_container. However, it closely paraphrases the tool name and does not clarify that 'remove' means delete rather than stop, so it stops short of a fully informative purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like stop_container, nor any mention of prerequisites such as the container needing to exist or not be running unless force is used. The usage context is only implied by the verb 'remove'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_networkB
Remove a Docker network
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Network name or ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Remove', implying a destructive operation, but does not mention consequences such as failure when the network is in use or the need to disconnect containers first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence with no filler. It front-loads the action and resource clearly, which is appropriate for a tool with one well-defined parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple and the schema is complete, the lack of annotations leaves behavioral context unaddressed. A useful description would mention that removing a network fails if it is in use, or that containers must be disconnected first. Without this, the description is not fully contextually complete for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single parameter with 100% coverage: 'Network name or ID'. The description adds no parameter-specific meaning, so it does not need to compensate for schema gaps. The baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove') and resource ('a Docker network'), making the tool's core function immediately clear. It also differentiates from sibling tools like create_network and network_connect by naming the exact resource and action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as create_network or network_connect. There is no mention of prerequisites, when removal is appropriate, or when it should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_volumeB
Remove a Docker volume
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Volume name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys destructive removal but discloses no details about permanence, failure behavior when the volume is in use, or whether associated data is deleted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words, front-loaded verb, and zero filler. Every word carries meaning for the stated purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the core operation is stated and the schema covers invocation. However, with no annotations and no output schema, it omits important operational context such as irreversibility and in-use failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the single 'name' parameter. The description adds no additional parameter-level meaning beyond the operation, so the baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states exactly the operation: 'Remove a Docker volume.' The verb 'Remove' plus resource 'Docker volume' is specific and clearly distinguishes it from sibling remove_network and remove_container.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool or when to prefer alternatives. It does not mention prerequisites such as ensuring the volume is not in use, nor does it contrast with create_volume or list_volumes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_containerC
Run a Docker container
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | Environment variables (e.g. ["KEY=value"]) | |
| name | No | Name for the container | |
| image | Yes | Docker image to run | |
| ports | No | Port mappings (e.g. ["8080:80"]) | |
| detach | No | Run container in background | |
| command | No | Command to run in the container | |
| volumes | No | Volume mappings (e.g. ["/host/path:/container/path"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. 'Run a Docker container' implies creating and starting a container but does not mention image pulling behavior, container lifecycle side effects, detach semantics, or what the tool returns after running.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise, front-loaded sentence with no wasted words. However, it is so minimal that it misses opportunities to add useful behavioral or usage context without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should compensate by explaining return values and side effects, but it does not. An agent is left without key information about what happens after invoking run_container, such as whether a container ID is returned or whether the image is pulled automatically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents all seven parameters with 100% coverage, so the baseline is 3. The description itself adds no parameter-specific meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Run') on a specific resource ('a Docker container'). It is distinguishable from sibling tools like stop_container, remove_container, and exec_container by its core operation, though it does not explicitly contrast itself with any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as compose_up for multi-container workflows or exec_container for running commands in an existing container. The description simply states what the tool does without any contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_scanA
Scan a Docker image for vulnerabilities
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Image to scan (e.g. "nginx:latest") | |
| verbose | No | Show detailed vulnerability information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavior. It only says 'Scan a Docker image for vulnerabilities', leaving unclear whether the scan pulls the image, updates vulnerability databases, requires network access, modifies state, or what the response contains. The verb 'scan' weakly implies a read-only operation, but that is not stated explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler or redundancy. It front-loads the action ('Scan') and resource ('a Docker image') immediately, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two simple parameters fully documented in the schema and a straightforward purpose, the description is minimally sufficient for calling the tool. However, there is no output schema and no indication of what the scan returns, how results are formatted, or whether the scan triggers side effects like pulling the image. For a security scanning tool, the output is central, so this gap prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'image' and 'verbose' have sufficient descriptions in the input schema. The tool description adds no additional parameter-level detail, so the baseline score of 3 applies per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Scan'), a clear resource ('a Docker image'), and an explicit intent ('for vulnerabilities'). It is immediately distinguishable from all sibling tools, which are container, network, volume, and compose operations; none overlap with security scanning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative-routing guidance is given, but the description clearly establishes the context: use this when you need to assess a Docker image for vulnerabilities. Since no sibling tool offers a similar scanning capability, the boundary between this tool and alternatives is self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_containerB
Stop a running Docker container
| Name | Required | Description | Default |
|---|---|---|---|
| container | Yes | Container ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the primary action but does not explain side effects such as the container remaining present but stopped, needing to be running first, or that this is non-destructive. No contradictions exist, but depth is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler words and directly front-loads the action and target. It is appropriately sized for a simple one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one parameter and no output schema, the description covers the basic purpose but misses behavioral context such as state change, non-destructiveness, and how it differs from removal. It is minimally adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter is already documented as 'Container ID or name'. The description adds little beyond the schema, but the schema is sufficient. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Stop') and resource ('a running Docker container'), so an agent immediately knows the core operation. It does not explicitly distinguish itself from siblings like remove_container, but 'stop' versus 'remove' is reasonably clear from the action word.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. The description does not mention that this only applies to running containers, that it should not be used to remove a container, or when run_container or remove_container would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_dfA
Show Docker disk usage
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | Show detailed information on space usage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The verb 'Show' clearly signals that this is a read-only, non-destructive operation, which is important given there are no annotations. However, it does not disclose behavior such as whether the output includes images, containers, volumes, build cache, or reclaimable space, nor any response format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to the core purpose, making it easy for an agent to parse and act on quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description adequately conveys what the tool returns. It could be slightly richer by noting what the disk usage covers or that it is a non-mutating query, but the current text is sufficient for correct invocation in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter 'verbose' is fully described in the schema. The description adds no additional parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Show') and identifies the exact resource ('Docker disk usage'). It is concise and clearly distinct from siblings like system_info or list_volumes, so an agent can determine this is a disk-usage reporting tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever Docker disk usage information is needed. However, it provides no explicit guidance about alternatives, prerequisites, or situations where a different tool such as system_info or list_volumes would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_infoB
Display system-wide information
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Format the output using a Go template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. The verb 'Display' clearly indicates a non-mutating read operation, but the description does not mention what kind of system information is returned, output shape, or whether any privileges are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded, efficient sentence with no filler. It states exactly what the tool does in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity with one optional, well-documented parameter. However, there is no output schema and no explanation of what 'system-wide information' includes, nor any differentiation from system_df, so completeness is adequate but not strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter `format` is fully described in the schema as a Go template for output formatting. Since schema coverage is 100%, the description does not need to add parameter detail; it also does not add anything beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Display') and names the resource ('system-wide information'). It establishes this as a general read-only info tool, distinct from more specific siblings like system_df, though it does not explicitly differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as system_df, which also reports system-level data. An agent is left to infer the appropriate choice from the tool name and sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
27 tool updates
v0.3.0- First observed
build_image - First observed
compose_build - First observed
compose_down - First observed
compose_logs - First observed
compose_ps - First observed
compose_up - First observed
container_logs - First observed
container_stats - First observed
create_network - First observed
create_volume - First observed
exec_container - First observed
inspect_container - First observed
list_containers - First observed
list_images - First observed
list_networks - First observed
list_volumes - First observed
network_connect - First observed
prune_images - First observed
pull_image - First observed
remove_container - First observed
remove_network - First observed
remove_volume - First observed
run_container - First observed
security_scan - First observed
stop_container - First observed
system_df - First observed
system_info
TDQS
Most tools target distinct resource-action pairs, so an agent can usually select correctly. A few compose and container tools could be confused (compose_ps vs list_containers, compose_logs vs container_logs), but their descriptions and compose prefix make the boundary clear.
Many tools follow verb_noun (list_containers, build_image, prune_images), but several use noun_noun (container_logs, system_info, security_scan) or noun_verb (network_connect). The mix is readable but not a consistent pattern.
27 tools is past the typical MCP range and creates a heavy selection surface. Docker is broad, but the compose and container categories overlap enough that the count feels too high.
Core operations exist for containers, images, networks, and volumes, but common lifecycle operations are missing: a stopped container cannot be started, a specific image cannot be removed, and there is no network disconnect. These gaps will cause agent failures on everyday Docker tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables Docker container management directly through Claude using the Model Context Protocol. Provides 14 tools for managing containers, images, volumes, and Docker Compose deployments through natural language commands.-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to manage Docker containers, images, and Docker Compose deployments through the Model Context Protocol. Provides secure container lifecycle management, image operations, and multi-host Docker server connections.276MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Docker containers, images, networks, volumes, and Compose services through the Model Context Protocol. It supports system operations, command execution within containers, and integration with Docker Hub and GitHub Container Registry.1302MIT
- AlicenseDqualityDmaintenanceEnables AI assistants to interact with local Docker containers, Kubernetes clusters, and system logs using the Model Context Protocol.922ISC
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zskycode/docker-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server