# DesktopCommanderMCP Telemetry: What Data Is Collected and How to Opt Out

> Discover what telemetry data DesktopCommanderMCP collects and learn how to easily opt out. Understand the data and control your privacy settings for wonderwhy-er/DesktopCommanderMCP.

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

---

**DesktopCommanderMCP collects anonymous usage data including event names, client versions, and container metadata, but never transmits personal identifiers or file paths, and provides two independent opt-out mechanisms via configuration settings or environment variables.**

The DesktopCommanderMCP repository implements a lightweight telemetry layer designed to understand usage patterns without compromising user privacy. Every tool call, file system operation, and performance metric is captured through a centralized utility, then sanitized to remove sensitive information before transmission. Understanding what data is collected and how to disable it ensures you maintain control over your development environment.

## What Data Does DesktopCommanderMCP Collect?

The telemetry system gathers high-level usage signals through the `capture` utility implemented in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts). When an event occurs, the code constructs a payload and POSTs it to `https://telemetry.desktopcommander.app/mp/collect`.

### Event Types and Payload Structure

The system records specific interaction patterns including tool invocations, error reports, and performance timings. Each payload contains:

- **Event name** (e.g., `server_edit_block`, `fuzzy_search_iterative_metrics`) – Identifies the specific operation performed
- **Client information** – `client_name` and `client_version` pulled from the active client connection
- **Anonymous user ID** – A `uniqueUserId` generated once per user and stored in the config as `clientId`
- **Application version** – Read from [`src/version.js`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/version.js)
- **DXT flag** – Indicates when the `MCP_DXT` environment variable is present
- **Container metadata** – Determined via [`system-info.js`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/system-info.js), including `isContainer`, `containerType`, `orchestrator`, `containerName`, and `containerImage` (with long IDs scrubbed)
- **Onboarding status** – Tracks whether the welcome page was displayed via `saw_onboarding_page`
- **Performance timing** – Optional verbose timing data when the `verbose_timing` flag is enabled

### Privacy Safeguards and Sanitization

Before transmission, all payloads undergo strict sanitization to protect privacy. The `captureBase` function in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts) deep-clones event properties and strips any path-related keys including `path`, `filePath`, and `directory`. Raw error objects are reduced to safe messages via `sanitizeError`, ensuring no stack traces or file system details leak to the telemetry server.

## How to Disable DesktopCommanderMCP Telemetry

DesktopCommanderMCP provides two independent mechanisms to stop telemetry collection. The environment variable kill-switch takes precedence over configuration settings, ensuring CI pipelines and automated environments can enforce silence without modifying user configuration files.

### Method 1: Configuration-Level Opt-Out

Set the `telemetryEnabled` key to `false` in the application configuration. This flag is managed by [`src/config-manager.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/config-manager.ts) and exposed through the UI via definitions in [`src/config-field-definitions.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/config-field-definitions.ts).

When `telemetryEnabled` is `false`, every call to `captureBase` returns early, preventing any network requests to the telemetry endpoint.

```typescript
// Programmatic example using the config manager
import { configManager } from './src/config-manager.js';

async function disableTelemetry() {
  await configManager.setValue('telemetryEnabled', false);
  console.log('Telemetry disabled – no further events will be sent.');
}

disableTelemetry();

```

You can also toggle this setting through the configuration UI, which writes the same key to the JSON config file ([`config.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/config.json)).

### Method 2: Environment Variable Kill Switch

Define `DESKTOP_COMMANDER_DISABLE_TELEMETRY` in your process environment to disable telemetry for the entire process, bypassing the configuration check entirely. Any of the following values disables telemetry:

- `1`
- `true`
- `yes`
- `on`

```bash

# Add to ~/.bashrc or export before launching

export DESKTOP_COMMANDER_DISABLE_TELEMETRY=1
./desktop-commander-mcp   # telemetry is now fully disabled

```

This method ensures that automated test runs and containerized environments can guarantee no telemetry transmission without modifying persistent configuration files.

## Verifying Your Telemetry Status

To check whether telemetry is currently active, query the configuration manager directly:

```typescript
import { configManager } from './src/config-manager.js';

async function showTelemetryStatus() {
  const enabled = await configManager.getValue('telemetryEnabled');
  console.log('Telemetry enabled?', enabled !== false);
}

showTelemetryStatus();

```

If the environment variable `DESKTOP_COMMANDER_DISABLE_TELEMETRY` is set to a valid disable value, telemetry will be inactive regardless of the configuration setting.

## Summary

- DesktopCommanderMCP telemetry is implemented in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts) and sends anonymous usage data to `https://telemetry.desktopcommander.app/mp/collect`
- Collected data includes event names, client versions, container metadata, and performance timings, but never includes personal identifiers, file paths, or raw error objects
- The `telemetryEnabled` configuration flag in [`src/config-manager.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/config-manager.ts) provides a persistent opt-out mechanism
- The `DESKTOP_COMMANDER_DISABLE_TELEMETRY` environment variable offers a process-level kill switch that overrides configuration settings
- All data is sanitized before transmission to remove sensitive path information and error details

## Frequently Asked Questions

### Does DesktopCommanderMCP collect personal information or file contents?

No. According to the source code in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts), the telemetry system explicitly strips path-related keys like `path`, `filePath`, and `directory` from payloads. Error objects are sanitized via `sanitizeError` to remove stack traces, and no file contents or personal identifiers are transmitted. The system only collects anonymous metadata about which features are used.

### Where is the telemetry data sent?

Telemetry payloads are POSTed to `https://telemetry.desktopcommander.app/mp/collect`. This endpoint receives only the sanitized event data described in the payload structure, with no raw file system paths or error traces included in the transmission.

### Will disabling telemetry affect MCP functionality?

No. Disabling telemetry via either the `telemetryEnabled` configuration flag or the `DESKTOP_COMMANDER_DISABLE_TELEMETRY` environment variable only stops the transmission of usage analytics. All core DesktopCommanderMCP functionality, including file system operations, code editing tools, and search capabilities, continues to work normally without any performance degradation or feature restrictions.

### How do I check if telemetry is currently enabled?

You can verify the current state programmatically by importing `configManager` from [`src/config-manager.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/config-manager.ts) and querying the `telemetryEnabled` value. If the environment variable `DESKTOP_COMMANDER_DISABLE_TELEMETRY` is set to `1`, `true`, `yes`, or `on`, telemetry is disabled regardless of the configuration setting.