DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Windows Mcp Lite — DSH Plugin for DeepSeek Harness
← Plugins
W

dsh-windows-mcp-lite

Windows Mcp Lite

Config-only DeepSeek Harness bundle that mounts the in-box MCP client bridge against CursorTouch/Windows-MCP; no plugin code, least-privilege tool set by default.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:sheilacraig/dsh-windows-mcp-lite#1005e06bfb9934160349db09d3846e6e572f2d33
READMECompatibilityVersions

Compatibility and provenance

Windows Mcp Lite is published as dsh-windows-mcp-lite and currently resolves to version 1.0.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
10/12/2026

Versions

1.0.0stable
10/12/2026

Related plugins

Loading related plugins…

Latest
1.0.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/14/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in integrations-communication.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseAb Publishdsh-ab-publishBrowser-automation publishing tool that logs into and posts to arbitrary websites, in one publishable plugin packageAb Wechat Scrapedsh-ab-wechat-scrape--- description: "The out-of-tree wechat_scrape tool: retrieves WeChat official-account articles, filters promotional blocks, and saves each as a Markdown file, for maintainers of this machine's dsh profiles." kind: "package-reference" ---Remote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and r

README

dsh-windows-mcp-lite

Config-only bridge from DeepSeek Harness to CursorTouch/Windows-MCP.

English | 中文

It mounts the MCP client bridge that already ships inside DeepSeek Harness and points it at the upstream Windows-MCP server over stdio. The whole integration is cordis.patch.yml — about 25 lines, no JavaScript, and you can read it to the end before you install it.

DSH agent
  └─ mcp__windows__Snapshot / Click / Type / ...
       └─ @deepseek-ai/dsh-mcp-client        (ships with DeepSeek Harness)
            └─ uvx windows-mcp@0.8.8 serve   (stdio child process)
                 └─ your desktop: UI Automation tree, Win32 input, screen capture

What this deliberately does not do

These are the design decisions, not a missing-feature list:

  • No Host plugin. There is no index.js. Nothing of ours runs inside your harness process.
  • No web routes. This plugin adds no HTTP endpoint, so it adds no unauthenticated attack surface and no reason to keep your web host on loopback beyond what you already chose.
  • No state file. No ~/.dsh/...state.json, no browser storage keys.
  • No installer that writes to your profile. npm run prewarm installs and verifies the upstream server in your own terminal, and never edits a profile patch for you.
  • No runtime dependency and no build step. dependencies is empty; there is nothing to compile and no allowBuilds approval to grant.
  • No absolute path for your machine. The bridge invokes uvx from PATH; a test in this repo fails the build if a machine-specific path appears in a published file.
  • No peerDependencies. The row names @deepseek-ai/dsh-mcp-client; it never imports it, and DSH resolves shipped packages from its own installation. This follows DSH's own templates/mcp bundle shape, which declares none. A peer range would be a hard activation gate whose SemVer prerelease rules silently reject valid hosts; engines.dsh declares the host range for the storefront instead.
  • No screenshots.json. There is no interface to photograph. Declaring artwork for a configuration file would be decoration, not evidence; the storefront falls back to whatever it can extract.

If you want an in-app dependency installer, a default-off "Computer Use" toggle, or a doctor tool, other plugins in this ecosystem provide those. This one trades them for being small enough to audit in one screen — which matters more than usual for a plugin that hands over your keyboard, mouse and screen.

Requirements

  • Windows 10 or 11. The upstream server is Windows-only.
  • DeepSeek Harness with the in-box MCP client bridge. Declared range: >=0.2.0-rc.1 <0.3.0-0; the author verified this plugin on 0.2.0-rc.2 (desktop).
  • uv on the PATH of the process that runs DSH. uvx starts the upstream server and builds its isolated environment. If you installed uv with its official installer, this is already true.
  • Optional: a model that accepts image input, if you want Screenshot to arrive as a real image. Without it the bridge degrades the image to a text diagnostic; Snapshot returns plain text and needs no vision at all.

Install

From the app: Settings → Plugins → Add plugin, and enter one of

dsh-windows-mcp-lite                                # npm package
github:sheilacraig/dsh-windows-mcp-lite             # GitHub repository
C:\path\to\a\local\checkout                         # absolute path

From a CLI-owned profile:

dsh plugin --profile <profile> add dsh-windows-mcp-lite

The Electron desktop profile belongs to the app; install through its plugin panel there.

Then restart DSH, so the new patch layer composes at startup.

First run is the slow one

uvx builds an isolated environment for the upstream server the first time, which downloads a few tens of megabytes of Python dependencies. On a slow link that is minutes, and the bridge gives up on the initial connection long before that; after the dependencies are cached, startup is quick.

Do it outside the harness instead, where there is no timeout:

npm run prewarm

The script runs uvx windows-mcp@0.8.8 serve --exclude-tools ... — the same argv the bridge uses — speaks initialize + tools/list to it, prints the server identity, the time it took, and the exact tool list, then exits. It is the same process the bridge will start, so a successful run means the harness side has nothing left to download or discover. With the environment warm, the author's run reached initialize in 2.1 s.

What the model gets

16 tools, named mcp__windows__<Tool>. Upstream 0.8.8 publishes 21; this plugin excludes five by default (see Least privilege).

ToolWhat it does
ScreenshotScreen capture with cursor position and window list
SnapshotFull desktop state: accessibility tree, interactive elements, scrollable regions
DisplayInventoryDisplay layout, work areas, DPI
Click, Move, ScrollMouse input, including explicit drag
Type, ShortcutKeyboard input
Wait, WaitForFixed delay, or poll the UI until a condition holds
MultiSelect, MultiEditBulk selection / bulk text entry
ClipboardRead and set clipboard content
NotificationWindows toast notifications
AppLaunch an application, resize or focus a window
ControlStatusWho owns the desktop right now — upstream cannot exclude this one

