Skip to main content
Glama
nideil
by nideil
README.md
# Docker MCP Server

The Docker MCP Server is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)
server that provides seamless integration with Docker Desktop on Windows, enabling advanced
automation and interaction capabilities for developers and tools.

<div align="center">
  <a href="https://glama.ai/mcp/servers/@nideil/mcp-server-docker">
    <img width="380" height="200" src="https://glama.ai/mcp/servers/@nideil/mcp-server-docker/badge" />
  </a>
</div>

## Prerequisites

1. Install Docker Desktop for Windows from Docker's official [download page](https://docs.docker.com/desktop/setup/install/windows-install/).
2. In Docker Desktop, go to **Settings > General** and check the box for  
   **"Expose daemon on tcp://localhost:2375 without TLS"**.  
   This is required for the MCP server to communicate with Docker Desktop.

   > šŸ’” **Tip:** You can verify that the port is exposed successfully by opening  
   > `http://localhost:2375/version` in your browser. If the setup is correct,  
   > you should see a JSON response with Docker version information.
   > If you're having trouble, check this discussion for a possible solution:
   > [WSL and Docker for Windows: Cannot connect to the Docker daemon](https://forums.docker.com/t/wsl-and-docker-for-windows-cannot-connect-to-the-docker-daemon-at-tcp-localhost-2375-is-the-docker-daemon-running/63571/13)

## Installation

### Usage with Claude Desktop

```json
{
  "mcpServers": {
    "docker-mcp-stdio": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "freezeolo/docker-mcp-server"
      ]
    }
  }
}
```


## Tools
āœ… **Completed**  šŸ› ļø **In Progress**  āŒ **Plan**  

### Container Lifecycle Management āœ…
  - **list_containers** - Get the list of containers āœ…
  - **get_container_info** - Get details of a specific container āœ…
    - `container_id`: Container ID (string, required)
  - **start_container** - Start a container āœ…
    - `container_id`: Container ID (string, required)
  - **restart_container** - Restart a container āœ…
    - `container_id`: Container ID (string, required)
  - **stop_container** - Stop a container āœ…
    - `container_id`: Container ID (string, required)
  - **remove_container** - Remove a container āœ…
    - `container_id`: Container ID (string, required)
  - **create_container** - Create a new container āœ…
    - `imageName`: Image name (string, required)
    - `containerName`: Container name (string, required)
    - `command`: Command to run (string, optional)
    - `env`: Environment variables (string[], optional)
    - `ports`: Port bindings (string[], optional)
    - `volumes`: Volume bindings (string[], optional)
    - `network`: Network name (string, optional)
    - `restartPolicy`: Restart policy (string, optional)

### Network Management āœ…
  - **list_networks** - List all networks āœ…
  - **get_network_info** - Get network information āœ…
    - `networkId`: Network ID (string, required)
  - **create_network** - Create a new network āœ…
    - `networkName`: Network name (string, required)
    - `driver`: Network driver (string, required)
    - `subnet`: Subnet CIDR (string, required)
    - `gateway`: Gateway IP (string, required)
  - **connect_container_to_network** - Connect container to network āœ…
    - `containerId`: Container ID (string, required)
    - `networkId`: Network ID (string, required)
  - **disconnect_container_from_network** - Disconnect container from network āœ…
    - `containerId`: Container ID (string, required)
    - `networkId`: Network ID (string, required)
  - **remove_network** - Remove a network āœ…
    - `networkId`: Network ID (string, required)
  - **get_network_containers** - Get containers in a network āœ…
    - `networkId`: Network ID (string, required)

### Image Management āœ…
  - **list_images** - List all images āœ…
  - **pull_image** - Pull an image from registry āœ…
    - `imageName`: Image name with tag (string, required)
  - **push_image** - Push an image to registry āœ…
    - `imageName`: Image name with tag (string, required)
  - **remove_image** - Remove an image āœ…
    - `imageId`: Image ID (string, required)
    - `force`: Force removal (boolean, optional)
  - **tag_image** - Tag an image with multiple tags āœ…
    - `imageId`: Image ID (string, required)
    - `repository`: Repository name (string, required)
    - `tags`: Array of tags (string[], required)
  - **build_image** - Build an image from Dockerfile āœ…
    - `dockerfilePath`: Path to Dockerfile (string, required)
    - `repository`: Repository name (string, required)
    - `tags`: Array of tags (string[], required)
  - **get_image_details** - Get image details āœ…
    - `imageId`: Image ID (string, required)
### Logs Management āœ…
  - **get_container_logs** - Get container logs āœ…
    - `containerId`: Container ID (string, required)
    - `follow`: Follow log output (boolean, optional, default: false)
    - `stdout`: Show stdout (boolean, optional, default: true)
    - `stderr`: Show stderr (boolean, optional, default: true)
    - `since`: Show logs since timestamp (string, optional)
    - `until`: Show logs until timestamp (string, optional)
    - `tail`: Number of lines to show from the end (integer, optional)
    - `timestamps`: Show timestamps (boolean, optional, default: false)
## FAQ

### Q: How do I install the project?
A: Follow the steps in the [Installation](#installation) section. Make sure you have the required dependencies.


## License

This project is licensed under the terms of the MIT open source license. Please refer to [MIT](./LICENSE) for the full terms.