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

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. 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 informationclient_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
  • DXT flag – Indicates when the MCP_DXT environment variable is present
  • Container metadata – Determined via 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 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 and exposed through the UI via definitions in src/config-field-definitions.ts.

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

// 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).

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

# 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:

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

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →