关于 Diff Anything
Diff Anything MCP 将本地 Diff Anything 命令行工具接入 MCP 客户端,用于比较文件、文件夹和 API Schema。它适合需要在受限本地目录中检查差异的开发者;比较由 CLI 执行,服务端返回其报告。
主要功能
- 01发现 CLI 能力、版本和允许目录
- 02比较文本与 JSON 文件
- 03比较文件夹(需 Pro)
- 04检查 API 兼容性(需 Pro)
- 05限制可比较的根目录
适用场景
- 01检查两个版本的本地文件差异
- 02比较目录树中的文件变更
- 03评估 API Schema 变更是否破坏兼容性
MCP 相关
通过 stdio 向 MCP 客户端提供能力发现、文件比较、文件夹比较和 API 兼容性检查工具。客户端需配置允许访问的绝对目录。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @grunersoftware/diff-anything-mcpDIFF_ANYTHING_ROOTSJSON array of absolute existing directories this server may compare.DIFF_ANYTHING_CLIOptional absolute path to the installed Diff Anything executable.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Diff Anything MCP
在 MCP 客户端中使用已安装的 Diff Anything 命令行工具,比较本地文件、文件夹和 API 架构。可选的 npm 包通过标准输入/输出运行,作为客户端的子进程。
要求和设置
- 在 macOS 或 Windows 上安装 Node.js 22 或更高版本。
- 安装带命令行工具的 Diff Anything 应用。请从产品页面安装该应用。在 Windows 上,Microsoft Store 版本通过其
diff-anything.exe应用执行别名提供命令行工具。在 Mac 上,Mac App Store 版本处于沙盒环境中,无法读取命令行中指定的文件,因此请安装免费的 Diff Anything 命令行辅助工具,它会安装/usr/local/bin/diff-anything。 - 文件夹和 API 架构比较需要 Diff Anything Pro。CLI 会检查应用本地缓存的授权;打开桌面应用即可购买或恢复 Pro。免费版 CLI 支持纯文本和 JSON 比较,但受每日使用量和文件大小限制。
check_api_compatibility需要帮助信息中包含--fail-on breaking的 CLI。发现功能会检查已安装的二进制文件;较旧的应用会为此工具返回update_required。
MCP 客户端会通过 npx 启动服务,首次使用时会下载固定版本;无需安装其他内容。在 Claude Code 中:
claude mcp add diff-anything -e DIFF_ANYTHING_ROOTS='["/Users/you/Comparisons"]' -- npx -y @grunersoftware/[email protected]
对于通过 JSON 配置的客户端,服务条目如下:
{
"mcpServers": {
"diff-anything": {
"command": "npx",
"args": ["-y", "@grunersoftware/[email protected]"],
"env": { "DIFF_ANYTHING_ROOTS": "[\"/Users/you/Comparisons\"]" }
}
}
}
如需在启动时避免从 npm 获取软件包,请全局安装固定版本,并改用 diff-anything-mcp 命令:
npm install --global @grunersoftware/[email protected]
在客户端的服务配置中设置 DIFF_ANYTHING_ROOTS,将其设为一个 JSON 数组,其中包含服务可比较的现有绝对路径目录。在配置此项之前,只有发现功能可用。建议先创建一个专用目录,其中存放你打算与客户端共享的文件。
macOS 的发现功能会依次检查命令行辅助工具 /usr/local/bin/diff-anything、/Applications/Diff Anything.app/Contents/MacOS/diff-anything、~/Applications 中的同一应用包,以及 PATH 中的绝对路径条目。系统会跳过 Mac App Store 版本的应用,因为其自身可执行文件无法读取文件;如果没有辅助工具,工具会返回 helper_required,并附上辅助工具的下载页面。Windows 的发现功能会检查 %LOCALAPPDATA%\Microsoft\WindowsApps\diff-anything.exe 和 PATH。Microsoft Store 软件包声明了该应用执行别名;如果别名已禁用,请在 Windows 设置中启用。若要使用直接安装的版本或其他位置,请将 DIFF_ANYTHING_CLI 设置为可执行文件的绝对路径。请勿在该变量中使用 shell 命令或参数。
VS Code
如需配置工作区,请创建 .vscode/mcp.json:
{
"servers": {
"diff-anything": {
"type": "stdio",
"command": "diff-anything-mcp",
"env": {
"DIFF_ANYTHING_ROOTS": "[\"/Users/you/Comparisons\"]"
}
}
}
}
如果客户端无法找到全局命令,请将 Node 的绝对路径用作 command,并将已安装软件包中 src/index.mjs 的绝对路径作为 args 中唯一的条目。这样也能避开无法直接启动 npm 的 .cmd 垫片的 Windows 客户端。npm root --global 可用于确定全局软件包目录。
使用 mcpServers 的客户端
对于 Claude Code 这类接受项目级 .mcp.json 的客户端,请在 mcpServers 下使用相同的服务条目。下面的 Windows 示例直接启动 Node:
{
"mcpServers": {
"diff-anything": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": ["C:\\Users\\you\\AppData\\Roaming\\npm\\node_modules\\@grunersoftware\\diff-anything-mcp\\src\\index.mjs"],
"env": {
"DIFF_ANYTHING_ROOTS": "[\"C:\\\\Users\\\\you\\\\Comparisons\"]"
}
}
}
}
请将示例路径替换为实际的安装目录和比较目录。在客户端中重启或重新加载服务,然后先调用 discover_capabilities。配置参考:VS Code MCP 配置和 MCP SDK 主机设置。
工具
| 工具 | 输入 | 结果 |
|---|---|---|
discover_capabilities | {} | 已安装的 CLI 版本、标志支持情况、已配置的根目录和封装器限制。不会探测 Pro 归属。 |
compare_files | 绝对路径 left 和 right | CLI 自动检测的比较报告。 |
compare_folders | 绝对路径 left 和 right 目录 | CLI 默认的文件夹比较报告(Pro)。 |
check_api_compatibility | 绝对路径 left 和 right 架构 | 使用 --fail-on breaking 进行 API 比较(Pro 和支持该功能的 CLI)。 |
输入示例:
{"left":"/Users/you/Comparisons/before.json","right":"/Users/you/Comparisons/after.json"}
退出代码 1 表示比较已完成,并非服务故障。对于文件和文件夹比较,它会设置 countedDifferences;对于 API 检查,它会将 compatibilityCheckPassed 设为 false。请查看 CLI 报告及其警告:兼容性检查失败可能表示存在破坏性或未分类的更改。比较结果不能证明备份完整,也不能证明 API 在各方面都兼容。
封装器会原样返回 CLI 报告,不会改写其值,也不会移除其掩码。工具不提供用于传入原始 CLI 标志、禁用掩码、覆盖 Pro、合并、批量清单或写入报告文件的参数。错误会通过 isError 返回,包含 missing_app、helper_required、pro_required、update_required、outside_roots、timeout 或 output_limit 等代码,以及可用时 CLI 提供的说明。
本地处理与权限
Diff Anything 在本地执行比较,不会将你的任何数据发送给 AI 模型。npm 封装器没有托管运行时、账户、API 密钥、HTTP 监听器,也不需要在运行时连接网络。安装软件包需要访问软件包注册表;直接启动已安装的软件包可避免启动时从 npm 获取内容。
你的 MCP 客户端会控制如何处理工具返回的输出。 比较结果可能包含文件名、路径、文档内容和更改后的值。客户端可能会将这些输出发送给其模型提供商或进行存储。比较敏感文件前,请配置该客户端的数据处理方式和工具审批。CLI 现有的掩码功能并非通用的机密信息扫描器。
工具不会更改参与比较的文件。CLI 可能会更新本地免费比较使用记录,并读取缓存的 Pro 权益。服务继承你的进程权限和环境。允许的根目录会校验解析后的输入路径,包括符号链接。文件夹输入会在比较前进行扫描,并拒绝嵌套的符号链接、目录联接和特殊文件,因为 CLI 可能会跟随链接。此校验上限为每棵目录树 100,000 个条目、60 秒。这些是应用层防护措施,并非 OS 沙箱,也无法防止其他进程在比较期间更改文件。请使用本地且稳定的目录;网络挂载或云端占位文件可能会通过操作系统执行 I/O。
每次 CLI 调用的超时时间为 60 秒,stdout 和 stderr 的合并输出上限为 1 MiB。超出上限的输出会被丢弃,进程也会停止;部分报告绝不会作为完整报告呈现。一次只能运行一个工具请求;重叠请求会返回 busy。客户端取消请求会停止当前运行的 CLI 子进程。大型比较应缩小范围,拆分成较小的文件对。
开发
npm ci
npm test
npm pack
测试会使用模拟 CLI 测试实际的 MCP stdio 传输、参数校验、平台发现路径、允许的根目录、符号链接越界拒绝、Pro 错误、取消和输出限制。要端到端验证平台打包和权益行为,需要安装真实应用。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。