Skip to content
Conduit

mcp server

RDT

The ultimate CLI wizard that turns your messy Docker setups into a masterpiece. No more manual labor — just pure mastery of the compose. Welcome to the gym, buddy

Locker-Room-Tools/RDTcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "rdt": {
      "command": "uvx",
      "args": [
        "locker-room-tolls-rdt"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 26, 2026

🐳 Rambo Docker Tools (RDT)

RDT is a CLI tool for generating production-ready docker-compose.yml files in seconds. Pick a service, answer a few questions (or skip them entirely with --yes), and RDT writes the compose block, volumes, healthchecks, resource limits, and .env variables for you.


Features

  • Interactive wizard — guided prompts for port, volume, credentials, and dependencies
  • Script mode — fully non-interactive via flags (--yes, --port, --volume, etc.)
  • 30+ service presets across 8 categories (see Available Services)
  • Smart Mapping — automatically detects and links related services (e.g. pgAdmin → PostgreSQL, Grafana → Prometheus)
  • .env / .env.example generation — credentials are written to environment files automatically
  • Artifact generation — config files (nginx.conf, prometheus.yml, traefik.yml, …) are scaffolded automatically
  • Resource limits — every service ships with sane CPU and RAM caps
  • Healthchecks — databases and brokers include ready-to-use healthcheck configs
  • Service removal — cleanly remove services, orphaned env vars, and companion files
  • Project diagnostics — rdt doctor validates your stack before you start it
  • Multi-language UI — English and Russian, switchable at any time
  • Agentic Skill — includes dedicated instructions for AI coding agents to use RDT autonomously
  • MCP Server — Model Context Protocol server (rdt-mcp) for native integration with Claude Desktop, Cursor, Windsurf, and any other MCP-compatible AI client

Available Services

CategoryServices
Web ServersNginx (Reverse Proxy), Nginx (Static), Nginx (SPA), Apache (Static), Apache + PHP, Traefik
Relational DBPostgreSQL, MySQL, MariaDB, MS SQL Server, Oracle DB (XE)
NoSQL / CacheMongoDB, Redis, Valkey, Cassandra, InfluxDB
Search / LoggingElasticsearch, OpenSearch, Logstash, Filebeat, Kibana, Seq
Message BrokersKafka (KRaft), RabbitMQ
Identity / AuthKeycloak
MonitoringPrometheus, Grafana, Zookeeper
Admin ToolspgAdmin, phpMyAdmin, Kafka UI, Mongo Express

Run rdt list at any time to see the full list with images and default ports.


Installation

Prerequisites

  • Python 3.10+
  • Docker & Docker Compose (required only for the rdt up command)

Option 1 — pipx (recommended for CLI tools)

pipx installs CLI tools in isolated environments and makes them available system-wide — no manual venv needed.

# Install pipx if you don't have it
pip install pipx
pipx ensurepath   # add pipx bin dir to PATH (restart terminal after)

# Install RDT from PyPI
pipx install rdt-rambo

# With MCP server support
pipx install "rdt-rambo[mcp]"

# Or install directly from GitHub (no PyPI account needed)
pipx install git+https://github.com/Skr0ls/RDT.git

Option 2 — pip (inside a virtual environment)

# From PyPI
pip install rdt-rambo

# With MCP server support
pip install "rdt-rambo[mcp]"

# Or from GitHub
pip install git+https://github.com/Skr0ls/RDT.git

Option 3 — from source (for development)

# 1. Clone the repository
git clone https://github.com/Skr0ls/RDT.git
cd RDT

# 2. Create and activate a virtual environment
python -m venv .venv

# Windows (PowerShell)
.venv\Scripts\Activate.ps1

# macOS / Linux
source .venv/bin/activate

# 3. Install in editable mode (add [mcp] for MCP server support)
pip install -e .
pip install -e ".[mcp]"

Verify installation

rdt --version
rdt --help

Publishing a new release to PyPI

For maintainers only.

# 1. Install build tools
pip install build twine

# 2. Build the distribution packages
python -m build
# → creates dist/rdt_rambo-X.Y.Z.tar.gz and dist/rdt_rambo-X.Y.Z-py3-none-any.whl

# 3. Upload to PyPI
twine upload dist/*
# You will be prompted for your PyPI API token

# Or upload to TestPyPI first to verify
twine upload --repository testpypi dist/*

After upload, users can install with pipx install rdt-rambo or pip install rdt-rambo.


🖥️ Usage

Interactive mode

Run rdt with no arguments to open the interactive menu:

rdt

Use the arrow keys to navigate and Enter to confirm. The menu offers all commands described below.


Commands

rdt init — Initialize a project

Creates a base docker-compose.yml with the shared rambo-net network.

rdt init                        # create docker-compose.yml in the current directory
rdt init --file my-compose.yml  # custom file name
rdt init --force                # overwrite an existing file

rdt add <service> — Add a service

Adds a configured service block to docker-compose.yml and writes credentials to .env.

# Interactive wizard (default)
rdt add postgres

# Script mode — use all defaults, no prompts
rdt add postgres --yes

# Custom port and volume path
rdt add postgres --yes --port 5433 --volume ./data/pg

# Add Redis and declare it depends on Postgres
rdt add redis --yes --depends-on postgres

# Generate unique random passwords instead of placeholders
rdt add postgres --hardcore --yes

# Target a custom compose file
rdt add mysql --yes --file infra/docker-compose.yml
FlagShortDescription
--yes-ySkip the wizard and apply defaults
--port-pOverride the default host port
--volumeNamed volume or local path for data (e.g. ./data/pg)
--depends-onAdd a depends_on entry (repeatable)
--hardcoreGenerate unique random credentials
--no-portsDo not publish ports outside the Docker network
--networkNetwork type or name: bridge | host | none | <external-net>
--container-nameExplicit container name
--setOverride any wizard answer: key=value (repeatable)
--hc-intervalHealthcheck interval (e.g. 10s)
--hc-timeoutHealthcheck timeout (e.g. 5s)
--hc-retriesHealthcheck retry count
--hc-start-periodHealthcheck start period (e.g. 30s)
--file-fPath to the compose file (default: docker-compose.yml)

rdt list — Browse available services

Prints a table of all supported services with their category, image, and default port.

rdt list

rdt up — Start containers

A thin proxy around docker compose up.

rdt up               # start in detached mode (default)
rdt up --no-detach   # stream logs to stdout
rdt up --file infra/docker-compose.yml

rdt remove <service> — Remove a service

Removes a service block from docker-compose.yml, optionally cleaning up orphaned .env variables and companion config files.

# Interactive — picks the service from a list
rdt remove

# Remove a specific service
rdt remove postgres

# Also remove orphaned .env variables
rdt remove postgres --clean-env

# Also remove companion config files (e.g. prometheus/prometheus.yml)
rdt remove postgres --clean-artifacts

# Skip all confirmation prompts
rdt remove postgres --yes --clean-env --clean-artifacts

# Target a custom compose file
rdt remove postgres --file infra/docker-compose.yml
FlagShortDescription
--yes-ySkip confirmation prompts
--clean-envRemove orphaned .env / .env.example variables
--clean-artifactsDelete companion config files generated for the service
--file-fPath to the compose file (default: docker-compose.yml)

rdt doctor — Diagnose your project

Runs a full health check of your Docker project and reports any issues before you start the stack.

rdt doctor                           # check the default docker-compose.yml
rdt doctor --file infra/compose.yml  # check a custom file

Checks performed:

CheckWhat it verifies
DockerDocker daemon is reachable
ComposeDocker Compose v2 is available
Compose validFile passes docker compose config
Env varsAll ${VAR} references in the compose file are set in .env
Port conflictsMapped host ports are not already in use
Dangling depsdepends_on references only existing services
Companion filesBind-mounted config files exist on disk

rdt lang — Change the interface language

rdt lang               # interactive language picker
rdt lang list          # show current and available languages
rdt lang set en        # switch to English
rdt lang set ru        # switch to Russian

The language preference is stored in ~/.rdt/config.json and can also be overridden per-session with the RDT_LANG environment variable:

RDT_LANG=en rdt add postgres

🤖 AI Agent Integration

RDT offers two complementary ways to integrate with AI coding assistants and autonomous agents.


Option A — MCP Server (recommended for broad ecosystem support)

The rdt-mcp server exposes all RDT functionality as typed Model Context Protocol tools. Any MCP-compatible client — Claude Desktop, Cursor, Windsurf, VS Code Copilot, Continue — can discover and call them directly without running shell commands.

Install with MCP support:

pip install "rdt-rambo[mcp]"
# or
pipx install "rdt-rambo[mcp]"

Configure your client (example for Claude Desktop — claude_desktop_config.json):

{
  "mcpServers": {
    "rdt": { "command": "rdt-mcp" }
  }
}

The server exposes 7 tools: rdt_init, rdt_add, rdt_remove, rdt_list, rdt_doctor, rdt_check, rdt_up. Each tool accepts typed parameters and returns structured JSON — no shell output to parse.

→ Full MCP documentation: docs/en/mcp-server.md


Option B — Agentic Skill (Augment / prompt-injection based clients)

For AI assistants that work by injecting instructions into context (such as Augment Code), use the provided skill file:

rdt-skill.md

This file contains precise instructions, API rules, and a catalog reference specifically formatted for LLMs. Point your agent to this file and ask it to "Initialize a Postgres + Redis backend stack using the rules in rdt-skill.md".


Which to use?

MCP ServerSkill
Works in Claude Desktop, Cursor, Windsurf✅❌
Works in Augment Code✅✅
Structured JSON responses✅❌
No shell execution needed✅❌
Zero extra dependencies❌✅

🔗 Smart Mapping

When you add an admin or monitoring tool, RDT scans the existing services in your compose file and automatically suggests a connection:

ToolDetects & links to
pgAdminPostgreSQL
phpMyAdminMySQL / MariaDB
Mongo ExpressMongoDB
Kafka UIKafka
GrafanaPrometheus

In interactive mode you are asked to confirm; in --yes / script mode the first matching service is applied automatically.


📁 Generated Files

FileDescription
docker-compose.ymlCompose config with all added services
.envEnvironment variables with actual values
.env.exampleSafe-to-commit template with empty values

💡 Quick Example

# Bootstrap a project with Postgres + pgAdmin
rdt init
rdt add postgres --yes --port 5432 --volume ./data/pg
rdt add pgadmin  --yes
rdt doctor   # validate before starting
rdt up
# Spin up a full monitoring stack (Prometheus + Grafana)
rdt init
rdt add prometheus --yes
rdt add grafana    --yes
rdt check    # verify compose syntax
rdt up
# Remove a service and clean up its files
rdt remove postgres --yes --clean-env --clean-artifacts
↑↓ navigate openesc close