Skip to main content
Glama
jahrulnr

mcp-docker-agentic

by jahrulnr

mcp-docker-agentic

An MCP server for agentic Docker container operations. It uses the local docker binary, so authentication, networking, volumes, and context are whatever docker on your machine is configured for.

Concept

This is the Docker twin of mcp-ssh-agentic. Where the SSH server targets user@host[:port], this server targets a Docker container name or id. The tool names are parallel (ssh_*docker_*) so existing muscle memory transfers across.

Related MCP server: Container Exec MCP Server

Running with npx

After release, the package is on npmjs and GitHub Packages as @jahrulnr/mcp-docker-agentic.

npmjs (simplest):

{
  "mcpServers": {
    "docker-agentic": {
      "command": "npx",
      "args": ["-y", "@jahrulnr/mcp-docker-agentic"]
    }
  }
}

GitHub Packages (needs a PAT with read:packages in ~/.npmrc):

@jahrulnr:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=YOUR_GITHUB_PAT
{
  "mcpServers": {
    "docker-agentic": {
      "command": "npx",
      "args": ["-y", "--registry=https://npm.pkg.github.com", "@jahrulnr/mcp-docker-agentic"]
    }
  }
}

The container must already exist and be running. Pass the container name or id as container, for example my-app or a1b2c3d4.

Available Tools

docker_ping, docker_read_file, docker_write_file, docker_read_image, docker_list_dir, docker_mkdir, docker_grep, docker_apply_patch, docker_delete, docker_exec, docker_interactive_exec, docker_interactive_input, docker_interactive_close, docker_interactive_list, docker_cp_to, docker_cp_from, docker_close

Examples:

docker_ping("my-app")
docker_read_file("my-app", "/app/config.json")
docker_write_file("my-app", "/app/.env", "PORT=3000\n")
docker_mkdir("my-app", "/app/releases/42")
docker_list_dir("my-app", "/var/log")
docker_grep("my-app", "TODO", "/app", "*.js")
docker_exec("my-app", "ps aux")

# Commands that may require interactive input:
docker_interactive_exec("my-app", "apt-get upgrade")
docker_interactive_input(session_id="abc123", input="Y")
docker_interactive_close("abc123")

docker_cp_to("my-app", "./dist/app.tar.gz", "/app/app.tar.gz")
docker_cp_from("my-app", "/app/logs/app.log", "./app.log")

Behavior Notes

  • docker_delete uses rm -f for files and rm -rf only when recursive=true.

  • docker_write_file writes or overwrites a container file directly from text. Use append=true to append instead of overwrite. Parent directories are created automatically unless create_dirs=false.

  • docker_mkdir is equivalent to mkdir -p inside the container.

  • docker_exec has a default timeout of 30 seconds and a maximum output size of 5 MiB. docker_read_image supports files up to 20 MiB. docker_write_file accepts content up to 5 MiB. docker_cp_* operations default to a 120-second timeout.

  • All container commands run inside a non-login, non-interactive shell (bash --noprofile --norc -c, falling back to sh -c) so broken profile scripts cannot corrupt output. docker_exec always returns exit_code=N along with stdout. If stderr is present, it is included in a [stderr] section. Non-zero exit codes set isError, but stdout is still returned.

  • Interactive sessions (TTY): docker_interactive_exec runs docker exec -it, allocating a pseudo-terminal so programs that require a real terminal (sudo, passwd, confirmation prompts, setup wizards, REPLs) behave correctly. The server waits until output has been quiet for quiet_ms (default: 500 ms) or the process exits, then returns the collected output along with a session_id. Continue the session using docker_interactive_input (leave input empty to simply wait for more output without sending anything). This mechanism is based on output inactivity rather than prompt detection. Commands that continuously produce output may cause the tool call to wait longer. The server allows up to 8 concurrent interactive sessions, automatically cleans up sessions after 10 minutes of inactivity, and terminates all active sessions when the server exits. Use docker_interactive_list to view active sessions and docker_interactive_close to close them manually.

  • docker_grep treats "no matches" as a successful result and still returns partial matches even if some paths cannot be read.

  • docker_cp_to and docker_cp_from support recursive=true for directories. Local parent directories are created automatically when downloading. Remote parent directories must already exist before uploading (use docker_mkdir if needed).

  • docker_close is a no-op because Docker does not keep a persistent connection per tool call.

