Sponsored by Deepsite.site

Docker MCP Server

Created By
makbn7 months ago
Model Context Protocol MCP Server for Docker Commands. Provides Docker and Docker Swarm commands as MCP Tools.
Content

Docker MCP Server

This module provides an implementation of a Model Context Protocol MCP server for Docker commands, powered by the 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

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:

{
  "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:

{
  "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:

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:

 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:

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-hostDocker daemon host URIunix:///var/run/docker.sock
--tls-verifyEnable TLS verification (used with --cert-path)false
--cert-pathPath to Docker TLS client certificates (required if TLS is enabled)none
--docker-configCustom Docker config directory~/.docker
--server-nameServer name for the MCP serverdocker_mcp_server
--server-versionServer version label1.0.0.0
--max-connectionsMaximum number of connections to Docker daemon100
--helpShow usage and available optionsn/a

Environment variables:

OptionDescriptionDefault
DOCKER_MCP_LOG_LEVELLogging level (TRACE, DEBUG, INFO, etc.)DEBUG
DOCKER_MCP_LOG_FILEPath to log output filelogs/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. 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:

`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.

Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
ChatWiseThe second fastest AI chatbot™
Context7Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
Serper MCP ServerA Serper MCP Server
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
Amap Maps高德地图官方 MCP Server
Playwright McpPlaywright MCP server
CursorThe AI Code Editor
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
TimeA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.
Tavily Mcp
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
WindsurfThe new purpose-built IDE to harness magic
DeepChatYour AI Partner on Desktop
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.