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

An MCP (Model Context Protocol) server that enables Claude to manage Docker Compose containers on your local machine.

## Features

- **Update containers**: Stop, pull latest images, and restart containers in one command
- **Run any docker compose command**: Execute arbitrary docker compose commands
- **Safe error handling**: Graceful error handling with detailed feedback

## Installation

1. Install dependencies:
```bash
npm install
```

2. Build the TypeScript code:
```bash
npm run build
```

## Configuration for Claude Desktop

Add this to your Claude Desktop configuration file:

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "docker-compose": {
      "command": "node",
      "args": [
        "/absolute/path/to/docker-compose-mcp-server/dist/index.js"
      ]
    }
  }
}
```

Replace `/absolute/path/to/docker-compose-mcp-server` with the actual path where you saved this project.

## Usage Examples

Once configured, you can interact with Docker Compose through Claude:

### Update containers
> "Update my chemdraw containers at /Users/matt/Documents/chemdraw-js/chemdraw-js-compose.yml"

### View container status
> "Show me the status of my docker containers in /Users/matt/Documents/chemdraw-js/chemdraw-js-compose.yml"

### View logs
> "Show me the logs from my docker containers"

### Restart containers
> "Restart the containers in my compose file"

## Available Tools

### docker_compose_update
Updates Docker Compose containers by:
1. Stopping running containers (`docker compose down`)
2. Pulling latest images (`docker compose pull`)
3. Starting containers (`docker compose up -d`)

**Parameters:**
- `compose_file` (string, required): Absolute path to the docker-compose.yml file
- `detached` (boolean, optional): Run in detached mode (default: true)

### docker_compose_command
Execute any docker compose command.

**Parameters:**
- `compose_file` (string, required): Absolute path to the docker-compose.yml file
- `command` (string, required): Docker compose command to run (e.g., "ps", "logs", "restart")

## Security Considerations

This MCP server executes docker commands with the permissions of the user running Claude Desktop. Ensure you:

- Only use trusted compose files
- Understand the commands being executed
- Review Claude's suggested commands before confirming destructive operations

## Development

Watch mode for development:
```bash
npm run dev
```

## Troubleshooting

### "docker: not found"
Make sure Docker is installed and in your PATH. Test by running `docker --version` in your terminal.

### "Permission denied"
Ensure your user has permission to run Docker commands. On Linux, you may need to add your user to the `docker` group.

### "Cannot find module"
Make sure you've run `npm run build` before starting the server.

## License

MIT

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation4/5

docker_compose_update is a specialized workflow while docker_compose_command is a general executor. They overlap because the update workflow can also be run via the generic command, but the distinction is clear enough for an agent to choose correctly.

Naming Consistency4/5

Both tools use snake_case with a consistent docker_compose_ prefix. The only minor inconsistency is that 'update' is a verb while 'command' is a noun, but the pattern is still predictable and readable.

Tool Count3/5

Two tools is borderline thin for a server. While the generic command covers many operations, the specialized update tool means each tool earns its place, but more structured tools for common operations could improve usability.

Completeness5/5

The generic docker_compose_command can execute any docker compose command, covering the full lifecycle (up, down, logs, ps, exec, etc.). The update tool handles a common workflow, so there are no obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues