MCP server for terminal operations and file editing
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed v0.2.51 · analyzer v33 · 8h ago
skills & prompt files 18
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/claude/skills/ai-tools-setup/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/claude/skills/computer-health-check/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/claude/skills/desktop-commander-overview/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/claude/skills/knowledge-base/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/claude/skills/obsidian-vault/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/claude/skills/terminal/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/cursor/skills/ai-tools-setup/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/cursor/skills/computer-health-check/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/cursor/skills/desktop-commander-overview/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/cursor/skills/knowledge-base/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/cursor/skills/obsidian-vault/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/plugins/cursor/skills/terminal/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/skills/ai-tools-setup/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/skills/computer-health-check/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/skills/desktop-commander-overview/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/skills/knowledge-base/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/skills/obsidian-vault/SKILL.md
- skill wonderwhy-er-DesktopCommanderMCP-092ce0b/skills/terminal/SKILL.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 219
filesystem 80
- fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/build-mcpb.cjs :14
const fs = require('fs'); - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/build-ui-runtime.cjs :6
const fs = require('fs/promises'); - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/download-all-ripgrep.cjs :11
const fs = require('fs'); - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/export-fuzzy-logs.js :4
import fs from 'fs/promises'; - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/publish-release.cjs :24
const fs = require('fs'); - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/ripgrep-wrapper.js :14
import fs from 'fs'; - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/sync-version.js :1
import { readFileSync, writeFileSync } from 'fs'; - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/validate-tools-sync.js :9
import { readFile } from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/setup-claude-server.js :2
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/config-manager.ts :1
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/npm-scripts/remote.ts :2
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/remote-device/desktop-commander-integration.ts :3
import fs from 'fs/promises';
show 28 more
- fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/remote-device/device.ts :8
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/search-manager.ts :3
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/config.ts :6
import { access, readFile } from 'node:fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/edit.ts :19
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/filesystem.ts :1
import fs from "fs/promises"; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/improved-process-tools.ts :10
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/pdf/manipulations.ts :1
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/pdf/markdown.ts :1
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/prompts.ts :4
import * as fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/ui/resources.ts :4
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/feature-flags.ts :1
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/files/binary.ts :8
import fs from "fs/promises"; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/files/docx.ts :19
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/files/excel.ts :7
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/files/image.ts :6
import fs from "fs/promises"; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/files/pdf.ts :6
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/files/text.ts :16
import fs from "fs/promises"; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/fuzzySearchLogger.ts :1
import fs from 'fs/promises'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/ripgrep-resolver.ts :2
import { existsSync, chmodSync } from 'fs'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/system-info.ts :2
import fs from 'fs'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/toolHistory.ts :2
import * as fs from 'fs'; - fs wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/trackTools.ts :1
import * as fs from 'fs'; - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/integration/edit-block-performance.js :11
import fs from 'fs/promises'; - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/integration/read-file-unknown-params.js :20
import fs from 'fs/promises'; - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/integration/run-all-integration-tests.js :9
import fs from 'fs/promises'; - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/modified-test.js :18
await fs.writeFile(LARGE_FILE_LF, lines.join('')); - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/repro/test-bootstrap-threadpool.js :6
import fs from 'fs/promises'; - fs (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/repro/test-dc-tracking-gate.js :4
// .setValue -> saveConfig -> fs.writeFile (libuv threadpool).
40 more not shown — this panel samples each group; the count above is the real total.
shell / exec 42
- shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/build-mcpb.cjs :16
const { execSync } = require('child_process'); - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/count-tokens.js :13
import { spawn } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/download-all-ripgrep.cjs :124
const { execSync } = require('child_process'); - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/publish-release.cjs :23
const { execSync } = require('child_process'); - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/validate-tools-sync.js :12
import { spawn } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/setup-claude-server.js :8
import { exec } from "node:child_process"; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/remote-device/desktop-commander-integration.ts :1
import { spawn } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/remote-device/remote-channel.ts :1303
const { spawnSync } = await import('child_process'); - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/search-manager.ts :1
import { spawn, ChildProcess } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/terminal-manager.ts :1
import { spawn } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/feedback.ts :5
import { exec } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/filesystem.ts :5
import { execFile } from 'child_process';
show 28 more
- shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/improved-process-tools.ts :9
import { spawn } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/process.ts :1
import { exec } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/types.ts :1
import { ChildProcess } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/open-browser.ts :1
import { execFile, spawn } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/ripgrep-resolver.ts :1
import { execSync } from 'child_process'; - shell wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/system-info.ts :4
import { execSync } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test-listener-bug.js :15
import { spawn } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/integration/run-all-integration-tests.js :8
import { spawn } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/repro/test-bootstrap-threadpool.js :5
import { execSync } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/repro/test-dc-tracking-gate.js :9
import { execSync } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/repro/test-env-threadpool-timing.js :5
import { execSync } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/repro/test-read-abort-frees-thread.js :16
import { execSync } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/repro/test-threadpool-starvation.js :7
import { execSync } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/repro/test-withtimeout-leak.js :7
import { execSync } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/run-all-tests.js :6
import { spawn } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-config-atomic-write.js :2
import { fork } from 'node:child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-config-client-id-cross-process.js :2
import { fork } from 'node:child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-config-cross-process-clobber.js :2
import { fork } from 'node:child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-config-mutation-recovery.js :2
import { fork } from 'node:child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-config-stale-lock-recovery.js :2
import { fork } from 'node:child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-config-usage-cross-process.js :2
import { fork } from 'node:child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-config-watch-cross-process.js :2
import { fork } from 'node:child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-enhanced-repl.js :2
import { execSync } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-node-repl.js :7
import { spawn } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-onboarding-injection-flag.js :24
import { spawn } from 'child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-spawn-error-no-crash.js :4
* spawn() reports failure asynchronously via an 'error' event rather than by - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-usage-stats-partial.js :2
import { fork } from 'node:child_process'; - shell (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-welcome-onboarding-legacy-config.js :11
import { spawn } from 'node:child_process';
2 more not shown — this panel samples each group; the count above is the real total.
network 14
- net (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/scripts/download-all-ripgrep.cjs :10
const https = require('https'); - net wonderwhy-er-DesktopCommanderMCP-092ce0b/setup-claude-server.js :10
import * as https from 'https'; - net wonderwhy-er-DesktopCommanderMCP-092ce0b/src/remote-device/device-authenticator.ts :70
const response = await fetch(`${this.baseServerUrl}/device/start`, { - net wonderwhy-er-DesktopCommanderMCP-092ce0b/src/remote-device/device.ts :357
const response = await fetch(`${this.baseServerUrl}/api/mcp-info`); - net wonderwhy-er-DesktopCommanderMCP-092ce0b/src/remote-device/remote-channel.ts :123
const response = await fetch(input, init); - net wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/filesystem.ts :367
const response = await fetch(url, { - net wonderwhy-er-DesktopCommanderMCP-092ce0b/src/tools/pdf/markdown.ts :264
const response = await fetch(source); - net wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/capture.ts :2
import * as https from 'https'; - net wonderwhy-er-DesktopCommanderMCP-092ce0b/src/utils/feature-flags.ts :180
const fetchPromise = fetch(this.flagUrl, { - net (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-feature-flags-timeout.js :14
import { createServer } from 'net'; - net (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-onboarding-injection-flag.js :26
import { createServer } from 'http'; - net (weak) wonderwhy-er-DesktopCommanderMCP-092ce0b/test/test-remote-clock-skew-before-session.js :41
import http from 'node:http';
show 2 more
- net wonderwhy-er-DesktopCommanderMCP-092ce0b/track-installation.js :15
import * as https from 'https'; - net wonderwhy-er-DesktopCommanderMCP-092ce0b/uninstall-claude-server.js :10
import * as https from 'https';
install hooks 2
- postinstall (suspicious) wonderwhy-er-DesktopCommanderMCP-092ce0b/package.json :29
node dist/track-installation.js && node dist/npm-scripts/verify-ripgrep.js || node -e "process.exit(0)" - prepare wonderwhy-er-DesktopCommanderMCP-092ce0b/package.json :45
npm run build
declared dependencies 49
- @modelcontextprotocol/sdk@^1.9.0
- @modelcontextprotocol/ext-apps@^1.0.1
- @opendocsg/pdf2md@^0.2.2
- @supabase/supabase-js@^2.89.0
- @tiptap/core@^3.22.3
- @tiptap/extension-image@^3.22.3
- @tiptap/extension-table@^3.22.4
- @tiptap/extension-table-cell@^3.22.4
- @tiptap/extension-table-header@^3.22.4
- @tiptap/extension-table-row@^3.22.4
- @tiptap/pm@^3.22.3
- @tiptap/starter-kit@^3.22.3
show 28 more
- @vscode/ripgrep@^1.15.9
- cross-fetch@^4.1.0
- exceljs@^4.4.0
- fastest-levenshtein@^1.0.16
- file-type@^21.1.1
- glob@^10.3.10
- highlight.js@^11.11.1
- isbinaryfile@^5.0.4
- markdown-it@^14.1.0
- md-to-pdf@^5.2.5
- open@^10.2.0
- pdf-lib@^1.17.1
- pizzip@^3.2.0
- proper-lockfile@^4.1.2
- remark@^15.0.1
- remark-gfm@^4.0.1
- remark-parse@^11.0.0
- sharp@^0.34.5
- tiptap-markdown@^0.9.0
- unified@^11.0.5
- unpdf@^1.4.0
- zod@^3.24.1
- zod-to-json-schema@^3.23.5
- @anthropic-ai/mcpb@^1.2.0
- @types/node@^20.17.24
- @types/proper-lockfile@^4.1.4
- commander@^13.1.0
- esbuild@^0.27.2
9 more not shown — this panel samples each group; the count above is the real total.