About jsondiff
jsondiff is a CLI and stdio MCP server that compares JSON documents locally. It ignores key and array order and reports difference types, paths, and an overall status.
Key features
- 01Deep JSON comparison
- 02Ignore key and array order
- 03Report difference types and paths
- 04CLI and stdio MCP server
Use cases
- 01Compare two JSON documents
- 02Locate missing or extra keys
- 03Identify value or type mismatches
MCP support
Exposes a compare_json tool that accepts two JSON strings and returns an order-independent comparison with differences and paths.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
1Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| json1 | string | Yes | The first JSON document, as a JSON string |
| json2 | string | Yes | The second JSON document, as a JSON string |
Details
From the project READMEjsondiff
Compare two JSON documents deeply, without worrying about key or
array order. jsondiff walks both documents at every level and
reports each difference it finds — a key that exists on one side
only, a value that differs, or a value whose JSON type differs —
with the exact dotted path of the difference, a per-kind summary,
and an overall identical / different status.
It is pure local computation: no upstream API, no account, no API key, no configuration.
CLI
npx @reneturcios/jsondiff compare '<json1>' '<json2>'
npx @reneturcios/jsondiff compare --file1 a.json --file2 b.json
npx @reneturcios/jsondiff --version
Both inputs are JSON strings; with --file1 / --file2 they are
read from files instead. Output is the comparison report as JSON:
{
"status": "different",
"total_differences": 2,
"differences": [
{
"type": "missing_key",
"path": "root.user.settings.language",
"key": "language",
"file1_value": "tr",
"message": "Key 'language' exists in file1 but missing in file2"
},
{
"type": "value_mismatch",
"path": "root.user.name",
"file1_value": "Ahmet Yılmaz",
"file2_value": "Mehmet Demir",
"message": "Value mismatch at 'root.user.name'"
}
],
"summary": {
"missing_keys": 1,
"extra_keys": 0,
"value_mismatches": 1,
"type_mismatches": 0
}
}
Exit codes: 0 on success, 1 on a runtime error (including an
input that is not valid JSON — the error names the input), 2 on
a usage error.
MCP server
The same bin serves a stdio MCP server:
npx -y @reneturcios/jsondiff mcp
MCP client config:
{
"mcpServers": {
"jsondiff": {
"command": "npx",
"args": ["-y", "@reneturcios/jsondiff", "mcp"]
}
}
}
Tools
compare_json— Compare two JSON strings deeply and order-independently, and report every difference (missing keys, extra keys, value mismatches, type mismatches) with full path tracking.json1(string, required) — the first JSON document, as a JSON stringjson2(string, required) — the second JSON document, as a JSON string
Difference kinds: missing_key (in the first document only),
extra_key (in the second only), value_mismatch (same JSON
type, different content), type_mismatch (different JSON types).
Arrays are compared order-independently: an element with no
deep-equal partner on the other side is reported as a value
mismatch.
Docker
docker run -i ghcr.io/cloudcorprecords/jsondiff # stdio MCP server
docker run --rm ghcr.io/cloudcorprecords/jsondiff compare '{"a":1}' '{"a":2}'
Development
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
License
MIT — Copyright (c) 2026 Rene Turcios
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.