Local Development

npm install
npm run check
npm test
npm start

Unit tests use createMockTransport() — the same Docker contract (exec / cp / close / spawnInteractive) executed in a local sandbox, without a real container.

To test the MCP protocol, use MCP Inspector or any MCP client that supports stdio transport.

CI / Release

GitHub Actions (.github/workflows/ci.yml):

  1. Unit test (any branch/PR) — Node 18 / 22 / 24 → npm run check + npm run test:unit

  2. MCP test (after unit) — same Node matrix × (node bin | npx from npm pack) with MCP_DOCKER_AGENTIC_MOCK=1

  3. Push to master — after both pass, if tag vX.Y.Z is new: create tag → publish to GitHub Packages + npmjs

Local: npm run test:all

Bump version in package.json before merging to master for a new release. Re-merging the same version skips tag/publish.

Secrets: NPM_TOKEN. GitHub Packages uses GITHUB_TOKEN (packages: write).

Available Tools

19 tools
docker_apply_patchA

Apply a unified diff inside a Docker container. Tries apply_patch (strip=0 only), then git apply, then patch. Supports dry-run and strip level.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYesUnified diff to apply.
stripNoNumber of leading path components to strip (-p<N>).
dry_runNoSimulate the patch application without changing files.
containerYesDocker container name or id.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral disclosure. It adds valuable insight by revealing the fallback order (apply_patch, git apply, patch) and the constraint that apply_patch only supports strip=0. This goes beyond the schema, though it stops short of explaining failure modes or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every word earns its place. It efficiently communicates the mechanism, fallback, and supported options without any fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is present, so the description should clarify return values or error behavior, but it does not. It adequately covers what the tool does and how it tries to apply the patch, but leaves out failure handling and what the output might look like, which is a gap for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already covers all 4 parameters with descriptions (100% coverage), so the baseline is 3. The description adds extra meaning by explaining how the 'strip' parameter interacts with the backend fallback (apply_patch only works with strip=0), and it confirms dry-run support, enriching the agent's understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Apply a unified diff inside a Docker container.' This uses a specific verb (apply) and resource (Docker container) and distinguishes it from sibling file operations like docker_write_file and docker_read_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for applying diffs but provides no explicit guidance on when to use this tool versus alternatives like docker_write_file or docker_exec. No exclusions or alternative tools are mentioned, leaving the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_closeA

No-op for Docker: the transport does not keep a persistent connection. Always succeeds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: it is a no-op, always succeeds, and explains why (no persistent connection). This is completely transparent about the lack of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences, front-loaded with the core fact ('No-op for Docker'), and every word contributes to understanding. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-op tool with no annotations or output schema, the description covers purpose, behavior, and success guarantee. There is no missing information needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters, so the baseline is 4. The description adds no parameter information, but none is needed. It reinforces that the operation is a no-op, which is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is a 'No-op for Docker' and explains why ('the transport does not keep a persistent connection'). This is specific and distinguishes it from sibling tools like docker_interactive_close, which imply a different closing mechanism.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: because the transport is connectionless, this call is a no-op. It implies usage for compatibility or when a close is expected, but it does not explicitly mention alternatives like docker_interactive_close. Still, the guidance is sufficient for a trivial tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_cp_fromA

Copy a file or directory from a Docker container to the local machine (analogous to docker cp container:path local).

ParametersJSON Schema
NameRequiredDescriptionDefault
containerYesDocker container name or id.
recursiveNoRequired when remote_path is a directory.
local_pathYesAbsolute or relative path on the local machine.
timeout_msNo
remote_pathYesAbsolute or relative path inside the container.

