From 5a01050d1aefb2796bb22438d2d5bc98a715c828 Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Wed, 29 Apr 2026 10:59:02 +0300 Subject: [PATCH 01/10] Add Cursor plugin metadata --- .cursor-plugin/marketplace.json | 19 ++++ plugins/cursor/.cursor-plugin/plugin.json | 40 +++++++ .../desktop-commander-overview/SKILL.md | 104 ++++++++++++++++++ 3 files changed, 163 insertions(+) create mode 100644 .cursor-plugin/marketplace.json create mode 100644 plugins/cursor/.cursor-plugin/plugin.json create mode 100644 plugins/cursor/skills/desktop-commander-overview/SKILL.md diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json new file mode 100644 index 00000000..cff8bd9a --- /dev/null +++ b/.cursor-plugin/marketplace.json @@ -0,0 +1,19 @@ +{ + "name": "desktop-commander", + "owner": { + "name": "Desktop Commander", + "email": "support@desktopcommander.app" + }, + "metadata": { + "description": "Desktop Commander — terminal control, file work, and document handling on the user's actual machine.", + "version": "0.1.0", + "pluginRoot": "plugins" + }, + "plugins": [ + { + "name": "desktop-commander", + "source": "cursor", + "description": "Desktop Commander gives Cursor agents reach across the user's actual computer — files, folders, terminals, documents, and connected apps — beyond the IDE sandbox." + } + ] +} diff --git a/plugins/cursor/.cursor-plugin/plugin.json b/plugins/cursor/.cursor-plugin/plugin.json new file mode 100644 index 00000000..b9b4f592 --- /dev/null +++ b/plugins/cursor/.cursor-plugin/plugin.json @@ -0,0 +1,40 @@ +{ + "name": "desktop-commander", + "displayName": "Desktop Commander", + "version": "0.1.0", + "description": "Desktop Commander gives Cursor agents reach across the user's actual computer — files, folders, terminals, documents, and connected apps — beyond the IDE sandbox.", + "author": { + "name": "Desktop Commander", + "email": "support@desktopcommander.app" + }, + "publisher": "Desktop Commander", + "homepage": "https://desktopcommander.app", + "repository": "https://github.com/wonderwhy-er/DesktopCommanderMCP", + "license": "MIT", + "logo": "https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/logo.png", + "keywords": [ + "shell", + "terminal", + "filesystem", + "process", + "documents", + "pdf", + "spreadsheet", + "knowledge-base", + "desktop-commander" + ], + "category": "developer-tools", + "tags": [ + "shell", + "filesystem", + "documents", + "ops" + ], + "skills": "./skills/", + "mcpServers": { + "desktop-commander": { + "command": "npx", + "args": ["-y", "@wonderwhy-er/desktop-commander@latest"] + } + } +} diff --git a/plugins/cursor/skills/desktop-commander-overview/SKILL.md b/plugins/cursor/skills/desktop-commander-overview/SKILL.md new file mode 100644 index 00000000..56c14bff --- /dev/null +++ b/plugins/cursor/skills/desktop-commander-overview/SKILL.md @@ -0,0 +1,104 @@ +--- +name: desktop-commander-overview +description: Use for Desktop Commander MCP capabilities — persistent shells and REPLs, long-running processes, filesystem beyond the workspace, structured files (.xlsx, .docx, .pdf, images) and large local data files such as CSVs, ripgrep search at scale, SSH, or cross-turn state. +version: 0.1.0 +audience: agent +--- + +# Desktop Commander MCP + +Desktop Commander gives the agent reach across the user's actual computer — files, folders, terminals, processes, structured documents, and remote machines reachable over SSH. The tools' detailed schemas (parameters, return shapes, format-specific behavior) live in the MCP itself; this skill explains what they enable and how they compose into common workflows. + +## What this MCP gives the agent + +**Persistent shell sessions.** Desktop Commander keeps a started process or session alive across tool calls. Inside a single long-lived shell, REPL, or SSH session, state carries forward — environment variables, working directory, activated virtualenvs, open connections, REPL variables — so the agent can `cd`, activate a venv, then send commands or code into that same session many turns later without re-setup. (Note: separate `start_process` calls open separate sessions and do **not** share shell state with each other; persistence is inside one session, not across them.) + +**Long-running processes.** Start a dev server, watcher, build, training run, or test suite in the background and keep working. The MCP returns a process handle the agent can tail, interact with, or terminate across many turns. Long-running commands don't need to block the workflow waiting for a foreground command to exit. + +**Filesystem reach beyond the IDE workspace.** Read, write, move, list, and inspect files anywhere the user has granted scope — Downloads, Documents, project folders outside the IDE, or any other granted folders. Useful for organize-and-clean tasks, batch document work, and any "look at the file my coworker just sent me" request that doesn't fit inside the IDE sandbox. + +**Surgical edits to existing files.** The `edit_block` tool does exact-string find-and-replace with built-in safety: ambiguous matches fail loudly instead of silently overwriting the wrong thing, and an `expected_replacements` count prevents partial-match disasters. Lower data-loss risk than rewriting whole files based on the slice you happened to read — though a wrong `old_string` or wrong `expected_replacements` can still corrupt content, so review the changed content before considering the edit done. + +**Binary and structured files handled directly by the MCP.** Excel, DOCX, and PDF are first-class — read and modified through format-specific mechanisms rather than text-only approximations: Excel via cell-range JSON, DOCX via raw-XML edits, PDF via page-level operations on a new output file. The result is the real file in its original format, not a regenerated approximation. Images and PDFs return as viewable content for the agent. + +**Search at scale.** Streaming, ripgrep-backed search across whole projects or folder trees. The agent picks between filename search and in-file content search, pages through results progressively without flooding context, and runs multiple concurrent searches when the query is ambiguous. + +**Remote machines via SSH.** A long-lived SSH session inside a persistent shell turns the agent into a real ops tool: connect once, then tail logs, run diagnostics, deploy, or debug across many turns without reconnecting each step. + +**Process management.** List, inspect, tail, and kill accessible processes (subject to OS permissions). Useful for cleaning up stale dev servers from previous sessions and for diagnosing CPU / memory issues. + +## Example workflows + +Each example names the actual tool sequence. Calls below are written in pseudocode shorthand (`tool_name("arg", flag=value)`); the real tools take object-shaped arguments. Tool descriptions and full parameter sets live in the MCP itself. + +### "Debug this production issue" + +`start_process("ssh user@prod.example.com", timeout_ms=...)` opens a long-lived SSH session and returns a PID. `interact_with_process(pid, "tail -f /var/log/app.log\n")` starts streaming logs. Subsequent turns: `read_process_output(pid, offset=-50)` to see the last 50 lines as they arrive, `interact_with_process(pid, "...")` to run diagnostic commands in the same session. `force_terminate(pid)` to close the session when done — for sessions opened by `start_process`, `force_terminate` is the correct cleanup tool; `kill_process` is for arbitrary OS PIDs found via `list_processes`. + +### "Deploy this to staging" + +`start_process` for the deploy command (could be a script, an SSH-piped command, or `kubectl`/`gh` etc.). `read_process_output` to track output and surface errors. If the deploy needs an interactive confirmation, `interact_with_process(pid, "yes\n")`. The session stays alive while the agent watches for completion or rollback. + +### "Run the dev server and iterate on the API" + +`start_process("npm run dev", timeout_ms=...)` keeps the server up. The agent then loops: `edit_block` on the route file, `read_process_output(pid, offset=-30)` to see the server's reload, `start_process("curl -s http://localhost:3000/api/...")` for a one-shot test, repeat. The dev server never has to restart between code changes. + +### "Refactor across this monorepo" + +`start_search(pattern="oldFunctionName", path=repo_root, searchType="content")` scopes every call site. `get_more_search_results(sessionId)` pages through. `read_multiple_files(paths=[...])` confirms ambiguous hits in context. `edit_block(file_path, old_string, new_string)` per site, with `expected_replacements` set when the same substring legitimately appears multiple times in one file. Verify by re-running `start_search` on the old name and paging the results with `get_more_search_results(sessionId)` until the run completes — only then can you confirm zero remaining hits. + +### "Update the Q3 numbers in this spreadsheet and tweak the summary in the report" + +`read_file(path="/.../q3.xlsx", sheet="Revenue", range="A1:F50")` returns the existing numbers as a JSON 2D array. `edit_block(file_path="/.../q3.xlsx", range="Revenue!C12:C24", content=[[12345], ...])` updates the cells in place. For the report, DOCX editing is a two-read flow: first `read_file(path="/.../report.docx")` (offset 0) returns the document's outline (headings + paragraph text) so you can locate the summary section. Then `read_file(path="/.../report.docx", offset=N, length=...)` with **`N > 0`** returns the raw underlying XML around that section — a non-zero offset is what flips the read into XML mode. Copy an XML fragment from that output as `old_string` and call `edit_block(file_path, old_string, new_string)` with the rewritten XML. The user gets back real `.xlsx` and `.docx` files, not regenerated approximations. + +### "Generate the Q3 report as a PDF" + +Compose markdown content (header, table, charts via embedded HTML), then call `write_pdf` to render it to a new PDF file. The MCP's `write_pdf` tool description specifies the exact parameters and filename rules — follow that. + +### "Insert a cover page into this PDF" + +`write_pdf` also supports modifying existing PDFs via an operations array (insert / delete pages). Use it for existing-PDF edits that produce a new PDF — adding a cover page, removing a section, merging in content from another file. See the `write_pdf` tool description for the operation shapes and parameter rules. + +### "Analyze this 200MB CSV" + +`start_process("python3 -i", timeout_ms=...)` opens a Python REPL and returns a PID. `interact_with_process(pid, "import pandas as pd; df = pd.read_csv('/abs/path.csv')")` loads it once. Every subsequent question — `df.describe()`, `df.groupby('col').size()`, plot a chart — runs in the same already-loaded REPL. Libraries don't re-import, the dataframe doesn't re-load. The MCP itself recommends this workflow for any local data-file analysis. + +### "Run a quick Node script" + +`start_process("node:local", timeout_ms=...)` opens a stateless Node execution mode on the MCP server itself — ES imports supported. `start_process` opens the runner; each piece of JS is sent via `interact_with_process(pid, "")` and runs independently (no shared state between calls). Good for one-shot transformations where keeping a long-lived REPL alive isn't worth it. Don't try to put code into the `start_process` command argument — only the runner type (`node:local`) goes there. + +### "Explain this codebase" + +`list_directory(path=repo_root, depth=3)` for shape. `start_search(pattern="export ", path=repo_root, searchType="content")` to find the public surface. `read_multiple_files(paths=[entrypoints])` for the actual code. The agent can keep narrowing without re-asking the user where to look. + +### "Organize my Downloads folder" + +Resolve the path to absolute first (e.g., `/Users//Downloads`, not `~/Downloads`). Then `list_directory(path="/Users//Downloads", depth=1)` to see what's there. `start_search(pattern="*.pdf", path="/Users//Downloads", searchType="files")` and similar for other types. `create_directory` for new folders. `move_file` per item. Preview the move plan before executing destructive ops. + +### "Onboard me — what was happening last session?" + +`get_recent_tool_calls(maxResults=200)` returns recent activity with arguments and outputs. `list_sessions` shows still-running terminal sessions. `list_searches` shows in-flight searches. `list_processes` shows what's still alive. Together they reconstruct the work without asking the user to recap. + +### "Why isn't the REPL responding?" + +`list_sessions` — if `Blocked: true`, the REPL is waiting for input rather than hung. `read_process_output(pid, offset=-100)` to see what it last printed (often a prompt). `interact_with_process(pid, "\n")` unblocks it. + +## Core tool inventory + +Grouped index of the tools an agent reaches for most often. Not exhaustive — the MCP exposes additional config / diagnostics / feedback tools beyond this list. Detailed parameters and return shapes for every tool are in the MCP's own tool descriptions. + +- **Process / shell:** `start_process`, `interact_with_process`, `read_process_output`, `list_processes`, `list_sessions`, `kill_process`, `force_terminate` +- **Files (read/write):** `read_file`, `read_multiple_files`, `write_file`, `edit_block`, `write_pdf` +- **Filesystem:** `list_directory`, `get_file_info`, `move_file`, `create_directory` +- **Search:** `start_search`, `get_more_search_results`, `list_searches`, `stop_search` +- **Diagnostics / config:** `get_recent_tool_calls`, `get_config` + +## Conventions + +**Prefer absolute paths.** Relative paths may fail depending on the working directory, and tilde paths (`~/...`) may not expand in all contexts. Absolute paths are the most reliable; pass them whenever you can. + +**Allowed-directory scope.** File operations only work inside the user's configured `allowedDirectories`. Expect `[DENIED]` markers in `list_directory` output and rejections from `read_file` / `write_file` when the path is out of scope. Surface the rejected path to the user — don't retry. + +**When running on macOS:** default shell is zsh. Use `python3` not `python`. Some GNU tools have prefixed names (`gsed` for GNU sed). `brew` is the typical package manager. `open` opens files / apps from the terminal, `mdfind` is the fastest path to exact-filename search via Spotlight. Detect the host platform via `get_config` (or by inspecting `process.platform` / `uname` from a shell) before assuming any of the above — Windows and Linux hosts behave differently. + +**Pagination.** Long outputs (file reads, process output, search results) all support `offset` and `length`. Negative offsets read from the end (tail mode). Use these instead of dumping huge results into context. From 5040d47a22baf3883656b96dd13393005be715c1 Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Wed, 29 Apr 2026 11:09:48 +0300 Subject: [PATCH 02/10] Add Cursor plugin README --- plugins/cursor/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 plugins/cursor/README.md diff --git a/plugins/cursor/README.md b/plugins/cursor/README.md new file mode 100644 index 00000000..37411429 --- /dev/null +++ b/plugins/cursor/README.md @@ -0,0 +1,14 @@ +# Desktop Commander Cursor Plugin + +Desktop Commander gives Cursor agents access to a local MCP server for terminal sessions, filesystem work, structured documents, search, process management, and SSH workflows. + +## Components + +- Skill: `desktop-commander-overview`, which explains when to use Desktop Commander MCP tools and how common workflows compose. +- MCP server: `desktop-commander`, installed with `npx -y @wonderwhy-er/desktop-commander@latest`. + +## Usage + +Install the plugin in Cursor, then ask the agent to use Desktop Commander when it needs persistent shells, long-running processes, local files outside the workspace, Excel/DOCX/PDF handling, large CSV analysis, or remote SSH sessions. + +For full project documentation, see the repository README. From 9c22b992a2884cd2001c551e70c5647a75d10d2b Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Wed, 29 Apr 2026 13:08:38 +0300 Subject: [PATCH 03/10] Update Cursor marketplace metadata --- .cursor-plugin/marketplace.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index cff8bd9a..d19d76ae 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -2,7 +2,7 @@ "name": "desktop-commander", "owner": { "name": "Desktop Commander", - "email": "support@desktopcommander.app" + "email": "es@desktopcommander.app" }, "metadata": { "description": "Desktop Commander — terminal control, file work, and document handling on the user's actual machine.", @@ -13,7 +13,7 @@ { "name": "desktop-commander", "source": "cursor", - "description": "Desktop Commander gives Cursor agents reach across the user's actual computer — files, folders, terminals, documents, and connected apps — beyond the IDE sandbox." + "description": "MCP server for terminal commands, process management, and file operations across text, code, PDF, DOCX, Excel, images, and structured data" } ] } From 1a2445c895736eff13830648391c65702cd00330 Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Wed, 29 Apr 2026 14:39:55 +0300 Subject: [PATCH 04/10] Update Cursor plugin author email --- plugins/cursor/.cursor-plugin/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cursor/.cursor-plugin/plugin.json b/plugins/cursor/.cursor-plugin/plugin.json index b9b4f592..2e535d17 100644 --- a/plugins/cursor/.cursor-plugin/plugin.json +++ b/plugins/cursor/.cursor-plugin/plugin.json @@ -5,7 +5,7 @@ "description": "Desktop Commander gives Cursor agents reach across the user's actual computer — files, folders, terminals, documents, and connected apps — beyond the IDE sandbox.", "author": { "name": "Desktop Commander", - "email": "support@desktopcommander.app" + "email": "es@desktopcommander.app" }, "publisher": "Desktop Commander", "homepage": "https://desktopcommander.app", From 161b860b17a056be5c3efdd7d81d9265abd1fae3 Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Wed, 29 Apr 2026 17:11:47 +0300 Subject: [PATCH 05/10] Add Cursor plugin default rule --- plugins/cursor/.cursor-plugin/plugin.json | 1 + plugins/cursor/rules/desktop-commander-default.mdc | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 plugins/cursor/rules/desktop-commander-default.mdc diff --git a/plugins/cursor/.cursor-plugin/plugin.json b/plugins/cursor/.cursor-plugin/plugin.json index 2e535d17..bafce266 100644 --- a/plugins/cursor/.cursor-plugin/plugin.json +++ b/plugins/cursor/.cursor-plugin/plugin.json @@ -31,6 +31,7 @@ "ops" ], "skills": "./skills/", + "rules": "./rules/", "mcpServers": { "desktop-commander": { "command": "npx", diff --git a/plugins/cursor/rules/desktop-commander-default.mdc b/plugins/cursor/rules/desktop-commander-default.mdc new file mode 100644 index 00000000..54255158 --- /dev/null +++ b/plugins/cursor/rules/desktop-commander-default.mdc @@ -0,0 +1,10 @@ +--- +description: Require Desktop Commander MCP by default for local filesystem, terminal, process, search, and workspace operations. +alwaysApply: true +--- + +For local filesystem, terminal, process, search, and workspace operations, use Desktop Commander MCP by default. + +If Desktop Commander MCP is not used for a local operation, do not proceed silently. You must explicitly state why Desktop Commander MCP is not suitable for that specific operation. + +Never use built-in local tools as a convenience fallback when Desktop Commander MCP can handle the operation. You can check the `desktop-commander-overview` SKILL for Desktop Commander MCP tool guidance. From b91a716450cbf2cdeafb940f6265e8b2f1c4e60e Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Wed, 29 Apr 2026 17:12:01 +0300 Subject: [PATCH 06/10] Soften Cursor plugin default rule --- plugins/cursor/rules/desktop-commander-default.mdc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cursor/rules/desktop-commander-default.mdc b/plugins/cursor/rules/desktop-commander-default.mdc index 54255158..e4e80ea4 100644 --- a/plugins/cursor/rules/desktop-commander-default.mdc +++ b/plugins/cursor/rules/desktop-commander-default.mdc @@ -3,7 +3,7 @@ description: Require Desktop Commander MCP by default for local filesystem, term alwaysApply: true --- -For local filesystem, terminal, process, search, and workspace operations, use Desktop Commander MCP by default. +For local filesystem, terminal, process, search, and workspace operations, prefer Desktop Commander MCP by default. If Desktop Commander MCP is not used for a local operation, do not proceed silently. You must explicitly state why Desktop Commander MCP is not suitable for that specific operation. From d748aa9ca93f775b7492c7dc2cfb7791544c64a6 Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Thu, 30 Apr 2026 09:07:13 +0300 Subject: [PATCH 07/10] Refine Cursor plugin default rule --- plugins/cursor/rules/desktop-commander-default.mdc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/cursor/rules/desktop-commander-default.mdc b/plugins/cursor/rules/desktop-commander-default.mdc index e4e80ea4..32c12cdc 100644 --- a/plugins/cursor/rules/desktop-commander-default.mdc +++ b/plugins/cursor/rules/desktop-commander-default.mdc @@ -1,10 +1,10 @@ --- -description: Require Desktop Commander MCP by default for local filesystem, terminal, process, search, and workspace operations. +description: Prefer Desktop Commander MCP for local filesystem, terminal, process, search, and workspace operations. alwaysApply: true --- -For local filesystem, terminal, process, search, and workspace operations, prefer Desktop Commander MCP by default. +For local filesystem, terminal, process, search, and workspace operations, use Desktop Commander MCP by default. If Desktop Commander MCP is not used for a local operation, do not proceed silently. You must explicitly state why Desktop Commander MCP is not suitable for that specific operation. -Never use built-in local tools as a convenience fallback when Desktop Commander MCP can handle the operation. You can check the `desktop-commander-overview` SKILL for Desktop Commander MCP tool guidance. +You can check the `desktop-commander-overview` SKILL for Desktop Commander MCP tool guidance. From ceb8f24c55c0b90c0123e8778d3985a06507d6f5 Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Thu, 30 Apr 2026 09:27:12 +0300 Subject: [PATCH 08/10] Refine Cursor plugin guidance --- .cursor/rules/desktop-commander-default.mdc | 8 ++++++++ plugins/cursor/rules/desktop-commander-default.mdc | 4 +--- plugins/cursor/skills/desktop-commander-overview/SKILL.md | 4 ++++ 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 .cursor/rules/desktop-commander-default.mdc diff --git a/.cursor/rules/desktop-commander-default.mdc b/.cursor/rules/desktop-commander-default.mdc new file mode 100644 index 00000000..f61818a8 --- /dev/null +++ b/.cursor/rules/desktop-commander-default.mdc @@ -0,0 +1,8 @@ +--- +description: Prefer Desktop Commander MCP for local filesystem, terminal, process, search, and workspace operations. +alwaysApply: true +--- + +For local filesystem, terminal, process, search, and workspace operations, prefer Desktop Commander MCP, especially for persistent shells, long-running processes, file reads, structured documents, large local data files, SSH workflows, and process inspection. + +You can check the `desktop-commander-overview` SKILL for Desktop Commander MCP tool guidance. diff --git a/plugins/cursor/rules/desktop-commander-default.mdc b/plugins/cursor/rules/desktop-commander-default.mdc index 32c12cdc..f61818a8 100644 --- a/plugins/cursor/rules/desktop-commander-default.mdc +++ b/plugins/cursor/rules/desktop-commander-default.mdc @@ -3,8 +3,6 @@ description: Prefer Desktop Commander MCP for local filesystem, terminal, proces alwaysApply: true --- -For local filesystem, terminal, process, search, and workspace operations, use Desktop Commander MCP by default. - -If Desktop Commander MCP is not used for a local operation, do not proceed silently. You must explicitly state why Desktop Commander MCP is not suitable for that specific operation. +For local filesystem, terminal, process, search, and workspace operations, prefer Desktop Commander MCP, especially for persistent shells, long-running processes, file reads, structured documents, large local data files, SSH workflows, and process inspection. You can check the `desktop-commander-overview` SKILL for Desktop Commander MCP tool guidance. diff --git a/plugins/cursor/skills/desktop-commander-overview/SKILL.md b/plugins/cursor/skills/desktop-commander-overview/SKILL.md index 56c14bff..7fc41024 100644 --- a/plugins/cursor/skills/desktop-commander-overview/SKILL.md +++ b/plugins/cursor/skills/desktop-commander-overview/SKILL.md @@ -33,10 +33,14 @@ Each example names the actual tool sequence. Calls below are written in pseudoco ### "Debug this production issue" +Before running production-impacting SSH commands, explain the intended action and get user confirmation when the risk is non-trivial. + `start_process("ssh user@prod.example.com", timeout_ms=...)` opens a long-lived SSH session and returns a PID. `interact_with_process(pid, "tail -f /var/log/app.log\n")` starts streaming logs. Subsequent turns: `read_process_output(pid, offset=-50)` to see the last 50 lines as they arrive, `interact_with_process(pid, "...")` to run diagnostic commands in the same session. `force_terminate(pid)` to close the session when done — for sessions opened by `start_process`, `force_terminate` is the correct cleanup tool; `kill_process` is for arbitrary OS PIDs found via `list_processes`. ### "Deploy this to staging" +Before deploys, restarts, migrations, or other environment-changing commands, summarize the action and confirm with the user unless they already explicitly asked for that exact operation. + `start_process` for the deploy command (could be a script, an SSH-piped command, or `kubectl`/`gh` etc.). `read_process_output` to track output and surface errors. If the deploy needs an interactive confirmation, `interact_with_process(pid, "yes\n")`. The session stays alive while the agent watches for completion or rollback. ### "Run the dev server and iterate on the API" From 376ba3c8df01a6a1cab9301ea624bed33135525e Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Thu, 30 Apr 2026 09:30:30 +0300 Subject: [PATCH 09/10] Remove local Cursor rule from plugin PR --- .cursor/rules/desktop-commander-default.mdc | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .cursor/rules/desktop-commander-default.mdc diff --git a/.cursor/rules/desktop-commander-default.mdc b/.cursor/rules/desktop-commander-default.mdc deleted file mode 100644 index f61818a8..00000000 --- a/.cursor/rules/desktop-commander-default.mdc +++ /dev/null @@ -1,8 +0,0 @@ ---- -description: Prefer Desktop Commander MCP for local filesystem, terminal, process, search, and workspace operations. -alwaysApply: true ---- - -For local filesystem, terminal, process, search, and workspace operations, prefer Desktop Commander MCP, especially for persistent shells, long-running processes, file reads, structured documents, large local data files, SSH workflows, and process inspection. - -You can check the `desktop-commander-overview` SKILL for Desktop Commander MCP tool guidance. From b56fe7def74d5d8331d7f1fd0626f6c79984e40a Mon Sep 17 00:00:00 2001 From: edgarssskore Date: Thu, 30 Apr 2026 09:37:21 +0300 Subject: [PATCH 10/10] Align Cursor plugin descriptions --- .cursor-plugin/marketplace.json | 2 +- plugins/cursor/.cursor-plugin/plugin.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index d19d76ae..6d219dd9 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -5,7 +5,7 @@ "email": "es@desktopcommander.app" }, "metadata": { - "description": "Desktop Commander — terminal control, file work, and document handling on the user's actual machine.", + "description": "MCP server for terminal commands, process management, and file operations across text, code, PDF, DOCX, Excel, images, and structured data", "version": "0.1.0", "pluginRoot": "plugins" }, diff --git a/plugins/cursor/.cursor-plugin/plugin.json b/plugins/cursor/.cursor-plugin/plugin.json index bafce266..2d5f678b 100644 --- a/plugins/cursor/.cursor-plugin/plugin.json +++ b/plugins/cursor/.cursor-plugin/plugin.json @@ -2,7 +2,7 @@ "name": "desktop-commander", "displayName": "Desktop Commander", "version": "0.1.0", - "description": "Desktop Commander gives Cursor agents reach across the user's actual computer — files, folders, terminals, documents, and connected apps — beyond the IDE sandbox.", + "description": "MCP server for terminal commands, process management, and file operations across text, code, PDF, DOCX, Excel, images, and structured data", "author": { "name": "Desktop Commander", "email": "es@desktopcommander.app"