Skip to content

Update docker installation instructions on website#205

Merged
wonderwhy-er merged 1 commit into
mainfrom
docker-website-update
Aug 13, 2025
Merged

Update docker installation instructions on website#205
wonderwhy-er merged 1 commit into
mainfrom
docker-website-update

Conversation

@wonderwhy-er

@wonderwhy-er wonderwhy-er commented Aug 13, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • Documentation
    • Added a new “Docker Install” tab with end-to-end setup instructions for macOS, Linux, and Windows.
    • Included prerequisites, automated commands, and detailed guidance on persistence, manual configuration, and folder mounting.
    • Documented management commands for status checks, resets, updates, and uninstall on all platforms.
    • Added explanations of Docker benefits and how persistence works (tools, configs, workspaces, caches).
    • Updated installation notes to clarify Docker setup doesn’t require Node.js, while other methods do.

@coderabbitai

coderabbitai Bot commented Aug 13, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Adds 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

Cohort / File(s) Summary
Docs – Installation (Docker)
docs/index.html
Introduces a “Docker Install” tab with prerequisites, macOS/Linux and Windows commands, persistence explanation, manual Docker config examples, management commands, update/uninstall guidance, and Node.js requirement note update.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Poem

A rabbit taps the docs with glee,
New Docker trails for all to see.
Tabs that brim with JSON lore,
Commands that hum on every shore.
Burrow cached, configs tight—
Hop, ship, run—containered right! 🐇🐳

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docker-website-update

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@wonderwhy-er wonderwhy-er merged commit 848f215 into main Aug 13, 2025
1 of 2 checks passed

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 destructive

Resetting 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

📥 Commits

Reviewing files that changed from the base of the PR and between 4e002cc and 4357b8a.

📒 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 good

The 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 requirement

Clear, accurate note that Docker path does not require Node.js while other methods do.


1425-1436: Validate image name and availability on Docker Hub

The 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.

Comment thread docs/index.html
Comment on lines +1425 to +1436
<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>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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.

Suggested change
<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.

Comment thread docs/index.html
Comment on lines +1438 to +1454
<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>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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
fi

Length 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.sh

Length 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.sh

Length 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=always so Claude always fetches the latest image.
  • Mount your workspace under /workspace (the script’s persistent workspace volume), not /home.
  • Clarify that /Users/username/Projects is 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/Projects with your path—e.g., C:\\Users\\you\\Projects on Windows or /home/you/Projects on 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.

Suggested change
<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."

Comment thread docs/index.html
Comment on lines +1481 to +1483
<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>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

“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.

Suggested change
<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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant