Skip to main content
Glama
cander0815

DSH Computer MCP

by cander0815

DSH Computer MCP

让 DeepSeek Harness 通过 MCP 操作另一台电脑上的文件,并按需执行命令。

Harness 可以运行在服务器、NAS 或另一台电脑上。目标电脑运行连接器,选择允许访问的目录后,Harness 即可通过内网或 Tailscale 读写文件、搜索内容、移动文件和执行开发任务。连接器使用标准 Streamable HTTP MCP 协议,通过官方 MCP 客户端接入 Harness。

目标电脑无需安装 Node.js、Python 或完整 Harness;执行命令需要的 Git、编译器等工具仍需自行安装。

主要功能

  • 远程文件操作:浏览目录、按名查找、分段读取、片段编辑、整体写入、移动与重命名。

  • 可恢复删除:将普通文件移入系统废纸篓或回收站,提醒用户确认后自行清空。

  • 按需执行命令:默认关闭,开启后返回命令输出、退出码和超时状态。

  • 目录授权:支持多个目录,文件工具拒绝越界路径和子路径符号链接。

  • 本地配置页:启动后自动打开,查看通信状态、当前权限和日志位置。

  • 每日日志:记录连接、工具操作、执行结果及错误,便于排查问题。

  • 跨平台连接:支持 Windows、Intel Mac 和 Apple Silicon Mac,通过内网 IP 或 Tailscale 连接。

Related MCP server: remote-desktop-commander

支持平台

发布包

系统

windows-amd64

Windows 10/11,64 位 Intel/AMD

macos-amd64

Intel Mac,macOS 10.15 及以上

macos-arm64

Apple Silicon Mac,macOS 11 及以上

另提供 Linux amd64 程序和源码。Windows ARM 和 32 位 Windows 暂不支持。Windows 与 macOS 10.15 的完整行为仍待实机验证。

快速开始

1. 在要操作的电脑上运行连接器

  1. 从本仓库的 Releases 页面下载对应系统的 ZIP,解压到固定目录。

  2. Windows 运行 启动.cmd;Mac 运行 启动.command,或在终端运行 ./dsh-computer-mcp。

  3. 程序默认打开本地配置页。未打开时,复制终端显示的完整配置页地址到浏览器;保留地址中 # 后的管理令牌。

  4. 选择允许访问的目录并保存,可以添加多个目录。

  5. 如需执行命令,开启“允许 AI 在此电脑执行命令”;默认关闭。

  6. 根据网络选择内网或 Tailscale 地址,复制连接配置,或下载配对文件。

保持程序运行。关闭程序或电脑休眠后,Harness 将无法访问这台电脑。按 Ctrl+C 退出。当前不提供开机自启、后台服务安装或设备自动发现。

Mac 程序使用 ad-hoc 签名,未经过 Apple 公证;Windows 程序未使用商业代码签名,首次启动可能出现系统提示。

2. 安装 DSH 插件并配置 MCP

本仓库同时提供可安装的 DeepSeek Harness Profile Bundle(dsh-plugin)。电脑端程序运行在要操作的电脑上,配置型 bundle 安装在运行 Harness 的环境中;安装插件不会自动安装或启动电脑端程序。

已验证的组合为 Node.js 24 和 DSH 0.2.0-rc.2,使用 DSH 自带的官方 @deepseek-ai/dsh-mcp-client。在已安装 dsh 命令的环境中执行:

dsh plugin --profile web add github:cander0815/dsh-computer-mcp

这是 GitHub 源码安装,当前未发布同名 npm 注册表包。该 bundle 不含 prepare 或其他安装时构建脚本,不需要授权构建。若使用不同 profile,请将 web 换为实际 profile 名称。

随后将电脑配置页下载的配对文件中的 url 和 token 设置为 Harness 进程的环境变量。以下为 POSIX Shell 示例,只使用占位符:

export DSH_COMPUTER_MCP_URL='http://<目标电脑地址>:18790/mcp'
export DSH_COMPUTER_MCP_TOKEN='<连接令牌>'
dsh --profile web

Windows PowerShell 示例:

$env:DSH_COMPUTER_MCP_URL = 'http://<目标电脑地址>:18790/mcp'
$env:DSH_COMPUTER_MCP_TOKEN = '<连接令牌>'
dsh --profile web

两个变量未完整填写时插件保持禁用,不尝试连接。必须设置在 Harness 进程的启动环境中,不要放进项目 .env 文件。后台服务或容器部署需将环境变量写入相应的私有启动配置,并安装到同一个持久 profile。令牌不要提交到公共仓库或发在投稿内容中。

如果此前已手工加载配置页生成的 local-computer patch,请先停用旧 patch,再使用 bundle,避免重复注册相同服务器名称。也可以继续使用原有手工 patch 接入方式;两种方式选一种即可。

修改配置或升级后,让 Harness 重新连接 MCP,刷新工具列表;必要时重启相应的 Harness 实例。

3. 告诉 AI 使用目标电脑的工具

可以在新会话中这样说明:

请使用 localcomputer MCP 操作连接的电脑。先调用 list_roots,确认设备、授权目录和当前权限,再使用对应的文件或命令工具。不要用 Harness 自带的服务器工具代替;找不到 MCP 工具时请明确告诉我。

Harness 原有工作区选择器仍显示 Harness 所在环境的目录。目标电脑文件通过 MCP 工具访问,不会自动出现在原工作区选择器中。

MCP 工具

  • list_roots:授权目录和 id。

  • list_directory:目录清单,最多 1000 项。

  • find_files:按文件名通配符查找文件(如 *.go),最多返回 200 个,路径相对授权目录。只匹配文件名,不支持 {a,b} 和含 / 的模式,会直接报错而不是返回空结果。

  • read_file:UTF-8 文本和整个文件的 SHA-256,最大 1 MiB;可用 offset、limit 按行分段读取。

  • edit_file:把文件中唯一出现的一段原文替换为新内容,改一处不必重写整个文件;原文找不到或出现多次都会拒绝。Windows 的 CRLF 文件可用 \n 原文匹配,换行风格保持不变。

  • write_file:新建或整体重写;覆盖必须提供最近读取的哈希,新建使用 new。缺少的上级目录自动创建。

  • create_directory:创建目录,缺少的上级目录一并创建。

  • move_file:在同一授权目录内移动或重命名文件、文件夹;目标已存在时拒绝,不覆盖。

  • delete_file:把授权目录内的一个普通文件移入系统废纸篓/回收站,不支持目录或永久删除;成功后提醒用户确认不再需要,再自行清空。

  • search_text:默认原样搜索,可选正则(regex)和文件名过滤(include);最多读取 1000 个文本文件、返回 100 结果,结果路径相对授权目录。跳过 .git、node_modules、.venv、venv、pycache、dist、target、.next,实际跳过的目录会列在结果的 skipped_dirs 中,把 path 指进这些目录时仍会搜索。find_files 同样跳过这些目录。

  • run_command:开启后才提供,程序和参数数组直接执行,不自动解析 Shell。默认 30 秒,最多 120 秒,输出最多 64 KiB。

文件工具拒绝越界和子路径符号链接,删除仅移入系统废纸篓/回收站。二进制、GBK 文本和大文件需要另行处理。命令使用当前电脑用户的系统权限,工作目录限制不等于操作系统沙箱;文件系统限制也不能抵御同用户的恶意进程竞争。

仅用于短任务,不托管后台服务。macOS/Linux 会清理命令进程组;Windows 超时用 taskkill 尽力清理进程树,脱离父进程的后台任务可能继续运行。旧版 Windows 非 UTF-8 命令输出可能需要设置编码。

不提供桌面鼠标键盘、远程浏览器或屏幕控制。文件保存在电脑上,但 AI 读取的内容会发送到服务器和所选模型。

日志与通信状态

操作日志默认保存在程序和启动脚本同目录,每天一个文件,名称为 YYYY-MM-DD.log。每条 JSON 记录包含本机时间(精确到秒)、工具名称、目录与路径、成功或失败;命令日志还包含参数、输出、退出码和超时状态。

文件读写日志不记录文件正文,也不记录连接令牌。命令输出和 Shell 字符串可能包含敏感内容,日志应保存在本机,不要上传公共仓库。