Verify

  1. Run npm run prewarm once (above). It proves the server and the pinned version.
  2. In DSH, ask the agent to call mcp__windows__DisplayInventory. It only reads display geometry — it does not click or type.
  3. Then mcp__windows__Snapshot for the accessibility tree as text.

Least privilege by default

--exclude-tools PowerShell,Registry,FileSystem,Process,Scrape — five upstream tools stay off, because DeepSeek Harness already owns shell, file, registry and process access under its own approval policy and sandbox. Enabling upstream's copies would add a second path to the same capabilities with none of those controls.

To change the set, override the row in your profile patch (see below). Removing --exclude-tools restores all 21 tools.

Configuration

Every default lives in cordis.patch.yml. To change one, override the row in your profile's patch — do not edit the installed copy:

# $DSH_HOME/profiles/<profile>/cordis.patch.yml
- id: windows-mcp-lite
  config:
    serverName: windows
    transport: stdio
    command: uvx
    args: [windows-mcp@0.8.8, serve, --exclude-tools, "PowerShell,Registry,FileSystem,Process,Scrape,App"]
    toolCallTimeoutMs: 120000
    failOnStartupError: false
    env:
      ANONYMIZED_TELEMETRY: "false"
      WINDOWS_MCP_DISABLE_FLASH: "1"

Two things about that override, both of which cost people time:

  • A patch replaces the entire config object; it does not deep-merge. Every key you leave out is a key you delete. serverName and transport are required, command is required for stdio, url for streamable-http.
  • serverName decides every tool name (mcp__<serverName>__<tool>). Changing it renames the whole tool set and invalidates prompt-cache prefixes.

Only one Windows-MCP bridge per profile. Two rows using the same serverName conflict, and the second one fails at load. Disable any other Windows-MCP plugin in the same profile before enabling this one.

Prefer a pre-installed interpreter over uvx? uv tool install windows-mcp, then set command: windows-mcp with args: [serve, --exclude-tools, ...]. Prefer a resident HTTP server? Switch transport to streamable-http and give url — note that the HTTP form has no env, so telemetry and flash settings then belong to how you start the server.

Security

Installing this gives an agent your mouse, keyboard, clipboard and screen, through a process that runs with your user rights. Judge it as "handing over this desktop session".

  • stdio, not a listener. The bridge starts a child process connected by pipes. Nothing binds a port.
  • Least privilege by default, as described above.
  • Upstream telemetry is off in the shipped config (upstream reports anonymously to PostHog by default). The config also turns off the orange capture border.
  • The harness file sandbox does not apply to it. MCP tool calls are ordinary tool calls, so tool approval resolves them; the sandbox is implemented in the harness's own file and shell tools. This child process is not confined by it.
  • Control is best-effort, not a boundary. Upstream lets a real user take the desktop back by moving the physical mouse or pressing Ctrl+Alt+Shift+Backspace, and external commands it already launched keep running after a takeover.
  • Pinned upstream version. windows-mcp@0.8.8 is a fixed version, so an upstream release cannot silently change what this bridge does. Bump it deliberately and re-run npm run prewarm.
  • Read cordis.patch.yml before installing. That file is the entire plugin; everything else here is metadata, documentation and a test.

Troubleshooting

SymptomCause and what to do
USER_CONTROL on a tool call, or ControlStatus reports state: "user"Upstream gives the desktop to the person first and hands it to the agent only after about 10 seconds without physical input. You own it right now, and wait_seconds is the idle time it is still asking for. Move the mouse or press Ctrl+Alt+Shift+Backspace to take control back deliberately. ControlStatus keeps answering while everything else is blocked, so it is the one call to make when a tool refuses.
No mcp__windows__* tools at allThe bridge could not start the server. Run npm run prewarm in a terminal — it fails with the same reason, plus hints. The usual cause is uvx missing from the PATH of the process that runs DSH: a desktop shortcut or editor can carry a different PATH than the shell where you installed uv. The harness log has an mcp-client(windows) line.
Tools vanished after an upgradeTool names are mcp__<serverName>__<tool>. Changing serverName, or unpinning the upstream version to one whose tool names differ, renames the whole set.
Screenshot arrives as textThe current model does not accept image input. Snapshot is the text-first alternative: it extracts the accessibility tree instead of pixels.
Every desktop tool is refused at onceA second Windows-MCP row is enabled in the same profile with the same serverName; only the first one loads. Disable the other plugin.

Development

npm install     # devDependency: js-yaml, for the test only
npm test        # node --test — asserts the bridge invariants
npm run prewarm # installs and verifies the upstream server

npm test enforces, among other things: exactly one inserted row pointing at @deepseek-ai/dsh-mcp-client; a serverName valid for tool names; a pinned windows-mcp@x.y.z argument; the documented exclude list; the documented tool count; and that no absolute path or drive letter appears in any published file.

Uninstall

Remove the bundle from Settings → Plugins, or delete the row from the profile patch. Disabling the bundle removes the whole configuration with it. Nothing is left behind: this plugin writes no files.

License and attribution

MIT — see LICENSE.

  • All desktop automation is CursorTouch/Windows-MCP (MIT). This repository only wires it up.
  • The MCP client bridge belongs to DeepSeek Harness and is not redistributed here.
  • Not affiliated with DeepSeek or with the Windows-MCP authors.