Update docker installation instructions on website#205
Conversation
WalkthroughAdds a new Docker installation path to docs/index.html, including tab UI, platform-specific commands, persistence details, manual configuration JSON examples, management commands, update/uninstall notes, and a clarification about Node.js requirements. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (3)
docs/index.html (3)
1403-1409: Harden one-liner install commands (pin branch and modernize PowerShell)
- Recommend pinning to the main branch path (instead of refs/heads) for clarity and caching, or ideally a specific tag/commit for reproducibility.
- Prefer iwr -useb ... | iex for PowerShell over New-Object System.Net.WebClient (deprecated in modern PS).
Apply this diff to update the URLs/commands:
-bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) +bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/install-docker.sh)-iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1')) +iwr -useb https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/install-docker.ps1 | iex
1467-1472: Add an explicit warning that “reset” is destructiveResetting persistent data removes cached tools/configs/workspace data. Make this explicit to avoid surprises.
Apply this diff to add a warning directly under management commands:
# Reset persistent data bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/install-docker.sh) --reset + +<p><strong>Warning:</strong> Reset clears all Docker persistent data used by Desktop Commander (tools, configs, workspace, caches).</p>
1474-1479: Add an explicit warning that “Reset” is destructive (Windows section too)Mirror the same warning for parity across platforms.
Apply this diff:
$script = (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'); & ([ScriptBlock]::Create("$script")) -Reset + +<p><strong>Warning:</strong> Reset clears all Docker persistent data used by Desktop Commander (tools, configs, workspace, caches).</p>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
docs/index.html(2 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
docs/index.html (1)
install-docker.sh (2)
update_claude_config(276-336)show_management_info(362-374)
🔇 Additional comments (3)
docs/index.html (3)
1292-1293: Docker tab entry added — looks goodThe new “🐳 Docker Install” tab integrates cleanly with the existing tab system and matches the visual/ARIA pattern used elsewhere.
1489-1489: Good clarification on Node.js requirementClear, accurate note that Docker path does not require Node.js while other methods do.
1425-1436: Validate image name and availability on Docker HubThe image reference mcp/desktop-commander:latest assumes a working public image. Ensure it’s published and discoverable (and mention where) to avoid 404/pull errors.
Would you like me to add a short “Image location” line linking to the Docker Hub page under the Docker section? If so, confirm the canonical URL.
| <strong>Basic setup (no file access):</strong> | ||
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;">{ | ||
| "mcpServers": { | ||
| "desktop-commander-docker": { | ||
| "command": "docker", | ||
| "args": [ | ||
| "run", "-i", "--rm", | ||
| "mcp/desktop-commander:latest" | ||
| ] | ||
| } | ||
| } | ||
| }</pre> |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Align server name with installer and ensure image auto-update pulls
- The installer (install-docker.sh) registers the MCP under desktop-commander, while docs show desktop-commander-docker. This mismatch can confuse users and lead to duplicate entries in Claude config.
- Also, “latest” won’t auto-update unless you docker pull or use --pull=always.
Apply this diff to the JSON example inside the pre block:
- "desktop-commander-docker": {
+ "desktop-commander": {
"command": "docker",
"args": [
- "run", "-i", "--rm",
+ "run", "--pull=always", "-i", "--rm",
"mcp/desktop-commander:latest"
]
}Please confirm the desired MCP server key. If you want a distinct Docker-only entry, consider standardizing both script and docs on the same key (e.g., desktop-commander-docker) and update install-docker.sh accordingly.
Let’s verify the server key used in the Docker installer script.
🏁 Script executed:
#!/bin/bash
# Locate and inspect install-docker.sh for the registered MCP key
script=$(fd install-docker.sh | head -n 1)
if [ -z "$script" ]; then
echo "install-docker.sh not found"
exit 1
fi
echo "Found installer at: $script"
grep -n "desktop-commander" "$script" || echo "No 'desktop-commander' reference found"Length of output: 534
Update JSON example to use “desktop-commander” and enable auto-pull
Align the docs with install-docker.sh (which registers the container as desktop-commander) and add --pull=always so the image is always updated.
• Change the MCP server key from "desktop-commander-docker" to "desktop-commander".
• Insert --pull=always into the Docker run arguments.
Apply this diff in docs/index.html (around lines 1425–1436):
- "desktop-commander-docker": {
+ "desktop-commander": {
"command": "docker",
"args": [
- "run", "-i", "--rm",
+ "run", "--pull=always", "-i", "--rm",
"mcp/desktop-commander:latest"
]
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <strong>Basic setup (no file access):</strong> | |
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;">{ | |
| "mcpServers": { | |
| "desktop-commander-docker": { | |
| "command": "docker", | |
| "args": [ | |
| "run", "-i", "--rm", | |
| "mcp/desktop-commander:latest" | |
| ] | |
| } | |
| } | |
| }</pre> | |
| <strong>Basic setup (no file access):</strong> | |
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;">{ | |
| "mcpServers": { | |
| "desktop-commander": { | |
| "command": "docker", | |
| "args": [ | |
| "run", "--pull=always", "-i", "--rm", | |
| "mcp/desktop-commander:latest" | |
| ] | |
| } | |
| } | |
| }</pre> |
🤖 Prompt for AI Agents
In docs/index.html around lines 1425 to 1436, update the JSON example so the MCP
server key is "desktop-commander" (instead of "desktop-commander-docker") and
add the Docker image auto-pull flag by inserting "--pull=always" into the "args"
array for the docker run command; keep the existing argument order and
formatting but ensure the new key name and the added "--pull=always" entry are
reflected in the JSON snippet to match install-docker.sh.
| <strong>With folder mounting:</strong> | ||
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;">{ | ||
| "mcpServers": { | ||
| "desktop-commander-docker": { | ||
| "command": "docker", | ||
| "args": [ | ||
| "run", "-i", "--rm", | ||
| "-v", "dc-system:/usr", | ||
| "-v", "dc-home:/root", | ||
| "-v", "dc-workspace:/workspace", | ||
| "-v", "dc-packages:/var", | ||
| "-v", "/Users/username/Projects:/home/Projects", | ||
| "mcp/desktop-commander:latest" | ||
| ] | ||
| } | ||
| } | ||
| }</pre> |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Volume mounts and workspace path consistency; add auto-pull; align server key
- Use a consistent key name (see previous comment).
- Add --pull=always to actually get newer “latest” images automatically.
- Prefer mounting into /workspace (already used for persistence) to avoid split locations (/home vs /workspace).
- The host path example is macOS-specific; add a brief note for Windows/Linux equivalents or keep it clearly as a placeholder.
Apply this diff to the JSON example inside the pre block:
- "desktop-commander-docker": {
+ "desktop-commander": {
"command": "docker",
"args": [
- "run", "-i", "--rm",
+ "run", "--pull=always", "-i", "--rm",
"-v", "dc-system:/usr",
"-v", "dc-home:/root",
"-v", "dc-workspace:/workspace",
"-v", "dc-packages:/var",
- "-v", "/Users/username/Projects:/home/Projects",
+ "-v", "/Users/username/Projects:/workspace/Projects",
"mcp/desktop-commander:latest"
]
}- Cross-check these volume targets with the container’s expected paths and the DOCKER_ARGS used in install-docker.sh to prevent drift.
- Consider adding a short comment under the snippet: “Replace /Users/username/Projects with your path (e.g., C:\Users\you\Projects on Windows, /home/you/Projects on Linux).”
🏁 Script executed:
#!/bin/bash
# Locate install-docker.sh in the repository
fd install-docker.sh
# If found, print the first 200 lines for context and search for DOCKER_ARGS
file_path=$(fd install-docker.sh | head -n1)
if [[ -n "$file_path" ]]; then
echo "== Contents of $file_path =="
head -n 200 "$file_path"
echo
echo "== DOCKER_ARGS definitions =="
rg -n 'DOCKER_ARGS' "$file_path"
else
echo "install-docker.sh not found"
exit 1
fiLength of output: 7570
🏁 Script executed:
#!/bin/bash
# Print definitions of volume mappings and how $volume is set
echo "== Lines 100-180 for initial volume setup =="
sed -n '100,180p' install-docker.sh
echo
echo "== Lines 180-240 for folder mounting logic =="
sed -n '180,240p' install-docker.shLength of output: 5375
🏁 Script executed:
#!/bin/bash
# Show build_docker_args implementation and volume mounting logic
echo "== build_docker_args (240-330) =="
sed -n '240,330p' install-docker.shLength of output: 2992
Align JSON example with installation script and improve mount consistency
To keep the docs in sync with install-docker.sh and make mounting clearer:
- Use the same server key as the script (
desktop-commander). - Include
--pull=alwaysso Claude always fetches the latest image. - Mount your workspace under
/workspace(the script’s persistent workspace volume), not/home. - Clarify that
/Users/username/Projectsis a placeholder—show Windows/Linux equivalents.
Locations:
- File: docs/index.html
- Lines: 1438–1454 (the JSON example inside the
<pre>)
Apply this diff:
--- a/docs/index.html
+++ b/docs/index.html
@@ Lines 1438-1454 inside the `<pre>` block
- "mcpServers": {
- "desktop-commander-docker": {
+ "mcpServers": {
+ "desktop-commander": {
"command": "docker",
"args": [
- "run", "-i", "--rm",
+ "run", "--pull=always", "-i", "--rm",
"-v", "dc-system:/usr",
"-v", "dc-home:/root",
"-v", "dc-workspace:/workspace",
- "-v", "/Users/username/Projects:/home/Projects",
+ "-v", "/Users/username/Projects:/workspace/Projects",
"mcp/desktop-commander:latest"
]
}Below the snippet, add a brief note:
Replace
/Users/username/Projectswith your path—e.g.,C:\\Users\\you\\Projectson Windows or/home/you/Projectson Linux.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <strong>With folder mounting:</strong> | |
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;">{ | |
| "mcpServers": { | |
| "desktop-commander-docker": { | |
| "command": "docker", | |
| "args": [ | |
| "run", "-i", "--rm", | |
| "-v", "dc-system:/usr", | |
| "-v", "dc-home:/root", | |
| "-v", "dc-workspace:/workspace", | |
| "-v", "dc-packages:/var", | |
| "-v", "/Users/username/Projects:/home/Projects", | |
| "mcp/desktop-commander:latest" | |
| ] | |
| } | |
| } | |
| }</pre> | |
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;">{ | |
| "mcpServers": { | |
| "desktop-commander": { | |
| "command": "docker", | |
| "args": [ | |
| "run", "--pull=always", "-i", "--rm", | |
| "-v", "dc-system:/usr", | |
| "-v", "dc-home:/root", | |
| "-v", "dc-workspace:/workspace", | |
| "-v", "/Users/username/Projects:/workspace/Projects", | |
| "mcp/desktop-commander:latest" | |
| ] | |
| } | |
| } | |
| }</pre> |
🤖 Prompt for AI Agents
In docs/index.html around lines 1438–1454, the JSON example is out of sync with
install-docker.sh and mounts the example workspace to /home; change the server
key to "desktop-commander", add the docker arg "--pull=always" to ensure the
image is always fetched, move the host workspace mount into the container path
"/workspace" (use -v "/Users/username/Projects:/workspace"), and keep other
persistent volume mounts the same; then, directly below the <pre> snippet add a
short note saying "Replace /Users/username/Projects with your path — e.g.,
C:\\Users\\you\\Projects on Windows or /home/you/Projects on Linux."
| <p>✅ <strong>Auto-Updates:</strong> <code>latest</code> tag automatically gets newer versions</p> | ||
| <p>🔄 <strong>Manual Update:</strong> <code>docker pull mcp/desktop-commander:latest</code> then restart Claude</p> | ||
| <p>🗑️ <strong>Uninstall:</strong> Remove Docker configuration from Claude config and optionally run reset command to clear persistent data</p> |
There was a problem hiding this comment.
“Auto-Updates” claim is misleading for latest without pulls
Docker will not automatically fetch newer images for latest unless explicitly pulled or using --pull=always on run. Update the wording and/or include the flag in examples (see prior diffs).
Apply this diff to clarify:
-<p>✅ <strong>Auto-Updates:</strong> <code>latest</code> tag automatically gets newer versions</p>
+<p>✅ <strong>Auto-Updates:</strong> Add <code>--pull=always</code> to your Docker args to automatically fetch newer <code>latest</code> images when starting.</p>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <p>✅ <strong>Auto-Updates:</strong> <code>latest</code> tag automatically gets newer versions</p> | |
| <p>🔄 <strong>Manual Update:</strong> <code>docker pull mcp/desktop-commander:latest</code> then restart Claude</p> | |
| <p>🗑️ <strong>Uninstall:</strong> Remove Docker configuration from Claude config and optionally run reset command to clear persistent data</p> | |
| <p>✅ <strong>Auto-Updates:</strong> Add <code>--pull=always</code> to your Docker args to automatically fetch newer <code>latest</code> images when starting.</p> | |
| <p>🔄 <strong>Manual Update:</strong> <code>docker pull mcp/desktop-commander:latest</code> then restart Claude</p> | |
| <p>🗑️ <strong>Uninstall:</strong> Remove Docker configuration from Claude config and optionally run reset command to clear persistent data</p> |
🤖 Prompt for AI Agents
In docs/index.html around lines 1481 to 1483, the "Auto-Updates" copy
incorrectly implies Docker will automatically fetch newer images for the latest
tag; change the wording to clarify Docker does not auto-pull tags and either
suggest using an explicit pull or add the --pull=always flag in the run example,
and update the Manual Update line to show the recommended command (e.g., include
docker pull or --pull=always) and add a short note that automatic fetch requires
external tooling or container runtime options.
Summary by CodeRabbit