配置页每三秒更新通信状态,显示最近通信时间、客户端、进行中的请求、当前权限和日志位置。绿色表示近期有通信或正在操作;超过 90 秒无通信显示空闲。由于 MCP 不依赖持续心跳,空闲不等于断线。

权限与管理员模式

Mac 提供两种启动脚本:

  • 启动.command:以普通用户权限运行。

  • 启动-sudo.command:在本机终端输入系统密码,以管理员权限运行。

先关闭正在运行的连接器,再切换启动方式。两种方式共用原用户配置与连接令牌,无需重新配对。编辑文件保留原所有者,新建文件和目录继承父目录所有者。

MCP 向模型说明当前权限;权限不足时,模型应提示用户在本机切换启动方式,不能自行提权或索取系统密码。sudo 不会自动绕过 macOS 隐私权限或系统完整性保护。

Windows 权限取决于启动程序的用户,当前不提供独立管理员启动脚本。

文件回收

delete_file 仅接受授权目录内的普通文件,也可用于普通二进制文件;不删除文件夹,不提供永久删除或自动清空功能。

成功后,工具要求模型提醒用户:确认不再需要,再自行清空废纸篓或回收站以释放空间;清空前可尝试恢复。回收失败时,不应改用 rm、Remove-Item 等永久删除命令作为替代。

Mac 使用系统废纸篓,sudo 模式仍使用原用户的废纸篓。Windows 需要 PowerShell 和本地固定磁盘上的可用回收站;回收前保留保护副本,系统未确认回收时尝试恢复。意外退出或清理失败可能留下 .dsh-trash-recovery-* 文件,请检查原文件与回收站后处理。此过程需要额外磁盘空间。Linux 需要 gio 和可用的系统回收站。

网络与配置

默认 MCP 端口为 18790,本地配置页端口为 18791。Harness 所在环境必须能访问目标电脑的 MCP 端口;防火墙、路由器客户端隔离和网络路由可能影响连接。使用 Tailscale 时,两端必须在线并允许互访。

HTTP 仅适用于可信内网;跨网络可通过 Tailscale 建立加密链路。不要将 MCP 工具端口直接映射到公网。

默认配置位置:

系统

配置文件

macOS

~/Library/Application Support/DSHComputerAgent/config.json

Windows

%APPDATA%/DSHComputerAgent/config.json

Linux

~/.config/DSHComputerAgent/config.json

配置保存设备名称、授权目录、命令开关和连接令牌。移走配置后重新启动会生成新令牌,需要重新配对。

可用参数:

参数

用途

-config <路径>

指定独立配置文件

-listen <监听地址>

指定 MCP 监听地址与端口

-admin <本机监听地址>

指定本地配置页地址,必须使用本机回环地址

-log-dir <目录>

指定日志目录

-no-browser

禁用自动打开配置页

在同一台电脑运行多个独立连接器时,应使用不同配置文件、连接令牌、MCP 端口和管理端口。

构建与验证

Go 程序无第三方 Go 依赖。当前兼容构建使用 Go 1.22.12;该工具链已停止官方维护,此版本面向可信网络内的预览使用。

go test -race -ldflags=-linkmode=external ./...
go vet ./...
GO_BIN=/path/to/go1.22.12/bin/go sh build.sh
python3 package-release.py

build.sh 在 macOS 运行,构建各平台程序,并为 Mac 产物补齐 Mach-O UUID、标注最低系统版本与重新签名。package-release.py 生成 ZIP、启动脚本和 SHA256 校验文件。

测试范围和已知限制见 VERIFICATION.md。

开源许可证

本项目使用 MIT License。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables remote filesystem and CLI access to a Windows machine over LAN through MCP, with file read/write and command execution capabilities.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables secure remote access to your computer's filesystem and terminal through MCP, allowing AI assistants to manage files, run commands, and automate tasks from anywhere via a hosted relay.
    162
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables remote MCP clients like ChatGPT to run shell commands and manage files on your local machine via a Cloudflare tunnel, exposing tools for file operations, search, and task management.
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables ChatGPT to access a remote computer or server via an outbound-only agent, providing filesystem inspection, file editing, Git inspection, and optional shell execution through MCP.
    MIT