# Desktop Commander Auto-Update Differences: npx vs Bash vs Smithery vs Docker

> Explore npx vs Bash vs Smithery vs Docker auto-update differences for Desktop Commander. Understand how Claude Desktop restarts trigger updates for package-based and Docker methods.

- Repository: [Eduard Ruzga/DesktopCommanderMCP](https://github.com/wonderwhy-er/DesktopCommanderMCP)
- Tags: best-practices
- Published: 2026-07-09

---

**All Desktop Commander installation methods except local checkout automatically update when Claude Desktop restarts, with package-based methods fetching the latest npm version and Docker pulling the latest container image.**

The wonderwhy-er/DesktopCommanderMCP repository provides six distinct installation options for the Desktop Commander MCP server, each with different auto-update behaviors. While most methods leverage dynamic package management to ensure you always run the latest code, one approach requires explicit manual updates to receive new features and fixes.

## Package-Based Installation Methods

Three installation options rely on the npm ecosystem to deliver automatic updates. These methods execute the setup script each time Claude Desktop launches, ensuring the `@latest` tag always resolves to the most recent published version.

### npx Installation (Option 1)

The npx method executes the setup command directly from the npm registry. When you configure Claude Desktop with `npx @wonderwhy-er/desktop-commander@latest setup`, the client re-runs this command on every restart. According to the source code in [`package.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/package.json), the `@latest` tag points to the most recent build, pulling new versions automatically without user intervention.

```bash

# Initial install - also re-runs on every Claude restart

npx @wonderwhy-er/desktop-commander@latest setup

```

Because the command references the `@latest` tag explicitly, Claude Desktop always fetches the newest package version from the npm registry when initializing the MCP server.

### Bash Script Installation (Option 2)

The Bash installer method fetches the latest installation script from the repository's [`install.sh`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/install.sh) file before executing the npm setup. The one-liner `curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install.sh | bash` downloads the current installer, which then installs the latest npm package version.

```bash

# Fetches latest script and installs current package version

curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install.sh | bash

```

Since the curl command retrieves the script fresh on each Claude Desktop start, any updates to the installer or the package version propagate automatically.

### Smithery Installation (Option 3)

Smithery generates an install key that points to the latest npm version. When you install via the Smithery UI, the generated key internally triggers the same `npx` setup process. As documented in [`README.md`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/README.md), Claude Desktop reads this configuration key on launch and executes the underlying npx command.

```text

# In Smithery UI:

# 1. Select Claude Desktop client

# 2. Click "Install" to generate key

# 3. Claude runs npx setup automatically on restart

```

This method inherits the same auto-update behavior as direct npx installation, refreshing the server code each time Claude restarts.

## Container-Based Auto-Updates

Docker isolation provides a different mechanism for automatic updates that eliminates Node.js dependencies on the host system.

### Docker Installation (Option 6)

The Docker method pulls the `mcp/desktop-commander:latest` image, which functions as a moving tag always pointing to the most recent build. The [`install-docker.sh`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/install-docker.sh) script handles the initial setup, while subsequent Claude Desktop restarts ensure the container runs the freshest available image.

```bash

# Install using Docker (pulls latest tag)

bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh)

# Manual refresh if needed

docker pull mcp/desktop-commander:latest

```

Because the image is rebuilt from the current source repository automatically, you receive updates without manually rebuilding containers or managing Node.js versions locally.

## Static Installation Method

One installation option intentionally bypasses automatic updates to provide a frozen development environment.

### Local Checkout (Option 5)

Cloning the repository locally creates a static copy of the code at a specific point in time. When you run `npm run setup` from a local checkout, Claude Desktop executes the server directly from the cloned files without consulting the npm registry or Docker hub.

```bash

# Clone and setup (static version)

git clone https://github.com/wonderwhy-er/DesktopCommanderMCP.git
cd DesktopCommanderMCP
npm run setup

# Manual update required

git pull && npm run setup

```

Since the [`package.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/package.json) and source files remain unchanged on disk until you explicitly run `git pull`, this method requires manual intervention to receive updates. The Desktop Commander server continues running the cloned version indefinitely.

## Summary

- **Package-based methods** (npx, Bash, Smithery) automatically update via npm's `@latest` tag each time Claude Desktop restarts.
- **Docker** pulls the `latest` image tag automatically, providing updates without Node.js dependencies.
- **Local checkout** requires explicit `git pull && npm run setup` to update, maintaining a static version until manually refreshed.
- All auto-updating methods execute their respective setup commands on Claude Desktop launch, as configured in the client's MCP settings.

## Frequently Asked Questions

### Do I need to manually update Desktop Commander when using npx?

No. The npx method automatically fetches the latest version from the npm registry every time Claude Desktop restarts. The command `npx @wonderwhy-er/desktop-commander@latest setup` explicitly references the `@latest` tag, ensuring you always run the most recent published version without manual intervention.

### Why doesn't the local checkout method auto-update?

Local checkout creates a static snapshot of the repository files on your filesystem. Because Claude Desktop executes the server directly from these local files rather than checking the npm registry or Docker hub, the version remains fixed at your last clone or pull. Updating requires explicitly running `git pull` to fetch new commits followed by `npm run setup` to reinstall dependencies.

### How do I force an immediate update with the Docker method?

While Docker updates automatically on Claude Desktop restart, you can force an immediate refresh by pulling the latest image manually. Run `docker pull mcp/desktop-commander:latest` to fetch the newest build from the registry, then restart Claude Desktop to spawn a container using the updated image.

### Does Smithery handle updates differently than direct npx installation?

No. Smithery ultimately uses the same npx mechanism under the hood. When you install via Smithery, the generated configuration key causes Claude Desktop to execute `npx @wonderwhy-er/desktop-commander@latest setup` on launch. Both methods check the npm registry for the `@latest` tag on every restart and update automatically.