TDQS

A3.7/5.0
Behavior2/5

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 'Copy a file or directory' without mentioning important traits such as: recursive flag required for directories, potential overwrite behavior, failure modes, or permission implications. The description is too thin to give the agent a solid understanding of what happens during the operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is direct and front-loaded with the core action. It wastes no words and effectively communicates the primary purpose and direction. Excellent conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple with 3 required and 2 optional parameters, and no output schema. The description plus schema covers most invocation details, but the description does not mention overwrite behavior or the fact that directories require recursive=true (though the schema notes it). This is a minor gap, making it adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (80% of parameters have descriptions), so the schema already explains container, remote_path, local_path, and recursive. The description adds the high-level notion of 'file or directory' and the docker cp analogy, but does not add specific parameter-level details beyond what the schema provides. Thus a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb+resource: 'Copy a file or directory from a Docker container to the local machine.' It also provides an analogy to `docker cp container:path local`, which immediately distinguishes it from the sibling `docker_cp_to` (reverse direction). This is unambiguous and distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: whenever you need to copy from a container to the local machine. It does not explicitly mention alternatives or exclusions (e.g., 'use docker_cp_to for the reverse'), but the directionality is obvious, and the sibling list shows `docker_cp_to` as the opposite operation. This matches 'clear context, no exclusions.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_cp_toA

Copy a local file or directory into a Docker container (analogous to docker cp local container:path).

ParametersJSON Schema
NameRequiredDescriptionDefault
containerYesDocker container name or id.
recursiveNoRequired when local_path is a directory.
local_pathYesAbsolute or relative path on the local machine.
timeout_msNo
remote_pathYesAbsolute or relative path inside the container.

TDQS

A3.8/5.0
Behavior2/5

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 states the basic action and an analogy, but does not mention potential side effects (e.g., overwriting existing files), prerequisites (e.g., container must be running), or error behavior. This is a significant gap for a mutation-like tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is direct and front-loaded. It conveys the essential purpose without any wasted words, making it easy for an agent to quickly grasp the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description should explain more about return behavior and edge cases. It only covers the basic copy operation and omits important context like the recursive flag requirement (though present in the schema) and prerequisites like the container needing to exist or run. This is incomplete for a Docker operation with multiple parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has high coverage (80%), so the baseline is 3. The description adds value by clarifying that local_path can be a file or directory, which is not explicitly stated in the schema description. It also clarifies that remote_path is inside the container, reinforcing the schema's meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Copy') and the target ('local file or directory into a Docker container'), making it specific and unambiguous. The analogy to 'docker cp local container:path' also helps distinguish it from the sibling tool docker_cp_from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool: copying local content into a container. It does not explicitly name alternatives or exclusions, but the directionality is implied by 'into a Docker container' and the analogy, so it's clear enough without being overly prescriptive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_deleteA

Delete a file or directory inside a Docker container. Directories require recursive=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute or relative path inside the container.
containerYesDocker container name or id.
recursiveNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It states the destructive nature ('Delete') and the requirement that directories need recursive=true, which is valuable beyond the schema. However, it omits error conditions (e.g., behavior on nonexistent paths) and permission requirements, leaving some ambiguity about 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the main action front-loaded. The second sentence adds a necessary constraint without redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with three parameters and no output schema, the description covers the essential behavior and the one non-obvious parameter requirement. It does not address error handling or return values, but given the tool's simplicity and the schema's parameter descriptions, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes 'path' and 'container', leaving 'recursive' without description. The description adds meaning by clarifying that the path can be a file or directory and that directories require recursive=true, thus compensating for the missing schema coverage. This extra semantic weight justifies a score above the schema-only baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Delete') and identifies the resource ('file or directory inside a Docker container'), clearly distinguishing it from sibling tools like read/write. The additional note about recursive=true clarifies scope. This leaves no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: to remove a file or directory from a Docker container. It provides a key usage condition—'Directories require recursive=true'—which guides the agent on how to invoke the tool for directories. However, no explicit alternatives or exclusions are mentioned, but the context is sufficient for a simple delete operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_execA

