# confdiff-mcp

Diffs config files by parsed data instead of characters. Your agent sees the real changes and never gets the secrets.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 41
- Author: esperanza-volkov
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/esperanza-volkov/confdiff
- Updated: 2026-09-22
- HTML: https://affpapa.org/en/nevibecode/mcp/confdiff-mcp

## What it does

The server loads each file into a data model and compares the models. Reordered keys, quote changes, a reflowed array, a fresh comment — none of that registers as a change. Every genuine edit comes back as one line: path, old value, new value. Type swaps get caught too, like `80` turning into `"80"`.

Eight formats are covered: JSON with comments, multi-document YAML split by `---`, CSV with delimiter detection, plus TOML, INI, `.env` and XML. You can put a `config.json` next to its migrated `config.yaml`, or hand it two directories and let it pair files by relative path.

With `--redact`, secret values become a stable fingerprint such as `“redacted:1a2b3c”`. You learn that a password drifted; the password itself stays out of the model context and CI logs. The catch: this is a semantic comparison, so a format it cannot parse gets no meaning out of it. Startup goes through `npx -y confdiff-mcp`, so Node.js has to be on the machine.

## Requirements
- Needs: Node.js (commands run via npx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add confdiff-mcp -- npx -y confdiff-mcp
```

### Codex

**Platform CLI**
```bash
codex mcp add confdiff-mcp -- npx -y confdiff-mcp
```

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "confdiff-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "confdiff-mcp"
            ]
        }
    }
}
```

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "confdiff-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "confdiff-mcp"
            ]
        }
    }
}
```

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add confdiff-mcp npx -y confdiff-mcp
```

## When to use it
- strip cosmetic noise from a config diff before review
- catch a value type change that `git diff` renders as identical
- confirm a JSON-to-YAML migration kept the same data
- compare two Helm renders file by file
- report a drifted credential without exposing it

## Example prompts
- Diff `old.yaml` against `new.yaml` semantically and list only the real changes
- Run confdiff on `prod.env` and `staging.env` with `--redact` and tell me which secrets differ
- Compare `old-manifests/` and `new-manifests/`: which files were added, removed or changed

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
