-
-
Notifications
You must be signed in to change notification settings - Fork 738
Update docker installation instructions on website #205
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -1289,6 +1289,7 @@ <h2>Installation</h2> | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <button class="tab-btn" onclick="openTab(event, 'smithery')" style="color: #121212; font-weight: 300;">Smithery Install</button> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <button class="tab-btn" onclick="openTab(event, 'manual')" style="color: #121212; font-weight: 300;">Manual Configuration</button> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <button class="tab-btn" onclick="openTab(event, 'local')" style="color: #121212; font-weight: 300;">Local Installation</button> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <button class="tab-btn" onclick="openTab(event, 'docker')" style="color: #121212; font-weight: 300;">🐳 Docker Install</button> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div id="smithery" class="tab-content"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -1381,8 +1382,111 @@ <h3>Local Installation</h3> | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div id="docker" class="tab-content"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div class="step"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div class="step-content"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h3>🐳 Docker Installation</h3> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p><strong>Perfect for complete isolation and no Node.js required!</strong></p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p>Desktop Commander runs in a sandboxed Docker container with persistent development environment.</p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h4>Prerequisites</h4> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <ul style="margin-bottom: 15px; padding-left: 20px;"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li><a href="https://www.docker.com/products/docker-desktop/" target="_blank">Docker Desktop</a> installed <strong>and running</strong></li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li>Claude Desktop app installed</li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </ul> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h4>Automated Installation (Recommended)</h4> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div style="margin-bottom: 20px;"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <strong>macOS/Linux:</strong> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;">bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh)</pre> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div style="margin-bottom: 20px;"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <strong>Windows PowerShell (Run as Administrator):</strong> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;">iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'))</pre> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div style="background: #e8f4f8; padding: 15px; border-radius: 8px; margin: 15px 0;"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h4 style="margin-top: 0; color: #0078D7;">How Docker Persistence Works</h4> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p>Desktop Commander creates a persistent work environment that remembers everything between sessions:</p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <ul style="margin-bottom: 0; padding-left: 20px;"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li><strong>Your development tools:</strong> Any software you install stays installed</li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li><strong>Your configurations:</strong> Git settings, SSH keys, shell preferences preserved</li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li><strong>Your work files:</strong> Projects and files in workspace persist across restarts</li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li><strong>Package caches:</strong> Downloaded packages cached for faster installs</li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </ul> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h4>Manual Docker Configuration</h4> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p>If you prefer manual setup, add this to your claude_desktop_config.json:</p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <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>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> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+1438
to
+1454
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainVolume mounts and workspace path consistency; add auto-pull; align server key
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"
]
}
🏁 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:
Locations:
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:
📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h4>Docker Benefits</h4> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <ul style="margin-bottom: 15px; padding-left: 20px;"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li><strong>✅ Complete Isolation:</strong> Runs in sandboxed environment</li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li><strong>✅ No Node.js Required:</strong> Everything included in container</li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li><strong>✅ Cross-Platform:</strong> Same experience on all operating systems</li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <li><strong>✅ Persistent Environment:</strong> Your tools and files survive restarts</li> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </ul> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h4>Management Commands</h4> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <strong>macOS/Linux:</strong> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;"># Check status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Reset persistent data | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --reset</pre> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <strong>Windows PowerShell:</strong> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <pre style="background: #f4f4f4; padding: 10px; overflow-x: auto; border-radius: 5px; margin-top: 10px; white-space: pre-wrap; word-break: break-word;"># Check status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| $script = (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'); & ([ScriptBlock]::Create("$script")) -Status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Reset data | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| $script = (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'); & ([ScriptBlock]::Create("$script")) -Reset</pre> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <br /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <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> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+1481
to
+1483
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. “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
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div style="text-align: left; background: #f8f8f8; padding: 12px; overflow-x: auto; border-radius: 5px; margin-top: 15px; margin-bottom: 15px; border: 1px solid #ccc; box-shadow: 0 1px 3px rgba(0,0,0,0.05);"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p style="margin-top: 0; color: #171717;">To install DesktopCommanderMCP you need to have Node.js v18.18.0+ and Claude Desktop installed on your system:</p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p style="margin-top: 0; color: #171717;">To install DesktopCommanderMCP you need to have Node.js v18.18.0+ and Claude Desktop installed on your system (except Docker installation which doesn't require Node.js but Docker):</p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p><strong>Download Node.js:</strong> <a href="https://nodejs.org/en/download" target="_blank">https://nodejs.org/en/download</a></p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p style="margin-bottom: 0;"><strong>Download Claude Desktop:</strong> <a href="https://claude.ai/download" target="_blank">https://claude.ai/download</a></p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
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
Apply this diff to the JSON example inside the pre block:
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:
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=alwaysso the image is always updated.• Change the MCP server key from
"desktop-commander-docker"to"desktop-commander".• Insert
--pull=alwaysinto the Docker run arguments.Apply this diff in docs/index.html (around lines 1425–1436):
📝 Committable suggestion
🤖 Prompt for AI Agents