Execute an intentional shell command inside a Docker container. Supports stdin, cwd, env, custom output limit, and acceptable exit codes. Set background=true to run a command detached and get a job_id; stdin is not allowed for background jobs. Use docker_exec_result to poll/wait and docker_exec_kill to stop or clean up.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory inside the container.
envNoExtra environment variables for the command.
stdinNoText to write to the command's stdin. Not allowed when background=true.
commandYes
ok_codesNoExit codes to treat as success in addition to 0.
containerYesDocker container name or id.
backgroundNoRun the command detached and return a job_id instead of waiting for completion.
timeout_msNoTimeout for non-background executions.
max_output_bytesNoMaximum stdout/stderr bytes to capture for non-background executions.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well by disclosing supported inputs (stdin, cwd, env, output limit, exit codes) and the background/detached behavior with job_id. It also mentions the interdependence with result/kill tools. It does not detail return format or timeout failure behavior, so it is not fully exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: purpose, feature list, and background behavior with sibling pointers. Perfectly sized and front-loaded, with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with no output schema, the description covers execution modes, input options, and follow-up tools. It omits explicit return structure and timeout behavior, but the schema covers defaults and limits. Overall adequate for effective tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 89%, so the baseline is 3. The description adds useful semantics by explaining that background=true returns a job_id and that stdin is incompatible with background jobs, which goes beyond the raw schema. It also maps 'custom output limit' and 'acceptable exit codes' to max_output_bytes and ok_codes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes a shell command inside a Docker container. It distinguishes itself from siblings by explicitly referencing docker_exec_result and docker_exec_kill as follow-up tools, making the purpose unambiguous. The word 'intentional' hints at non-interactive use, further clarifying its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for background execution and notes that stdin is not allowed in background mode. It also directs users to docker_exec_result for polling and docker_exec_kill for cleanup. However, it does not explicitly compare with docker_interactive_exec or state when not to use this tool, so it lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_exec_killA

Send a signal to a background job started with docker_exec background=true. Optionally remove the job log directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id returned by docker_exec background=true.
signalNoSignal name or number to send to the process group (e.g. SIGTERM, SIGKILL).SIGTERM
cleanupNoRemove the job log directory after signaling.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the transparency burden. It discloses the target background job and optional cleanup, but omits behavioral details like the signal being sent to the process group, the default SIGTERM, or that cleanup permanently removes the log directory. This leaves gaps about the tool's full effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the primary action and followed by the optional cleanup. Every word earns its place, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 3 well-documented params and no output schema, the description covers the key prerequisite (background job from docker_exec background=true) and the optional cleanup. It does not mention return values or error behavior, but these are not critical for a control operation like signaling a job.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% description coverage for all three parameters, so the baseline is 3. The description adds little beyond what the schema already states (e.g., the cleanup option), and repeats the context for job_id without additional semantic enrichment.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states a specific action ('Send a signal') targeting a specific resource ('background job started with docker_exec background=true'), and the optional cleanup. This distinguishes it from sibling tools like docker_exec (starting jobs) and docker_exec_result (retrieving output), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context by specifying it applies to background jobs launched with docker_exec background=true. However, it does not explicitly state when not to use this tool or name alternative tools for interactive sessions, so it stops short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_exec_resultA

Check the status and output of a background job started with docker_exec background=true. Optionally wait until it exits.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoBlock until the job exits or the timeout is reached.
job_idYesThe job_id returned by docker_exec background=true.
timeout_msNoMaximum time to wait when wait=true.

TDQS

A4/5.0
Behavior3/5

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 discloses the optional blocking behavior ('Optionally wait until it exits'), which is useful. However, it doesn't state whether the result is consumed/destroyed, whether repeated calls are safe, or any error conditions. Since the tool name implies a read-only check, the absence of explicit non-destructive disclosure is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The key information is front-loaded: what the tool does, the context, and the optional behavior. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 params, no output schema, no annotations), the description adequately captures the core purpose and blocking behavior. It could be more specific about the return format (e.g., what 'status and output' means structurally), but the name and context make the intent clear enough. A 4 reflects that it's mostly complete but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides full descriptions for all three parameters (job_id, wait, timeout_ms), including default values and ranges. The description adds no new parameter-specific information beyond what the schema already contains, so it earns the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'check' and the resource: the status and output of a background job started with docker_exec background=true. This distinguishes it from sibling tools like docker_exec (which starts jobs) and docker_exec_kill (which kills them).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly specifies the prerequisite: the job must have been started with docker_exec background=true. It implies this tool is for polling/retrieving results, and the optional wait behavior gives context on when to use it. However, it doesn't explicitly mention alternatives or exclusions, so a small deduction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_grepA

Search text files recursively inside a Docker container with ripgrep, falling back to grep. Output format is file:line:match.

ParametersJSON Schema
NameRequiredDescriptionDefault
globNoFile glob to restrict search (e.g. '*.js').
pathNoAbsolute or relative path inside the container..
invertNoInvert match, returning lines that do NOT match (-v).
patternYes
containerYesDocker container name or id.
ignore_caseNoCase-insensitive matching (-i).
max_resultsNoStop reading each file after this many matches (-m).
word_regexpNoMatch whole words only (-w).
fixed_stringsNoTreat pattern as a literal string (-F).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description carries the transparency burden. It discloses key behaviors: recursive search, restriction to text files, ripgrep-to-grep fallback, and the output format. It does not mention side effects or permissions, but these are likely moot for a search operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and contains no wasted words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool without an output schema, the description covers purpose, scope, engine fallback, and output format. It omits edge cases like no-match behavior or error handling, but these are not essential for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 89%, and all important parameters have their own descriptions. The tool description itself adds no parameter-level semantics, but none are needed given the schema's completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('search') and resource ('text files recursively inside a Docker container'), and adds distinguishing details ('with ripgrep, falling back to grep' and 'file:line:match' output) that set it apart from sibling tools like docker_read_file and docker_exec.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this is for searching file contents inside a container, providing unambiguous context. However, it does not explicitly name alternatives or when-not-to-use conditions, so it stops short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_interactive_closeA

Kill and remove an interactive Docker session started with docker_interactive_exec.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. 'Kill and remove' explicitly states the destructive nature and identifies the affected resource as an interactive Docker session. It stops short of detailing failure modes or permission requirements, but the core behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes to the tool's purpose and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter destructive close tool, the description adequately conveys what the tool does and when to use it. A brief note on where to obtain the session_id (e.g., from docker_interactive_list) would make it more complete, but it is not critically missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only the name 'session_id' with a type and minLength, and the description does not explicitly describe the parameter. However, the phrase 'started with docker_interactive_exec' implies the session ID comes from that flow, giving some contextual meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb phrase 'Kill and remove' with a clear resource type ('interactive Docker session') and explicitly ties it to sessions started with docker_interactive_exec. This clearly distinguishes it from generic siblings like docker_close or docker_exec_kill.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context by stating the tool is for sessions created via docker_interactive_exec. It does not explicitly mention exclusions or alternatives such as docker_close, but the intended use case is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_interactive_execA

Start a command inside a Docker container with a TTY allocated, for programs that prompt for input (sudo password, y/N confirmations, setup wizards, REPLs). Waits until output goes quiet (likely waiting for input) or the process exits, then returns the output so far plus a session_id. If the command finishes without prompting, the session is closed automatically and there is nothing further to do. Otherwise, use docker_interactive_input to reply or poll, and docker_interactive_close when finished. Idle sessions auto-expire after 10 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes
quiet_msNoHow long output must be idle before returning.
containerYesDocker container name or id.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden and does an excellent job: it discloses the TTY allocation, the wait-for-quiet behavior, session_id return, automatic session closure when the command finishes, and the 10-minute idle expiry. This gives the agent a clear model of the tool's runtime behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet information-dense, with no filler. It front-loads the primary action and then logically explains the async behavior, session lifecycle, and related tools, all in four sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite moderate complexity, the description fully covers the usage flow, session management, and timeout behavior. It names sibling tools for continuation and cleanup, making it self-contained for an agent to decide next steps. No output schema exists, but the description explains what is returned (output so far plus session_id).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (command lacks a description). The description adds meaning by explaining the quiet period (likely waiting for input) which clarifies quiet_ms, and the overall interactive session context makes command and container self-evident. It does not fully explain every parameter, but compensates well for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool starts a command inside a Docker container with a TTY allocated for interactive programs. It names specific use cases (sudo password, y/N confirmations, REPLs) and distinguishes itself from other siblings like docker_exec by emphasizing the TTY and interactive nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool (for programs that prompt for input) and provides a clear workflow: if the process exits cleanly, no further action; otherwise use docker_interactive_input to reply or poll and docker_interactive_close to finish. It also mentions idle session expiry, giving practical usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_interactive_inputA

Send a line of input to a running docker_interactive_exec session (e.g. answer a sudo password or y/N prompt), or just poll for more output if input is omitted. Returns newly produced output and status.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNoText to send. Omit to wait/poll for more output without sending anything.
newlineNoAppend a trailing newline after input (usually required for the remote program to see it as a submitted line).
quiet_msNo
session_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the ability to omit input to poll, and states the return value (newly produced output and status). It doesn't detail error conditions or blocking behavior, but covers the core interaction semantics well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence with a clear action and examples, followed by a crisp result statement. No redundant wording, and the essential information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters and no output schema or annotations, the description covers the main behaviors (send vs poll) and mentions the return type. It omits details on quiet_ms and session_id semantics, but it's sufficiently complete for an AI agent to understand the workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (input and newline described). The description enriches input by giving usage examples, but quiet_ms and session_id are left undefined. It partially compensates for the uncovered parameters but not fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: sending input to a running docker_interactive_exec session or polling for output. The examples (sudo password, y/N prompt) and reference to the sibling tool docker_interactive_exec make its distinct role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly specifies the context (running docker_interactive_exec session) and gives practical examples, but doesn't mention when to use alternatives like docker_exec_result or docker_ping. The 'just poll for more output' guidance adds useful usage nuance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_interactive_listA

List currently open interactive Docker sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states the core function. It does not disclose whether the operation is read-only, how results are formatted, or any caveats about what constitutes an interactive session.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, clearly front-loading the action verb.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 0-parameter list tool, the description covers the basic purpose, but without an output schema it leaves the return format unspecified. It also lacks any behavioral context, making it moderately incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is empty, so there is no parameter ambiguity. The description implicitly confirms no arguments are needed, earning a baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' with a clear resource: 'currently open interactive Docker sessions.' This distinguishes it from sibling tools like docker_interactive_close and docker_interactive_exec, which imply different actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to choose this tool over siblings. The description does not mention contexts where listing is useful or alternatives, so the agent receives no usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_list_dirA

List a directory inside a Docker container with file metadata in ls -lAh style.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoAbsolute or relative path inside the container..
containerYesDocker container name or id.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden. It adds useful behavioral context by mentioning 'file metadata in ls -lAh style', giving the agent a clear idea of the output format. It doesn't cover error cases or container state, but for a read-only listing operation this is reasonably sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence conveys the entire purpose and output format without any fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only two parameters and no output schema. The description explains what the output looks like. It doesn't mention potential errors or require the container to be running, but that is somewhat implicit. Overall, it is sufficiently complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description doesn't add substantial parameter details beyond the schema, but the schema itself fully documents both parameters (container and path) with meaningful descriptions. This matches the baseline expectation for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List a directory') and the resource ('inside a Docker container'), with a specific style qualifier ('ls -lAh style'). This distinguishes it from sibling tools like docker_read_file (reading files) and docker_grep (searching content).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: whenever you need to inspect directory contents and metadata inside a Docker container. It does not explicitly mention alternatives or exclusions, but the context is clear enough for a simple listing tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_mkdirA

