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
processglobals - 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
clientIdandsessionIdare 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 (
telemetryEnableddefaults tofalseinconfig.jsonas set byuninstall-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_TELEMETRYenvironment 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →