trackmcp
Back to directory
makbn

docker_mcp_server

View on GitHub

Model Context Protocol MCP Server for Docker Commands. Provides Docker and Docker Swarm commands as MCP Tools.

1 stars JavaServers & Infrastructure Updated Oct 27, 2025
dockerdocker-mcp-serverjava-mcpjava-mcp-servermcpmcp-mediatormcp-servermodel-context-protocolmodel-context-protocol-servers

Documentation

Docker MCP Server

This module provides an implementation of a Model Context Protocol MCP server for Docker commands, powered by the [

`mcp_mediator`](https://github.com/makbn/mcp_mediator) core framework.

The Docker MCP Server utilizes the automatic server generation feature of MCP Mediator to expose existing Docker

commands as MCP Tools.

Each command is optionally annotated with `@McpTool` along with a minimal description to enhance tool discoverability

and usability.

👉 See the full list of supported commands here.

Docker MCP Server

> [!IMPORTANT]

> This is part of `mcp_mediator`

> project: https://github.com/makbn/docker_mcp_server

> To build or modify, clone the parent repository:

`git clone --recurse-submodules https://github.com/makbn/docker_mcp_server.git`

Usage Examples

shell
java -jar docker-mcp-server.jar \
  --docker-host=tcp://localhost:2376 \
  --tls-verify \
  --cert-path=/etc/docker/certs \
  --server-name=my-server \
  --server-version=1.0.0 \
  --max-connections=150 \
  --docker-config=/custom/docker/config

To run Docker MCP Server with Claude Desktop with `java -jar`:

yaml
{
  "mcpServers": {
    "my_java_mcp_server": {
      "command": "java",
      "args": [
        "-jar",
        "docker-mcp-server.jar"
        "--docker-host=tcp://localhost:2376",
        "--tls-verify", # not required
        "--cert-path=/etc/docker/certs", # required only if --tls-verify is available
        "--server-name=my-docker-mcp-server",
        "--server-version=1.0.0",
        "--max-connections=150",
        "--docker-config=/custom/docker/config"
      ]
    }
  }
}

Or create the native image (see the steps below) and use the standalone application:

yaml
{
  "mcpServers": {
    "my_java_mcp_server": {
      "command": "docker-mcp-server-executable",
      "args": [
        "--docker-host=tcp://localhost:2376" // rest of args
      ]
    }
  }
}

How to Build

To build the executable:

bash
mvn clean compile package

This command creates a jar file under `target` folder `mcp-mediator-implementation-docker-[version].jar`. You can stop

here and use the jar file and execute it

using `java -jar` command. Or, you can create a standalone executable application using GraalVM native image:

bash
native-image -jar mcp-mediator-implementation-docker-[version].jar

and this command creates an executable file: `'mcp-mediator-implementation-docker-[version]` that can be executed.

Automatically Generate MCP Tools

This project integrates with `MCP Mediator` to automatically generate MCP Tools

from existing Docker services.

Each method in the Docker service class can optionally be annotated with `@McpTool` to explicitly define the tool’s *

*name, description**, and other metadata.

However, annotation is not required—MCP Mediator supports automatic generation for non-annotated methods by

inferring details from the method, class, and package names. To enable this behavior, set `createForNonAnnotatedMethods`

to `true`:

java
DefaultMcpMediator mediator = new DefaultMcpMediator(McpMediatorConfigurationBuilder.builder()
        .createDefault()
        .serverName(serverName)
        .serverVersion(serverVersion)
        .build());

mediator.

registerHandler(McpServiceFactory.create(dockerClientService)
        .

createForNonAnnotatedMethods(true)); // Enables support for non-annotated methods

Check `io.github.makbn.mcp.mediator.docker.server.DockerMcpServer` for the full Mcp Mediator configuration.

Supported CLI Options

OptionDescriptionDefault
`--docker-host`Docker daemon host URI`unix:///var/run/docker.sock`
`--tls-verify`Enable TLS verification (used with `--cert-path`)`false`
`--cert-path`Path to Docker TLS client certificates (required if TLS is enabled)_none_
`--docker-config`Custom Docker config directory`~/.docker`
`--server-name`Server name for the MCP server`docker_mcp_server`
`--server-version`Server version label`1.0.0.0`
`--max-connections`Maximum number of connections to Docker daemon`100`
`--help`Show usage and available options_n/a_

Environment variables:

OptionDescriptionDefault
`DOCKER_MCP_LOG_LEVEL`Logging level (`TRACE`, `DEBUG`, `INFO`, etc.)`DEBUG`
`DOCKER_MCP_LOG_FILE`Path to log output file`logs/docker_mcp_server.log`

Supported Docker Commands as MCP Server Tools

MCP Tool NameDescription
docker\_start\_containerStart a Docker container by ID.
docker\_stop\_containerStop a Docker container by ID.
docker\_leave\_swarmRemove a node from Docker Swarm.
docker\_container\_diffShow changes made to a container’s filesystem.
docker\_build\_image\_fileBuild an image from Dockerfile or directory.
docker\_inspect\_volumeGet details of a Docker volume.
docker\_remove\_serviceRemove a Docker service by ID.
docker\_list\_containersList containers with optional filters.
docker\_inspect\_swarmInspect Docker Swarm details.
docker\_push\_imagePush image to registry, supports auth.
docker\_copy\_archive\_to\_containerCopy a tar archive into a running container.
docker\_stats\_containerFetch container stats (CPU, memory, etc.).
docker\_disconnect\_container\_from\_networkDisconnect container from Docker network.
docker\_remove\_containerRemove a container, with optional force.
docker\_inspect\_serviceInspect a Docker service.
docker\_remove\_secretRemove a Docker secret by ID.
docker\_pull\_imagePull image from registry, supports auth.
docker\_inspect\_containerInspect container config and state.
docker\_unpause\_containerUnpause a paused container.
docker\_list\_imagesList Docker images with optional filters.
docker\_list\_servicesList all Docker services in the swarm.
docker\_remove\_imageRemove an image, with force and prune options.
docker\_create\_networkCreate a Docker network.
docker\_tag\_imageTag an image with a new repo and tag.
docker\_authenticateAuthenticate to Docker registry.
docker\_exec\_commandExecute a command inside a container.
docker\_remove\_swarm\_nodeRemove a swarm node, optionally forcibly.
docker\_search\_imagesSearch Docker Hub for images.
docker\_list\_networksList all Docker networks.
docker\_remove\_volumeRemove a Docker volume.
docker\_create\_containerCreate a container with custom settings.
docker\_remove\_networkRemove a Docker network.
docker\_copy\_archive\_from\_containerCopy files from a container to the host.
docker\_rename\_containerRename a Docker container.
docker\_pause\_containerPause a running container.
docker\_versionGet Docker version information.
docker\_list\_swarm\_nodesList all nodes in the Docker swarm.
docker\_log\_containerRetrieve logs from a container.
docker\_prunePrune unused Docker resources.
docker\_inspect\_networkGet detailed info about a network.
docker\_kill\_containerSend a kill signal to a container.
docker\_top\_containerGet running processes in a container.
docker\_list\_volumesList Docker volumes with optional filters.
docker\_update\_swarm\_nodeUpdate the config of a swarm node.
docker\_infoShow Docker system-wide info.
docker\_log\_serviceGet logs from a Docker service.
docker\_load\_imageLoad an image from a tar archive.
docker\_list\_tasksLists the tasks in a Docker Swarm environment.
docker\_save\_imageSaves a Docker image to a local tar file.
docker\_join\_swarmJoins the node to an existing Swarm cluster.
docker\_create\_volumeCreates a new Docker volume.
docker\_initialize\_swarmInitializes a new Docker Swarm cluster.

Work in progress, more to be added.

DockerClientService Function Coverage

Check the DockerClientService

class for the full list of available and planned tools (to be implemented)

> [!IMPORTANT]

> Almost all the MCP Tools' descriptions and names are generated automatically using AI agent!

🧩 Repository Structure and Git Subtree Setup

This project is a Git subtree module of the parent repository [

`makbn/mcp_mediator`](https://github.com/makbn/mcp_mediator). It is kept in its own repository to support independent

versioning, CI, and release processes, while remaining integrated into the main `mcp_mediator` mono-repo.

🔀 Cloning Structure

If you're working in the context of the full `mcp_mediator` system:

bash
`git clone --recurse-submodules https://github.com/makbn/docker_mcp_server.git`

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. Read this first!

License

This project is licensed under the GPL3 License—see the LICENSE file for details.

Frequently asked questions

What is docker_mcp_server?

docker_mcp_server is Model Context Protocol MCP Server for Docker Commands. Provides Docker and Docker Swarm commands as MCP Tools.

How do I install docker_mcp_server?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is docker_mcp_server open source?

Yes — it is hosted on GitHub at https://github.com/makbn/docker_mcp_server and has 1 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP