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

DesktopCommander MCP ships with telemetry disabled by default; enable it by setting telemetryEnabled: true in 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 file. By default, this flag initializes to false during installation to protect privacy.

To opt-in, edit config.json and set telemetryEnabled to true:

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

According to 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 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

Privacy Protections and Data Sanitization

DesktopCommander MCP implements strict sanitization logic in 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 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 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, the system follows the principle that "telemetry should never break functionality."

Summary

  • Telemetry is opt-in only (telemetryEnabled defaults to false in config.json as set by 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
  • 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 (see 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 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 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 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.

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 →