MCP HubMCP Hub
QuantGeekDev

docker-mcp

by: QuantGeekDev

A docker MCP Server (modelcontextprotocol)

228created 04/12/2024
Visit
docker
protocol

πŸ“ŒOverview

Purpose: To provide a powerful Model Context Protocol (MCP) server for efficient management of Docker containers and compose stacks utilizing Claude AI.

Overview: docker-mcp streamlines Docker operations by facilitating container creation, stack deployment, and log retrieval, thereby enhancing productivity and simplifying workflow for users operating within Docker environments.

Key Features:

  • Container Creation and Instantiation: Allows users to easily create and configure Docker containers, ensuring a smooth setup for applications.

  • Docker Compose Stack Deployment: Supports the deployment of multi-container applications using Docker Compose, simplifying complex application management.

  • Container Logs Retrieval: Provides functionality to access and analyze logs from containers, aiding in debugging and monitoring processes.

  • Container Listing and Status Monitoring: Enables users to view and track the status of all active Docker containers, ensuring effective resource management.


🐳 docker-mcp

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

πŸš€ Quickstart

To try this in Claude Desktop app, add the following 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

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: venv\Scripts\activate
    
  3. Install dependencies:

    uv sync
    

πŸ” Debugging

Launch the MCP Inspector for debugging:

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

πŸ“ Available 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'\nservices:\n  service1:\n    image: image1:latest\n    ports:\n      - '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.

✨ Authors

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

Made with ❀️