docker mcp

Local 2025-08-31 23:13:56 0

A powerful Model Context Protocol (MCP) server for Docker operations, enabling seamless container and compose stack management through Claude AI.


Python 3.12 License: MIT Code style: black smithery badge

A powerful Model Context Protocol (MCP) server for Docker operations, enabling seamless container and compose stack management through Claude AI.

✨ Features

  • ? Container creation and instantiation
  • ? Docker Compose stack deployment
  • ? Container logs retrieval
  • ? Container listing and status monitoring

? Demos

Deploying a Docker Compose Stack

https://github.com/user-attachments/assets/b5f6e40a-542b-4a39-ba12-7fdf803ee278

Analyzing Container Logs

https://github.com/user-attachments/assets/da386eea-2fab-4835-82ae-896de955d934

? Quickstart

To try this in Claude Desktop app, add this to your claude config files:

{
  "mcpServers": {
    "docker-mcp": {
      "command": "uvx",
      "args": [
        "docker-mcp"
      ]
    }
  }
}

Installing via Smithery

To install Docker MCP for Claude Desktop automatically via Smithery:

npx @smithery/cli install docker-mcp --client claude

Prerequisites

  • UV (package manager)
  • Python 3.12+
  • Docker Desktop or Docker Engine
  • Claude Desktop

Installation

Claude Desktop Configuration

Add the server configuration to your Claude Desktop config file:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json

? Development Configuration
{
  "mcpServers": {
    "docker-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "<path-to-docker-mcp>",
        "run",
        "docker-mcp"
      ]
    }
  }
}
? Production Configuration
{
  "mcpServers": {
    "docker-mcp": {
      "command": "uvx",
      "args": [
        "docker-mcp"
      ]
    }
  }
}

?️ Development

Local Setup

  1. Clone the repository:

    git clone https://github.com/QuantGeekDev/docker-mcp.git
    cd docker-mcp

  2. Create and activate a virtual environment:

    python -m venv venv
    source venv/bin/activate  # On Windows: venvScriptsactivate

  3. Install dependencies:

    uv sync

? Debugging

Launch the MCP Inspector for debugging:

npx @modelcontextprotocol/inspector uv --directory <path-to-docker-mcp> run docker-mcp

The Inspector will provide a URL to access the debugging interface.

? Available Tools

The server provides the following tools:

create-container

Creates a standalone Docker container

{
    "image": "image-name",
    "name": "container-name",
    "ports": {"80": "80"},
    "environment": {"ENV_VAR": "value"}
}

deploy-compose

Deploys a Docker Compose stack

{
    "project_name": "example-stack",
    "compose_yaml": "version: '3.8'
services:
  service1:
    image: image1:latest
    ports:
      - '8080:80'"
}

get-logs

Retrieves logs from a specific container

{
    "container_name": "my-container"
}

list-containers

Lists all Docker containers

{}

? Current Limitations

  • No built-in environment variable support for containers
  • No volume management
  • No network management
  • No container health checks
  • No container restart policies
  • No container resource limits

? Contributing

  1. Fork the repository from docker-mcp
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Open a Pull Request

? License

This project is licensed under the MIT License - see the LICENSE file for details.

✨ Authors

  • Alex Andru - Initial work | Core contributor - @QuantGeekDev
  • Ali Sadykov - Initial work | Core contributor - @md-archive

Made with ❤️

[
  {
    "description": "Create a new standalone Docker container",
    "inputSchema": {
      "properties": {
        "environment": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "image": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "ports": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "required": [
        "image"
      ],
      "type": "object"
    },
    "name": "create-container"
  },
  {
    "description": "Deploy a Docker Compose stack",
    "inputSchema": {
      "properties": {
        "compose_yaml": {
          "type": "string"
        },
        "project_name": {
          "type": "string"
        }
      },
      "required": [
        "compose_yaml",
        "project_name"
      ],
      "type": "object"
    },
    "name": "deploy-compose"
  },
  {
    "description": "Retrieve the latest logs for a specified Docker container",
    "inputSchema": {
      "properties": {
        "container_name": {
          "type": "string"
        }
      },
      "required": [
        "container_name"
      ],
      "type": "object"
    },
    "name": "get-logs"
  },
  {
    "description": "List all Docker containers",
    "inputSchema": {
      "properties": {},
      "type": "object"
    },
    "name": "list-containers"
  }
]