# How to Configure Telemetry in DesktopCommander MCP: Privacy Controls and Data Collection

> Configure DesktopCommander MCP telemetry. Learn what data is collected and how to control privacy settings. Enable or disable telemetry easily.

- Repository: [Eduard Ruzga/DesktopCommanderMCP](https://github.com/wonderwhy-er/DesktopCommanderMCP)
- Tags: how-to-guide
- Published: 2026-08-07

---

**DesktopCommander MCP ships with telemetry disabled by default; enable it by setting `telemetryEnabled: true` in [`config.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/config.json), or hard-disable it with the `DISABLE_TELEMETRY` environment variable.**

DesktopCommander MCP is an open-source Model Context Protocol (MCP) server that prioritizes user privacy through opt-in telemetry. Understanding how to configure telemetry settings ensures you maintain complete control over what system information leaves your local environment. This guide examines the actual implementation in the source code to explain exactly what data is transmitted and what remains strictly private.

## Enabling Telemetry via Configuration

The telemetry system is gated by a single boolean flag stored in the user-level [`config.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/config.json) file. By default, this flag initializes to `false` during installation to protect privacy.

To opt-in, edit [`config.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/config.json) and set `telemetryEnabled` to `true`:

```json
{
  "blockedCommands": [],
  "telemetryEnabled": true
}

```

According to [`uninstall-claude-server.js`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/uninstall-claude-server.js) (lines 19-22), the configuration explicitly defaults `telemetryEnabled` to `false` when generating a new config file, ensuring telemetry remains disabled unless deliberately enabled by the user.

## What Data Is Collected When Enabled

When `telemetryEnabled` is `true`, the runtime uses the `capture` utility in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts) to construct lightweight event payloads. These are POSTed to the telemetry endpoint at `https://telemetry.desktopcommander.app/mp/collect`.

Each payload contains the following sanitized metadata:

- **eventType** – High-level action identifier (e.g., `tool_used`, `ui_interaction`, `error`)
- **timestamp** – ISO-8601 formatted time of the event
- **sessionId** – Random UUID generated per installation and stored in config
- **clientId** – Persistent machine identifier generated once and saved locally
- **toolName / toolVersion** – Identity of the tool generating the event
- **platformInfo** – Operating system, architecture, and Node.js version derived from `process` globals
- **errorMessage** (optional) – Sanitized error descriptions with sensitive data removed
- **uiContext** (optional) – Sanitized widget descriptions for UI-origin calls, tracked via [`src/utils/trackTools.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/trackTools.ts)

## Privacy Protections and Data Sanitization

DesktopCommander MCP implements strict sanitization logic in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts) to ensure user-generated content never leaves your machine. The source code explicitly notes where "Sanitization for telemetry happens here," removing or hashing potentially sensitive strings before transmission.

**What remains strictly private:**

- **File contents** – Never transmitted; all file reads remain local and derived data is discarded before telemetry assembly
- **Command arguments** – Only the command name and high-level category are sent; specific arguments are stripped
- **Personal identifiers** – The `clientId` and `sessionId` are randomly generated and not linked to external accounts, emails, or IP addresses
- **User-provided content** – File paths, clipboard text, and command arguments are sanitized or hashed before inclusion in any payload

## Opt-Out Mechanisms and Environment Overrides

Users retain full control over data collection through multiple kill-switches.

**Configuration file:** Toggle `telemetryEnabled` to `false` in [`config.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/config.json) at any time to immediately cease transmission.

**Environment variable:** Set `DISABLE_TELEMETRY` to force telemetry to remain disabled even if the config file indicates otherwise. This check occurs early in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts) and overrides the JSON configuration.

**Silent failure:** All network requests are wrapped in try-catch blocks; telemetry failures never crash the application or block functionality. As documented in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts), the system follows the principle that "telemetry should never break functionality."

## Summary

- Telemetry is **opt-in only** (`telemetryEnabled` defaults to `false` in [`config.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/config.json) as set by [`uninstall-claude-server.js`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/uninstall-claude-server.js))
- When enabled, only high-level metadata (event types, platform info, sanitized errors) is transmitted to `https://telemetry.desktopcommander.app/mp/collect`
- **No file contents, command arguments, or personal identifiers** are ever sent due to sanitization in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts)
- Use the `DISABLE_TELEMETRY` environment variable as a hard kill-switch independent of configuration files
- Telemetry failures are silent and never impact MCP server functionality

## Frequently Asked Questions

### Is telemetry enabled by default in DesktopCommander MCP?

No. The installation process explicitly initializes `telemetryEnabled` to `false` in [`config.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/config.json) (see [`uninstall-claude-server.js`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/uninstall-claude-server.js), lines 19-22). You must manually change this value to `true` to enable any data collection.

### Can I disable telemetry after previously enabling it?

Yes. Simply edit [`config.json`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/config.json) and set `telemetryEnabled` to `false`, or set the `DISABLE_TELEMETRY` environment variable to override the configuration file completely. The change takes effect immediately without requiring a restart.

### Does DesktopCommander MCP collect file paths or command arguments?

No. While the system records that a tool was used (`eventType: "tool_used"`), it strips file paths and command arguments through sanitization logic in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts) before transmission. Only the command name and high-level category are retained; all user-provided parameters are removed.

### Will telemetry network errors break my MCP server functionality?

No. The telemetry implementation in [`src/utils/capture.ts`](https://github.com/wonderwhy-er/DesktopCommanderMCP/blob/main/src/utils/capture.ts) includes explicit error handling to ensure silent failures. As noted in the source comments, telemetry failures are caught and ignored to prevent any impact on server operations or tool execution.