关于 SassyMCP
SassyMCP 是一款独立运行的 MCP 服务,整合文件、Shell、桌面、GitHub、Android 和系统操作工具,面向希望用单一进程访问多类工具的用户,并支持按需加载工具组。
主要功能
- 01涵盖 39 个模块的 278 个工具
- 02按需加载所选工具组
- 03桌面与 Android 屏幕监控
- 04支持暂停与恢复的 Android 界面控制
- 05将删除目标暂存以供审核
- 06GitHub 与 Shell 操作
适用场景
- 01通过 MCP 客户端使用文件和 Shell 工具
- 02查看并操作桌面或 Android 屏幕
- 03管理 GitHub 仓库与拉取请求
- 04暂存删除操作供人工审核
MCP 相关
SassyMCP 向 MCP 客户端提供工具组和提示词,兼容 Claude Desktop、Cursor 和 Windsurf 等客户端。工具组可按需选择加载。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
101收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| archive | string | 是 | |
| destination | string | 否 |
详细介绍
SassyMCP
一个 MCP 服务,替代所有其他服务。
278 个工具 | 39 个模块 | 18 个工具组 | 替代 75+ 个 MCP 服务 | 约 35MB 的独立 exe
上次更新:2026-09-21 — v1.16.0 | 所有工具均已解锁;支持者许可证可选
兼容 Claude Desktop、Grok Desktop、Cursor、Windsurf 以及任何 MCP 客户端。
官方 GitHub MCP 服务存在严重的 SHA 处理错误。 SassyMCP 的 GitHub 模块使用正确的 blob SHA 查找、恰当的路径编码、通过 Git Data API 进行原子多文件提交、带指数退避的重试逻辑,以及速率限制感知。它是一个可直接替换且真正能用的方案。
为什么选择 SassyMCP?
MCP 生态系统支离破碎。需要文件操作?安装 Filesystem 服务。需要终端?安装 Desktop Commander。需要 GitHub?再装一个服务。需要 Android?再装一个。需要屏幕截图?又是一个。最终,你会装上 6-10 个独立的 MCP 服务,每个都会占用上下文窗口,各自有自己的配置、错误和更新周期。
SassyMCP 替代 75+ 个独立的 MCP 服务——包括 Desktop Commander(5.9k 颗星)、Windows-MCP(5k 颗星)、GitHub MCP Server(28.6k 颗星)、Anthropic 官方的 Filesystem 和 Memory 服务、mobile-mcp(4.4k 颗星),以及其他几十种服务——只需一个约 35MB 的 exe。
主要差异化优势:
- 智能工具加载 — 仅加载你使用的工具组。默认情况下,上下文窗口开销从约 25K 个令牌降至约 5K 个令牌。
- 动态视觉 — 实时监控桌面和 Android 屏幕,并检测变化。不再需要截图后碰运气。
- Android 交互 — 通过 UI 无障碍树全面控制手机:点击、滑动、输入,并自动检测敏感上下文(自动阻止身份验证/支付界面)。
- 暂停/恢复 — 用户可接管手机完成手动步骤(登录、2FA、选择账户),AI 观察并学习,然后自主继续操作。
- 使用情况跟踪 — 使用轻量级 ML 对工具调用进行评分,并采用指数衰减。你最常用的工具会优先加载。
- 上下文估算 — 内置工具,可测量工具定义占用你的 200K 上下文窗口的多少空间。
- 响应精简 — 移除 GitHub API 响应中冗余的 URL 元数据(体积缩小 40-70%)。
- 安全删除 — 所有 Shell 中的删除命令(
rm、del、Remove-Item等)都会被拦截。目标文件不会被销毁,而是被移至同一目录下的_DELETE_/暂存文件夹,供人工审核——防止 AI 产生幻觉导致误删。 - 引导式设置 — 向导将引导你设置角色、GitHub 令牌、SSH 凭据,并可选地发现工具。
替代对象
| 领域 | SassyMCP 模块 | 替代对象 | 主要替代方案 |
|---|---|---|---|
| 文件操作 | FileOps, Editor | 11 个文件系统/编辑器 MCP 服务 | Filesystem(Anthropic 官方) |
| Shell/终端 | Shell, Session | 5 个 Shell MCP 服务 | Desktop Commander(5.9k stars) |
| 桌面自动化 | UIAutomation, Vision | 9 个桌面 MCP 服务 | Windows-MCP(5k stars) |
| GitHub/Git | GitHub Quick, GitHub Full | 5 个 GitHub/Git MCP 服务 | GitHub MCP Server(28.6k stars) |
| Android/手机 | ADB, PhoneScreen | 9 个移动端 MCP 服务 | mobile-mcp(4.4k stars) |
| 网络扫描 | NetworkAudit | 8 个 nmap/安全 MCP 服务 | mcp-for-security(601 stars) |
| 安全审计 | SecurityAudit | 8 个安全 MCP 服务 | mcp-security-hub(509 stars) |
| SSH/远程 Linux | Linux | 7 个 SSH MCP 服务 | ssh-mcp(365 stars) |
| 记忆/状态 | Memory, StateManager | 7 个记忆 MCP 服务 | mcp-memory-service(1.6k stars) |
| OCR/屏幕读取 | Vision | 7 个 OCR/视觉 MCP 服务 | PaddleOCR MCP |
| 网页检查 | WebInspector, Utility | 7 个网页/抓取 MCP 服务 | Fetch(Anthropic 官方) |
| Windows 系统 | Registry, ProcessManager, Clipboard, EventLog, Bluetooth | 13 个 Windows MCP 服务 | Windows-MCP(5k stars) |
**此外,还提供没有对应 MCP 服务的功能:**在检测到敏感上下文时暂停/恢复手机操作(在登录/支付屏幕上自动拦截)、运维钩子(14 个专家操作手册)、安全删除拦截、Windows 自启动取证、Android+Windows 剪贴板同步、按使用频率加权的智能加载。
许可
所有工具组均已解锁,所有人均可使用,无需密钥。 从 v1.13.0 起,发布模式改为全有或全无——没有免费版/专业版之分,没有受限工具组,也没有功能受限的演示版。下方模块表中列出的 278 个工具就是完整产品,开箱即用。
支持者许可证(可选): 仍可通过 LemonSqueezy 购买 SassyMCP 的一次性支持者许可证(无订阅)。激活密钥后,系统会将你的机器登记为一个席位,并记录一个支持者等级,该等级会显示在启动横幅、控制面板和 VS Code 驾驶舱中——无论等级如何,所有工具都已解锁。购买一次即可支持开发;退款后该标识会自动撤销。
激活流程(支持者):
- 在
https://sassyconsultingllc.com/store购买——LemonSqueezy 会通过电子邮件向你发送密钥(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)。 - 从你的 AI Agent 激活:
sassy_setup_license action=activate key=... - 或者在终端中运行:
sassymcp.exe setup,打开交互式菜单。
**离线运行:**激活后,本地的 HMAC 签名负载可让支持者等级完全离线验证。系统每周会向 LS 重新验证,以检测退款和取消;同时,启动时会更快地向 SassyMCP 计费验证服务检查,从而将退款到撤销的延迟缩短至数秒。许可证文件缺失、过期、被篡改或损坏时,只会显示免费标识——工具可用性绝不受影响。
向后兼容:SASSYMCP_LICENSE_BYPASS=1(旧版开发绕过开关,曾用于解锁受限工具组)仍会被接受并忽略——已没有任何限制需要绕过。
运行受监督的服务(sassymcp supervise)
对于始终运行或远程部署,请在内置监督器下运行 SassyMCP,而不是使用裸启动脚本:
sassymcp.exe supervise start # bridge only (127.0.0.1:21001)
sassymcp.exe supervise start --tunnel-mode managed # also run the cloudflared tunnel as a child
sassymcp.exe supervise status # JSON status; exit code != 0 if unhealthy
sassymcp.exe supervise stop # graceful stop
监督器负责管理运行时目录树,并使其具备自我修复能力,且不会遗留孤儿进程:
- 绝不遗留孤儿进程。 强制终止监督器(崩溃、
kill -9、taskkill /f)时,也会一并终止所有子进程——在 Windows 上通过 Job Object(KILL_ON_JOB_CLOSE),在 Linux 上通过进程组和PR_SET_PDEATHSIG。不会留下持有卡死的 SQLite/WAL 锁的桥接进程;旧版基于taskkill的脚本就会导致这种情况。 - 自我修复。 子进程崩溃后会以指数退避方式重启;如果陷入崩溃循环,则会干净地放弃,而不会持续循环。
- 检测卡死。 HTTP 就绪探针会重启卡死但仍在运行的桥接进程——这是 Windows 计划任务永远无法检测到的故障。
- 控制功能可在崩溃后继续使用。
$SASSYMCP_HOME下的 pidfile 和磁盘注册表使supervise status/stop即使在桥接进程已停止时也能正常工作,方便操作员或 Agent 恢复卡死的系统。
start-supervised.bat 将此功能封装为推荐的 Windows 启动器。stdio 模式(Claude Desktop 管道)由客户端管理,因此有意不受监督。
模块
| 模块 | 工具数 | 分组 | 描述 |
|---|---|---|---|
| Meta | 11 | meta | 上下文估算、工具使用分析、分组管理 |
| Batch | 1 | meta | 在一次调用中批量分发多个工具 |
| FileOps | 10 | core | 读取、写入、搜索、移动、复制、编辑、创建目录、获取文件信息、安全删除 |
| Shell | 2 | core | 执行 PowerShell、CMD、WSL,支持语法规范化和删除拦截 |
| UIAutomation | 6 | core | 桌面状态、点击、输入、快捷键、屏幕截图、屏幕信息 |
| Editor | 2 | core | 精准查找替换、多处编辑 |
| Audit | 4 | core | 读取和搜索审计日志、清除日志、跟踪误报 |
| Session | 6 | core | 持久终端会话(启动、读取、发送、停止) |
| GitHub Quick | 6 | github_quick | 日常常用:push_files、get_file、issue、PR、保护设置 |
| GitHub Full | 80 | github_full | 完整的 GitHub API:仓库、问题、PR、操作、安全、gists |
| Persona | 7 | persona | 专家模式指令、决策框架、工程标准 |
| Utility | 11 | utility | 环境变量、toast、zip/tar/unzip/untar、HTTP 请求、文件差异 |
| SetupWizard | 7 | setup | 设置向导、GitHub 令牌指南、SSH 设置、工具检查器、许可证激活 |
| ToolsManager | 1 | setup | 外部工具引导和检测 |
| Observability | 3 | infrastructure | 健康状态、指标、工具统计 |
| StateManager | 3 | infrastructure | 跨会话持久化键值状态 |
| RuntimeConfig | 5 | infrastructure | 权限模式、运行时配置、最近的工具调用 |
| Offline | 3 | infrastructure | 离线回退状态和本地模型交接 |
| Memory | 9 | memory | 跨会话持久化记忆、里程碑、任务交接、模式学习 |
| Updater | 4 | updater | 版本检查、更新日志、自行更新 |
| ADB | 10 | android | Android shell、软件包、文件传输、logcat、屏幕截图 |
| PhoneScreen | 14 | android | UI 树读取器、手机快速查看/监视、点击/滑动/输入/按键、暂停/恢复、scrcpy |
| iPhone | 6 | iphone | iOS 设备信息、屏幕截图、系统日志、应用、IPA 安装——实验性功能,需要 libimobiledevice |
| NetworkAudit | 7 | system | netstat、ARP、WiFi 扫描、端口扫描、DNS、traceroute |
| ProcessManager | 5 | system | 跨平台进程列表/终止、系统信息 |
| Bluetooth | 3 | system | Windows + Android 蓝牙枚举 |
| EventLog | 3 | system | Windows 事件日志 + Android logcat |
| Clipboard | 4 | system | 跨平台剪贴板同步 |
| SecurityAudit | 7 | forensics | 哈希、权限、证书、APK、防火墙、Defender |
| Registry | 4 | forensics | 读取、写入、导出、自动运行取证(Windows) |
| Vision | 8 | v020 | 屏幕捕获、OCR、动态快速查看/监视/差异对比 |
| AppLauncher | 6 | v020 | 启动应用、聚焦/关闭/调整大小/贴靠窗口 |
| WebInspector | 5 | v020 | 安全标头、URL 截图、技术栈检测 |
| Crosslink | 7 | v020 | 通过 HTTP API + SQLite 进行跨会话消息传递 |
| Coordination | 4 | v020 | 多 Agent 协调看板和同伴委派 |
| Linux | 1 | linux | 通过 plink/OpenSSH 远程 SSH 执行 |
| Combos | 3 | combos | 一次调用执行多步骤工作流:PR 审查、手机观察、代码库 grep |
| Prompts | 0 | prompts | MCP 斜杠菜单快捷方式(无工具——仅提示词) |
| SelfMod | 0 | — | 已弃用的存根——自我修改功能已移除(无工具) |
数量根据已注册的工具集生成(39 个模块、18 个分组,共 278 个工具;prompts 分组提供的是 MCP 提示词,而非工具)。
完整的逐工具参考(生成版):docs/TOOLS.md。
iPhone 支持(实验性)
SassyMCP 可通过 libimobiledevice 使用 USB 与 iPhone 通信。此功能在 v1.16.0 中新增,目前仍处于实验阶段;通过 ADB 使用 Android 仍是成熟方案。
先决条件
- 安装 libimobiledevice:macOS 上运行
brew install libimobiledevice,Linux 上运行sudo apt install libimobiledevice-utils。Windows 主机的支持有限,请使用 WSL2 或 macOS/Linux 主机。 - 配对设备一次:运行
idevicepair pair,然后在 iPhone 上轻点 信任。iOS 17+ 要求先完成此配对步骤,工具才能看到设备。 - 如果连接了多部 iPhone,请传入
udid参数(来自sassy_iphone_list)以指定目标设备。
工具: sassy_iphone_list、sassy_iphone_info、sassy_iphone_screenshot、sassy_iphone_syslog(有界采集)、sassy_iphone_apps、sassy_iphone_install(需要 confirm='YES')。如果缺少二进制文件或受信任的设备,每个工具都会妥善处理并降级——你会收到安装提示或配对提醒,而不会看到回溯信息。
动态视觉
桌面端(Vision 模块)
传统的 MCP 截图无法感知屏幕内容——你只能截取一帧,并希望它正好是需要的画面。SassyMCP 的动态视觉改变了这一点:
| 工具 | 用途 |
|---|---|
sassy_screen_glance | 快速灰度截图,大小约为 3-6KB。可反复调用以“观察”屏幕。 |
sassy_screen_watch | 监控 N 秒,仅返回内容发生变化的帧(像素差异阈值)。 |
sassy_screen_diff | 前后对比——截取一帧,等待后再截取另一帧,返回两帧以及突出显示变化的差异图像。 |
这三种工具都使用灰度处理和高强度 JPEG 压缩,以尽量降低上下文开销。一次快速查看约为 2KB,而全彩截图约为 14KB。
Android(PhoneScreen 模块)
手机不只是一个摄像头目标——SassyMCP 还会读取其 UI 无障碍树:
| 工具 | 用途 |
|---|---|
sassy_phone_ui | 读取每个可见的 UI 元素——文本、描述、坐标、可点击/聚焦/选中状态。提供结构化数据,而非像素。 |
sassy_phone_state | 前台应用、屏幕开关状态、电池、WiFi、通知数量。 |
sassy_phone_glance | 通过直接管道获取低分辨率灰度手机截图(约 4-8KB)。 |
sassy_phone_watch | 在指定时长内监控 UI 树变化。仅在元素发生变化时返回快照。 |
手机交互
通过 ADB 提供完整的触控输入——AI 可以操作手机:
| 工具 | 用途 |
|---|---|
sassy_phone_tap | 点击屏幕坐标 |
sassy_phone_swipe | 在两点之间滑动 |
sassy_phone_type | 在聚焦的字段中输入文本 |
sassy_phone_key | 发送按键事件(HOME、BACK、ENTER、VOLUME 等) |
sassy_phone_open | 根据包名启动应用 |
敏感情境检测
所有交互工具(点击、滑动、输入)都会在执行前自动扫描 UI 树。如果检测到登录界面、付款表单、账户选择器、双重身份验证提示或权限对话框,工具将拒绝执行,并返回检测到的内容。随后 AI 会向你描述屏幕并询问如何处理。获得用户明确批准后,传入 confirmed=True。
安全删除(删除拦截)
AI Agent 可能会臆造具有破坏性的命令。SassyMCP 会拦截所有 Shell 和所有工具入口处的删除类命令,然后将目标移至 _DELETE_/ 暂存文件夹,而不是将其销毁。每次拦截都会写入审计日志,其中包含原始命令、解析出的目标和移动结果。
覆盖范围 — 所有具有破坏性的操作路径都会受到保护:
| 工具 | 防护措施 |
|---|---|
sassy_shell | 拦截删除命令,将目标暂存到 _DELETE_/ |
sassy_session_send / sassy_session_start | 使用同一拦截器 — 无法绕过持久终端 |
sassy_linux_exec | 拒绝在远程主机上执行具有破坏性的命令 |
sassy_adb_shell | 拒绝在 Android 设备上执行具有破坏性的命令(可通过 allow_destructive=True 覆盖) |
sassy_safe_delete | 显式暂存工具 — 将符号链接作为符号链接移动(移动路径中不使用 resolve()) |
sassy_write_file(重写模式) | 覆盖前将现有文件快照保存到 _DELETE_/ |
sassy_edit_block / sassy_edit_multi | 拒绝操作受保护路径;应用编辑前将现有内容快照保存到 _DELETE_/<name>.pre-edit.<ts><ext> |
sassy_copy | 拒绝目标已存在的情况(不静默覆盖),拒绝受保护的源路径或目标路径 |
sassy_move | 拒绝静默覆盖目标,拒绝受保护的源路径或目标路径 |
sassy_audit_clear | 轮换审计日志,而不是删除它;需要 confirm='YES' |
拦截的命令关键字: rm、rmdir、unlink(Unix/WSL)、del、erase、rd(CMD)、Remove-Item、ri、rni(PowerShell 别名)、sdelete / sdelete64(Sysinternals)。
还会捕获以下情况(不仅限于单独的关键字):
- Shell 包装命令 —
powershell -c "del foo"、cmd /c del foo、bash -c "rm foo"、wsl -- rm foo(会递归扫描有效载荷) - Base64 有效载荷 — 会解码(UTF-16-LE)
powershell -EncodedCommand <base64>并递归扫描 .NET调用 —[System.IO.File]::Delete(...)、[System.IO.Directory]::Delete(...)Clear-Content、Set-Content -Value ''(仅限字面值为空;普通的-Value "foo"允许执行)Out-File -Force、New-Item -Force(覆盖类操作)copy /y、xcopy /y— CMD 静默覆盖标志robocopy /MIR和robocopy /PURGE— 镜像/清理模式会删除目标文件- 通过重定向截断 —
> file.txt、type foo > bar.txt、cmd; > file.txt(会正确忽略追加操作>>和流重定向2>/&>) Move-Item foo $null- 赋值前缀 — 可正确剥离
$null = ri foo中的赋值部分
受保护的根目录(所有受保护工具都会拒绝操作,而不仅限于拦截器):SassyMCP 源代码树本身、~/.sassymcp/(审计日志 + 配置),以及任何 _DELETE_/ 暂存文件夹(不会递归暂存)。保护机制使用 resolve(),因此路径遍历(..\)、符号链接和 Windows 8.3 短文件名都会在检查前正确规范化。
| 场景 | 结果 |
|---|---|
rm -rf / | 始终启用的阻止列表会强制拦截 — 不会尝试移动 |
rm important.txt | 已拦截,文件已移动到 ./_DELETE_/important.txt |
del /q *.log | 已拦截,所有 .log 文件都已移动到 ./_DELETE_/ |
Remove-Item -Path C:\data\old | 已拦截,old 已移动到 C:\data\_DELETE_\old |
cmd /c del foo(包装命令) | 已拦截 — 会展开有效载荷并进行拦截 |
gci *.tmp | ri(PS 别名) | 已拦截 — 会匹配 ri 别名 |
对现有文件执行 sassy_write_file("doc.txt", ..., "rewrite") | 会先将原有内容快照保存到 _DELETE_/doc.overwrite.<ts>.txt |
ls -la | 正常执行 — 不是删除命令 |
_DELETE_/ 中的名称冲突会自动通过计数器后缀处理(file.txt、file_1.txt、file_2.txt)。在 Windows 上,解析器会正确保留带反斜杠的路径(C:\Users\foo\bar)— 不会被 shlex 错误处理。
暂停 / 恢复
对于用户需要接手的复杂流程:
| 工具 | 用途 |
|---|---|
sassy_phone_pause | 阻止所有交互工具。观察工具(ui、glance、watch)仍可使用。 |
sassy_phone_resume | 解除交互限制。AI 会从中断处继续,并结合暂停期间观察到的所有信息。 |
工作流:
- AI 自主操作手机,完成常规任务
- AI 遇到登录界面 → 敏感上下文自动被拦截 → AI 告知用户
- 用户说“等一下” → AI 调用
sassy_phone_pause - 用户手动登录。AI 通过
sassy_phone_ui/sassy_phone_glance观察 - 用户说“好了” → AI 调用
sassy_phone_resume - AI 继续操作,此时已知用户登录了特定账户
权限引擎与控制面板
SassyMCP 通过一个策略引擎(sassymcp.policy)管理 shell 和文件工具,
该引擎有四种模式,可通过 sassy_permission set_mode 或
控制面板设置:
| 模式 | 行为 |
|---|---|
strict | 在所有位置阻止破坏性模式(默认) |
confirm | 对破坏性模式返回确认令牌 |
sandbox | 在项目根目录内放宽限制;任何解析到监狱范围外的操作都会被拒绝 — 运行不受门控的模型,并将其限制在一个文件夹内 |
bypass | 除受保护路径外允许所有操作(明确启用,且经过审计) |
Claude 风格的 allow / ask / deny 规则层(工具 glob + 路径 glob +
命令正则表达式;优先匹配首条规则)会覆盖模式默认值。灾难性操作
阻止列表(format、mkfs 等)和受保护路径不变量(SassyMCP 源代码树
~/.sassymcp)在所有模式下都有效,包括 bypass。
控制面板是用于管理以上所有内容的 localhost 网页 UI — 包括实时
事件日志、设置 / 模式编辑器,以及分类器 + 规则编辑器。它仅绑定到
127.0.0.1,并需要每次安装对应的令牌,令牌位于
~/.sassymcp/control_panel.token。使用 sassy_panel start 启动
(或设置 panel.enabled / SASSYMCP_PANEL=1,使其在启动时运行),然后打开
打印出的 http://127.0.0.1:8765/?token=… URL。
工具配置
工具配置决定 MCP 会话可以看到(tools/list)和调用(tools/call)哪些工具 ——
这是从目录中选出的、由用户控制的会话级子集,可通过控制面板管理
(Profiles 标签页,由 GET / POST /api/profile 提供支持)。有意不提供
可切换或扩大配置的 MCP 工具,因此会话无法自行突破限制性配置;通过
sassy_batch 扇出的调用也遵循相同的门控规则。
| 配置 | 工具组 |
|---|---|
full | 所有 18 个组(每次启动时的默认配置) |
developer | meta、core、infrastructure、utility、github_quick、github_full、v020、memory、persona、setup、updater |
forensics | meta、core、infrastructure、forensics、utility、system、memory |
devices | meta、core、infrastructure、android、iphone、utility、memory |
sysadmin | meta、core、infrastructure、system、linux、utility、memory、updater |
readonly | 所有经过整理的 MCP 注释为 readOnlyHint=true 的工具 — 按工具计算,而非按组计算 |
custom | 在控制面板中勾选的明确工具组集合 |
需要了解的规则:
- 仅限会话,不会持久保存。 重启后始终会恢复为
full。配置是运行时的安全带,而非访问控制 — 控制面板令牌才是信任边界。 meta始终启用。 其自省工具(sassy_tool_groups、sassy_self_check等)是会话了解自身可见内容的唯一途径;隐藏这些工具会使会话无法检查门控规则。- 扩大范围需要
confirm='YES'。 任何会公开当前隐藏工具的切换操作都属于经审计的提权,需要明确确认(控制面板 UI 会代为发送,与 bypass 模式的约定一致)。缩小范围则无需确认。 - 从
tools/list中隐藏的工具也无法通过tools/call调用 —— 客户端无法调用自己看不到的工具。
引导式设置
首次启动时(不存在 ~/.sassymcp/persona.md),向导工具会醒目显示,AI 也会通过已注册的钩子获取入门指南。整个流程以对话方式进行:AI 提问,你回答,然后它调用工具。
入门流程(推荐顺序)
每个步骤彼此独立,均可跳过。只需告诉 AI“设置 SassyMCP”或“开始吧”,它就会引导你完成以下流程:
| # | 步骤 | 工具 | 操作说明 |
|---|---|---|---|
| 0 | 许可证 (可选) | sassy_setup_license action="status" then action="activate" key=... | 显示支持者等级。无论如何,所有工具都会解锁——密钥仅用于登记你的席位和支持者身份。 |
| 1 | 角色设定 | sassy_setup_wizard | 提出下方的问卷,生成 ~/.sassymcp/persona.md,并热重载角色设定模块。 |
| 2 | GitHub | sassy_setup_github action="check" → action="open_browser" → action="save_token" token=... | 验证现有的 GITHUB_TOKEN,或打开 github.com/settings/tokens,引导你选择权限范围,然后保存并重新验证。 |
| 3 | SSH / Linux | sassy_setup_ssh action="check" → action="save" host=... user=... password=... → action="test" | 查找 plink,将凭据存储在进程环境中,并通过执行 echo 往返测试进行验证。 |
| 4 | 可选工具 | sassy_setup_check_tools | 检查是否存在 nmap、tesseract、adb、scrcpy、plink 和 Chrome;对于缺少的工具,会提供安装链接。 |
| ✓ | 状态检查 | sassy_setup_status | 显示已配置的内容、仍缺少的内容,以及 action_required 提示。可随时运行。 |
| ⚙️ | 身份验证令牌 | sassy_setup_generate_token client_id="claude-desktop" | 生成 32 字节的 URL 安全令牌,并写入 ~/.sassymcp/tokens.json,供 HTTP/隧道模式使用。 |
可通过 action="skip" 跳过任何步骤(支持此选项时)——配置会记录跳过状态,因此 AI 不会再次提示。
角色设定问卷
sassy_setup_wizard 接受以下字段。全部为可选项——默认值如下所示。
| 字段 | 值 / 格式 | 默认值 |
|---|---|---|
role | developer | sysadmin | security | devops | data | designer | manager | other | developer |
expertise_level | junior | mid | senior | principal | staff | senior |
specializations | 以逗号分隔的领域,例如 "web security, cloud infra, mobile" | 空 |
languages | 以逗号分隔,例如 "Python, Rust, TypeScript, Go" | 空 |
frameworks | 以逗号分隔,例如 "React, FastAPI, Cloudflare Workers" | 空 |
systems | 以换行分隔的 hostname — OS — role 条目 | 空 |
projects | 以换行分隔的 name — status — description 条目 | 空 |
communication_style | terse(仅代码)| balanced(简要说明)| verbose(详细说明理由) | terse |
security_posture | standard(OWASP)| hardened(+ CSP/HSTS/速率限制)| paranoid(+ 隔离网络、证书固定、零信任) | standard |
mcp_clients | 连接的 AI 工具,例如 "Claude Desktop, Cursor, Grok Desktop" | 空 |
notes | 自由文本——AI 还应了解的其他工作习惯信息 | 空 |
输出会写入 ~/.sassymcp/persona.md(角色设定模块会在每个会话中读取该文件),运行记录则写入 ~/.sassymcp/config.json(setup_complete、setup_timestamp、setup_version)。可随时重新运行 sassy_setup_wizard 以重新生成——角色设定模块会热重载新配置。
从客户端触发流程
当出现 "setup"、"first time"、"get started"、"onboard"、"new user"、"set up sassymcp" 等短语时,入门钩子会触发。与这些短语类似的说法也会将指南载入 AI 的上下文。如果想手动引导流程,只需先调用 sassy_setup_status 查看当前进度,然后按上表操作。
智能加载
默认情况下,SassyMCP 只加载常用工具组。这会将工具定义控制在上下文窗口的 5% 以内。
# Default: loads core, github_quick, persona, meta, utility, setup, infrastructure
uv run sassymcp
# Load everything (~22K tokens of context)
SASSYMCP_LOAD_ALL=1 uv run sassymcp
# Load specific groups
SASSYMCP_GROUPS=core,github_quick,android,v020 uv run sassymcp
可用分组
| 分组 | 模块 | 默认启用 |
|---|---|---|
core | fileops, shell, ui_automation, editor, audit, session | 是 |
meta | meta | 是 |
infrastructure | observability, state_manager, runtime_config | 是 |
github_quick | github_quick(6 个轻量工具) | 是 |
persona | persona | 是 |
utility | utility | 是 |
setup | setup_wizard, tools_manager | 是 |
memory | memory | 是 |
updater | updater | 是 |
combos | combos(4 个工具) | 否 |
prompts | prompts(斜杠菜单快捷方式) | 是 |
github_full | github_ops(80 个工具) | 否 |
android | adb, phone_screen | 否 |
system | network_audit, process_manager, security_audit, registry, bluetooth, eventlog, clipboard | 否 |
v020 | vision, app_launcher, web_inspector, crosslink | 否 |
linux | linux | 否 |
安装
选择最符合你现有工作方式的入口。所有四种方式都会连接到 ~/.sassymcp/ 中同一个共享核心——你的 persona、记忆、许可证和审计日志对所有已连接的 MCP 客户端均可见。
通过 DXT 一键安装(Claude Desktop)
从最新版本下载 sassymcp.dxt,双击即可由 Claude Desktop 安装。首次启动时,sassymcp 会自动检测你机器上的其他 MCP 客户端(Cursor、VS Code Copilot、Windsurf、Continue、Cline、Zed、Grok Desktop),并修改各自的配置,让它们都能使用 SassyMCP,而无需你编辑任何 JSON。
VS Code 扩展
在 Visual Studio Marketplace 上架前,请从最新版本附带的 .vsix 安装 VS Code 扩展。该扩展会定位 sassymcp.exe(通过 PATH 或 sassymcp.exePath 设置),运行同一自动配置 CLI,并添加一个状态栏项,显示支持者等级标签和核心状态。命令面板:打开 Sassy Brain Cockpit、运行设置向导、重新安装客户端配置、打开审计日志、打开 _DELETE_ 文件夹、显示核心状态。
手动自动配置 CLI
如果你已有 sassymcp.exe(来自便携版 zip 或 pip 安装),并且想将其注册到所有 MCP 客户端,而不必逐个编辑客户端 JSON:
sassymcp-install
该命令会检测 Claude Desktop、VS Code Copilot、Cursor、Windsurf、Continue、Cline、Zed 和 Grok Desktop,并以原子方式修改各自的配置。重复运行不会产生任何变化。先使用 sassymcp-install --dry-run 查看结果。使用 sassymcp-install --uninstall 移除。CLI 会在首次编辑前,为任何现有配置创建带时间戳的备份。
便携包
便携版 zip(sassymcp-v*-portable.zip,包含 adb、nmap、plink、scrcpy、tesseract、cloudflared 和 start-*.bat 启动器)不再发布——发布流水线不会构建它。请使用下方的独立可执行文件(并将所需的辅助工具安装到 PATH 中),或通过 pip install sassymcp 完整安装 Python 版本。
独立可执行文件(不包含工具)
如果你不需要随附的 nmap / adb / cloudflared(或者它们已在 PATH 中),请从最新版本仅下载 sassymcp.exe(约 35 MB)。将它放在任意位置,然后在 MCP 客户端中指定该文件。
**首次运行向导:**在新机器上双击 sassymcp.exe(或不带任何标志从终端运行),即可看到交互式菜单——自动检测 AI Agent 并注册 SassyMCP、激活 LemonSqueezy 许可证密钥、生成 / 列出 bearer token,或启动 HTTP 服务。随时运行 sassymcp.exe setup 可重新打开菜单。配置 persona 后,直接运行程序会默认启动 HTTP 服务(与 v1.5 的行为一致),因此现有配置不会改变。
Linux(仅 pip)
CI 不发布 Linux 二进制文件。在 Linux 上,请安装 wheel:pip install sassymcp。(独立可执行文件仅支持 Windows;macOS 提供 universal2 二进制文件 — 请参阅发布页面上的 sassymcp-macos。)
MSI 安装程序(仅限手动构建)
CI 不发布 MSI — build-msi.ps1 用于从暂存的 sassymcp.exe 手动构建 MSI(WiX 3.x),而 installer.wxs 是手动构建的参考模板,并非维护中的安装程序。
激活支持者许可证(可选)
没有单独的“许可版下载”,也没有任何内容需要解锁 — 所有人运行的都是从 GitHub releases 获取的同一个完全解锁版二进制文件。如果你想支持开发,可以在 sassyconsultingllc.com/store 购买许可证并 激活,以注册你的席位和支持者等级:
# from your AI agent:
sassy_setup_license action=activate key=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
# or from a terminal — interactive menu, choose "Activate license":
sassymcp.exe setup
许可证会将这台机器注册为 LemonSqueezy 实例(席位);运行 sassy_setup_license action=deactivate 可释放席位,以便转移到另一台机器。
从源代码构建
git clone https://github.com/sassyconsultingllc/SassyMCP.git
cd SassyMCP
uv sync
# Optional dependencies:
uv pip install pytesseract playwright
playwright install chromium
Cloudflare Tunnel(远程访问)
想通过远程 MCP 客户端(Claude Web、另一台机器)使用 SassyMCP?便携版附带开箱即用的启动器。完整的分步说明请参阅 docs/TUNNEL.md;简要步骤如下:
winget install Cloudflare.cloudflared # one-time
cloudflared tunnel login # authenticate against your CF account
cloudflared tunnel create sassymcp # create a named tunnel
cloudflared tunnel route dns sassymcp mcp.<your-domain>.tld
# Write ~/.cloudflared/config.yml with the ingress block (see TUNNEL.md)
[Environment]::SetEnvironmentVariable("SASSYMCP_AUTH_TOKEN", "<your token>", "User")
[Environment]::SetEnvironmentVariable(
"SASSYMCP_ALLOWED_HOSTS",
"mcp.<your-domain>.tld,localhost,127.0.0.1", "User")
cd D:\Tools\SassyMCP # wherever you extracted
.\start-tunnel.bat sassymcp # tunnel name as arg, or set SASSYMCP_TUNNEL_NAME
start-tunnel.bat 会在 127.0.0.1:21001 上启动 HTTP 桥接,并在前台运行 cloudflared tunnel run <name>。脚本中没有特定供应商的内容 — 你只需提供隧道名称和主机名。客户端通过 https://mcp.<your-domain>.tld/mcp 发送 Authorization: Bearer <SASSYMCP_AUTH_TOKEN>。
对于需要 OAuth 2.1 DCR/PKCE(而非静态 Bearer)的托管版 Claude 客户端,请部署 sassymcp-oauth/ 下的可选 Worker — 将 wrangler.toml.example 复制为 wrangler.toml,填入你的主机名和 KV id,然后运行 wrangler deploy。完整的 OAuth 章节请参阅 docs/TUNNEL.md。
MCP 客户端配置
SassyMCP 使用标准 MCP。任何能够连接的客户端都可以使用 — 无需修改客户端。便携版附带可直接编辑的模板,位于 deploy/*_config.template.json。选择与你的客户端对应的行,复制模板,将 REPLACE_WITH_PATH 替换为 sassymcp.exe 的绝对路径,并保存到客户端指定的位置。
| 客户端 | 传输方式 | 配置文件位置 | 模板 |
|---|---|---|---|
| Claude Desktop | stdio | %APPDATA%\Claude\claude_desktop_config.json(Win)/ ~/Library/Application Support/Claude/claude_desktop_config.json(mac) | claude_desktop_config.template.json |
| Cursor | stdio | ~/.cursor/mcp.json(全局)或 <project>/.cursor/mcp.json(按项目) | cursor_mcp_config.template.json |
| Windsurf | stdio | ~/.codeium/windsurf/mcp_config.json | windsurf_mcp_config.template.json |
| Cline (VS Code) | stdio | VS Code 设置 → cline.mcpServers(与 mcpServers 结构相同) | 使用 claude_desktop_config.template.json |
| Continue.dev | stdio | ~/.continue/config.json(合并到 experimental.modelContextProtocolServers 下) | continue_mcp_config.template.json |
| Grok Desktop | HTTP | Grok Desktop MCP 设置 | grok_desktop_config.template.json |
| 任何其他 MCP 客户端 | stdio 或 HTTP | 客户端的 MCP 配置 | 使用最接近的模板;mcpServers 结构是通用约定 |
标准 mcpServers 结构(Claude Desktop、Cursor、Windsurf、Cline)
使用 exe:
{
"mcpServers": {
"sassymcp": {
"command": "C:\\path\\to\\sassymcp.exe",
"env": {
"SASSYMCP_LOAD_ALL": "1",
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}
从源代码运行:
{
"mcpServers": {
"sassymcp": {
"command": "uv",
"args": ["--directory", "C:\\path\\to\\SassyMCP", "run", "sassymcp"],
"env": {
"SASSYMCP_LOAD_ALL": "1",
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}
Continue.dev 结构(架构不同)
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "C:\\path\\to\\sassymcp.exe"
}
}
]
}
}
HTTP / Grok Desktop / 自定义 HTTP 客户端
以 HTTP 模式运行服务(sassymcp.exe --http,默认地址为 127.0.0.1:21001),并将客户端指向 http://127.0.0.1:21001/mcp/。如果绑定地址不是环回地址,请设置 SASSYMCP_AUTH_TOKEN。
{
"mcpServers": {
"sassymcp": {
"url": "http://127.0.0.1:21001/mcp/"
}
}
}
实际上带有 Claude 特性的内容(仅表面)
少数文档字符串和旧版 .claude/skills/sassymcp-update.md 斜杠命令目标专门针对 Claude Code。其他客户端会忽略它们,并直接使用 sassy_update_* 工具。没有任何工具、传输方式或身份验证路径依赖 Claude——服务端不知道另一端运行的是哪个 LLM。
传输模式
| 模式 | 命令 | 使用场景 |
|---|---|---|
| Stdio | sassymcp.exe | Claude Desktop、Cursor(直接管道) |
| HTTP | sassymcp.exe --http | Grok Desktop、Windsurf(localhost:21001) |
| HTTP LAN | sassymcp.exe --http --host 0.0.0.0 | 多设备(需要身份验证令牌) |
| HTTPS | sassymcp.exe --http --ssl | 加密(自动生成自签名证书) |
| SSE | sassymcp.exe --http --sse | 旧版传输方式 |
运行多个实例(双会话)
同一台机器上运行两个 SassyMCP 进程——例如,为 Claude Desktop 运行一个本地 stdio实例,为 Claude Web 运行一个位于 Cloudflare Tunnel 后的远程 HTTPS实例——如果它们共用 ~/.sassymcp/,可能会相互覆盖状态。解决方法是为每个实例设置一个环境变量。
每个实例需要解决的冲突
| 资源 | 默认值 | 为每个实例单独设置的方法 |
|---|---|---|
| HTTP 端口 | 21001 | --port 21002(仅适用于 HTTP 模式实例) |
| Crosslink HTTP 端口 | 9377 | sassy_crosslink_register port=9378 |
| 身份验证令牌 | 环境变量 SASSYMCP_AUTH_TOKEN | 在启动器的环境中为每个进程单独设置 |
| 每用户状态目录 | ~/.sassymcp | SASSYMCP_HOME=/path/to/dir ← 新增环境变量(v1.3.4+) |
| SSL 证书/密钥 | $SASSYMCP_HOME/server.{crt,key} | 设置 SASSYMCP_HOME 后自动隔离;或使用 --ssl-cert / --ssl-key |
示例:本地 stdio 与远程隧道并行运行
实例 A——Claude Desktop 的本地 stdio(claude_desktop_config.json):
{
"mcpServers": {
"sassymcp-local": {
"command": "C:\\Tools\\SassyMCP\\sassymcp.exe",
"env": {
"SASSYMCP_LOAD_ALL": "1",
"SASSYMCP_HOME": "C:\\Users\\<you>\\.sassymcp-local"
}
}
}
}
实例 B——通过 Cloudflare Tunnel 的远程 HTTPS(start-tunnel.bat + 用于设置环境变量的包装器):
set SASSYMCP_HOME=C:\Users\<you>\.sassymcp-remote
set SASSYMCP_AUTH_TOKEN=<token-for-remote>
set PORT=21002
"%~dp0sassymcp.exe" --http --host 127.0.0.1 --port %PORT%
然后,cloudflared tunnel run <name> 会将 https://<your-tunnel>/mcp 转发到 127.0.0.1:21002。
SASSYMCP_HOME 不同时会隔离哪些内容
每个实例都有自己的:
persona.md— 每个会话使用不同的配置文件config.json— 不同的运行时配置(允许的目录、阻止的命令等)tokens.json— 不同的作用域身份验证令牌license.json— 独立的许可证激活状态audit.log/audit.jsonl— 写入内容不会交错crosslink.db— 独立的跨会话消息队列memory.db— 独立的持久记忆tool_state.db/tool_usage.json— 独立的每个工具状态和使用分析数据server.crt/server.key— 独立的自签名证书_security受保护路径检查也遵循SASSYMCP_HOME——任一实例都无法通过sassy_safe_delete删除另一实例主目录中的内容
实例之间仍共享的内容
- 仓库源代码树(始终受
_security保护,不会被删除或覆盖) %LOCALAPPDATA%\SassyMCP\updates\— 更新程序下载暂存目录(无害;其中的内容按版本标记)- 便携版 zip 中捆绑的工具(
adb、nmap、cloudflared等)——两个实例都以只读方式访问
在操作系统中设置(让两个实例都在启动时运行)
旧版 personal/autostart-bridge.bat + personal/register-autostart.ps1 模板已被 Git 忽略——复制这些文件,调整路径和每个实例的 SASSYMCP_HOME,然后为每个实例运行一次 Register-ScheduledTask。
环境变量
| 变量 | 用途 |
|---|---|
SASSYMCP_LOAD_ALL=1 | 加载所有工具组 |
SASSYMCP_GROUPS=core,android | 加载指定工具组 |
SASSYMCP_AUTH_TOKEN=xxx | 用于 HTTP 身份验证的 Bearer 令牌 |
SASSYMCP_DEV=1 | 启用实时重新加载(开发模式) |
SASSYMCP_NO_UPDATE_CHECK=1 | 禁用启动时的更新检查(不调用 GitHub API) |
SASSYMCP_HOME=/path/to/dir | 覆盖每用户状态目录(默认为 ~/.sassymcp)。在一台机器上运行多个实例时必须设置。 |
SASSYMCP_REPO=/path/to/repo | 覆盖 tools/mercury_audit_sassymcp.py 中自动检测的仓库根目录(仅限开发工具) |
GITHUB_TOKEN=xxx | GitHub API 访问权限 |
SSH_HOST=xxx | 远程 Linux 主机名/IP |
SSH_USER=xxx | 远程 Linux 用户名 |
SSH_PASS=xxx | 远程 Linux 密码 |
外部工具
所有工具均包含在测试版 zip 包中。只有使用独立 exe 时才需要单独安装。
| 工具 | 使用方 | 已包含 | 安装(如需要) |
|---|---|---|---|
| ADB | 所有 sassy_adb_* + sassy_phone_* 工具 | 是 | Android Platform Tools |
| nmap | sassy_port_scan | 是 | nmap.org |
| plink | sassy_linux_exec | 是 | PuTTY |
| scrcpy | sassy_scrcpy_* 工具 | 是 | scrcpy releases |
| Tesseract | sassy_screen_ocr、sassy_find_text_on_screen | 是 | tesseract-ocr |
| Chrome | sassy_url_screenshot | 否 | google.com/chrome |
运行 sassy_setup_check_tools,验证是否检测到所有工具。
要求
- Windows 10/11、macOS 12+ 或 Linux — 使用同一份源代码,并在最前端
(
sassymcp._platform)根据主机选择正确的命令。请参阅下文的 跨平台。 - Python 3.11+(仅从源代码运行时需要;独立二进制文件 自包含 — 按操作系统分别构建,因为 PyInstaller 无法跨平台编译)
跨平台
同一份 SassyMCP 源代码可在 Windows、macOS 和 Linux 上运行。导入时会
解析一次主机操作系统;随后每个工具都会调用适用于主机的命令 — shell(PowerShell / zsh|bash)、剪贴板(Get-Clipboard / pbpaste)、
事件日志(Get-WinEvent / log show / journald)、防火墙(netsh /
socketfilterfw / ufw)、Wi-Fi、Bluetooth、窗口控制(pywinauto /
AppleScript System Events / wmctrl)、SSH(plink / 原生 ssh)、软件包
安装(winget / brew / apt)等。
- 构建:
build.bat(Windows)或build.sh(macOS/Linux)。每个 二进制文件都必须在对应的操作系统上构建。 - macOS 权限: 窗口控制和屏幕截图工具需要为运行 SassyMCP 的应用 授予辅助功能和屏幕录制权限(系统设置 → 隐私与安全性)。
- 有少数概念本质上仅适用于 Windows(原始注册表
读取/写入/导出);这些功能会显示清晰的说明,并指向对应的原生
功能(defaults、launchd)。取证持久化
(
sassy_autorun_entries)则支持跨平台(Run 项 / LaunchAgents / systemd+cron)。
许可证
专有 — 版权所有 (c) 2026 Sassy Consulting LLC。保留所有权利。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。