Create a directory (and parents) inside a Docker container, equivalent to mkdir -p.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute or relative path inside the container.
containerYesDocker container name or id.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it creates parents ('and parents') and mimics `mkdir -p`, revealing idempotent behavior without requiring annotations. However, it does not mention error handling, permissions, or return values, and with no annotations the description must carry full burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant information. It earns every word and clearly states the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with only two parameters and no output schema, the description adequately conveys the core operation and its semantics. It lacks information about return values or error conditions, but for a directory creation tool this is not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes both parameters (`container` and `path`) with clear descriptions, so the baseline is 3. The tool description does not add parameter-specific details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear action verb 'Create' and specifies the resource 'directory inside a Docker container' with the equivalent of `mkdir -p`. This clearly distinguishes it from sibling tools like docker_read_file or docker_delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives such as docker_exec or docker_write_file. The description implies usage through its name and functionality, but does not state exclusions or compare with other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_pingB

Test that a Docker container is reachable and return its identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
containerYesDocker container name or id.

TDQS

B3.3/5.0
Behavior2/5

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 mentions the test action and return of identity, but fails to explain behavior when the container is unreachable, whether any side effects occur, or the exact return format. This is a significant gap for a network-tool operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It effectively communicates the tool's core purpose in minimal words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple with one parameter, but the absence of an output schema and lack of detail on failure behavior or identity format leave the description somewhat incomplete. It is adequate as a minimal health-check tool but does not fully equip an agent to handle edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for the single parameter, describing 'container' as 'Docker container name or id.' The description adds no additional parameter-specific meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Test'), resource ('Docker container'), and the result ('reachable and return its identity'). It distinguishes this tool from sibling operations like docker_exec or docker_read_file by framing it as a connectivity check, though 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Test that a Docker container is reachable' implies the usage scenario (checking connectivity), but it does not explicitly state when to use this tool versus alternatives such as docker_exec or docker_interactive_exec. No exclusions or alternative trade-offs are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_read_fileA

Read a UTF-8 text file from a Docker container. offset and limit select a 1-based line range; limit=0 means unlimited. Defaults to first 200 lines.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute or relative path inside the container.
limitNoMaximum number of lines to return; 0 means unlimited.
offsetNo1-based starting line (0 is treated as 1).
containerYesDocker container name or id.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It transparently explains offset/limit semantics (1-based, limit=0 unlimited) and the default first-200-lines behavior, providing useful operational details beyond the schema. It does not cover error cases or return format, but the core behavior is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, and every clause is informative. The line-range explanation and default are compact and precise, with no redundant filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no output schema and no annotations, the description covers the essential behavior: what it reads, line-range selection, and defaults. It does not explicitly state the return value (file contents) but that is implied. Missing error conditions are a minor gap, but the description is sufficiently complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptive parameter docs, so the baseline is 3. The description restates offset/limit semantics and the default, adding no new information beyond what the schema already provides. It does not clarify parameter interactions beyond the line-range concept.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Read a UTF-8 text file from a Docker container,' a specific verb+resource statement. It clearly distinguishes from sibling tools like docker_read_image (reads images) and docker_list_dir (lists directories), making the tool's scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for reading text files with line-based access and highlights the default limit of 200 lines, giving practical context. However, it does not explicitly mention alternatives or when not to use it (e.g., for binary files), though sibling names like docker_read_image provide implicit boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_read_imageA

Read a file from a Docker container and return it as an MCP image. Supports common raster formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute or relative path inside the container.
containerYesDocker container name or id.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden. It adds useful behavioral context by specifying the output is an MCP image and that common raster formats are supported, implying other formats may fail. However, it does not disclose error handling, size limits, whether the container must be running, or that the operation is non-destructive (though 'Read' implies it). This is adequate but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action and output type. The second sentence adds meaningful constraint about supported formats. Every word contributes value; there is no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter read tool, the description is nearly complete. It states the purpose, output type, and format support, which is sufficient for an agent to select and invoke it. Minor gaps include lack of explicit error behavior or unsupported format handling, but the tool's simplicity and the output statement make it adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides clear descriptions for both parameters (path: 'Absolute or relative path inside the container', container: 'Docker container name or id'), achieving 100% coverage. The tool description does not add any additional parameter-specific meaning beyond what the schema states, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Read a file from a Docker container and return it as an MCP image.' The verb 'Read' is specific, the resource is a file in a Docker container, and the output type (MCP image) is explicitly defined. It distinguishes itself from sibling docker_read_file by specifying image output and raster format support.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: it is for reading image files from a container and returning them as MCP images, especially when the file is in a raster format. However, it does not explicitly state when to use this tool versus docker_read_file or other siblings, nor does it provide any exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docker_write_fileA

Write UTF-8 text content directly to a file inside a Docker container (creates or overwrites; use append=true to append instead).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute or relative path inside the container.
appendNoAppend to the file instead of overwriting it.
contentYesText content to write to the container file.
containerYesDocker container name or id.
create_dirsNoCreate the parent directory in the container if it does not exist.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries responsibility for behavioral disclosure. It reveals create/overwrite and append behavior, plus the 'directly' aspect, but omits prerequisites like a running container, permissions, or return values. This is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every clause adds useful information: what it writes, where, and the append alternative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is minimally complete. It states the core behavior and the schema covers all parameters, but it lacks information about prerequisites, side effects, and return values. Given the tool's simplicity, this is acceptable though not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds a little extra meaning by specifying 'UTF-8 text content' and the append behavior, but it mostly echoes the schema's parameter descriptions without adding significant new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Write') and resource ('a file inside a Docker container'), clearly distinguishing it from siblings like docker_read_file or docker_mkdir. It also notes create/overwrite behavior, reinforcing the tool's unique purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for writing text content directly, as opposed to copying files (docker_cp_to), but does not explicitly name alternatives or state when not to use it. The append hint gives some usage context, but no clear exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: file operations, exec, interactive sessions, background jobs, copying, and a no-op close. The most similar pair (docker_exec and docker_interactive_exec) is well-differentiated by TTY allocation and interactive input handling, so there is no real ambiguity.

Naming Consistency5/5

All tools consistently use snake_case with a docker_ prefix, and related tools share predictable sub-patterns (e.g., exec_result, exec_kill, interactive_*, cp_to/from). Minor style deviations like docker_mkdir and docker_grep are command-style but still readable and consistent with the overall naming convention.

Tool Count4/5

19 tools is slightly above the typical well-scoped range, but the count is justified by the broad domain of Docker interactions—file manipulation, execution, interactive sessions, background jobs, and copying. Each tool serves a distinct operational need, so the count feels appropriate rather than bloated.

Completeness4/5

The toolset comprehensively covers file operations, execution, background jobs, interactive sessions, and copying. However, it lacks container lifecycle management (e.g., listing, starting, stopping, inspecting containers), which would be expected for a broad Docker agentic server. This gap limits the toolset when discovering or managing containers rather than operating on a known one.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables spawning ephemeral Linux sandbox containers using Docker and executing commands through an interactive TTY interface. Supports collaborative terminal sessions where both AI clients and humans can simultaneously interact with the same container.
    27
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to interact with Docker containers through safe, permission-controlled access to inspect, manage, and diagnose containers, images, and compose services with built-in timeouts and AI-powered analysis.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    130
    2
    MIT

Latest Blog Posts

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/jahrulnr/mcp-docker-agentic'

If you have feedback or need assistance with the MCP directory API, please join our Discord server