docker-compose-mcp
# 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
Scored across 2 tools
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.
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.
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.
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.