mcpField
D
Diff Anything

Diff Anything

本地服务
martingruner.com开发工具02 周前更新

关于 Diff Anything

Diff Anything MCP 将本地 Diff Anything 命令行工具接入 MCP 客户端,用于比较文件、文件夹和 API Schema。它适合需要在受限本地目录中检查差异的开发者;比较由 CLI 执行,服务端返回其报告。

主要功能

  1. 01发现 CLI 能力、版本和允许目录
  2. 02比较文本与 JSON 文件
  3. 03比较文件夹(需 Pro)
  4. 04检查 API 兼容性(需 Pro)
  5. 05限制可比较的根目录

适用场景

  1. 01检查两个版本的本地文件差异
  2. 02比较目录树中的文件变更
  3. 03评估 API Schema 变更是否破坏兼容性

MCP 相关

通过 stdio 向 MCP 客户端提供能力发现、文件比较、文件夹比较和 API 兼容性检查工具。客户端需配置允许访问的绝对目录。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"martingryner-diff-anything": {
"command": "npx",
"args": [
"-y",
"@grunersoftware/diff-anything-mcp"
],
"env": {
"DIFF_ANYTHING_ROOTS": "<DIFF_ANYTHING_ROOTS>",
"DIFF_ANYTHING_CLI": "<DIFF_ANYTHING_CLI>"
}
}
}
}
启动命令npx -y @grunersoftware/diff-anything-mcp
需要配置的环境变量
DIFF_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@grunersoftware/diff-anything-mcp0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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 和 rightCLI 自动检测的比较报告。
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 错误、取消和输出限制。要端到端验证平台打包和权益行为,需要安装真实应用。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。