Repair broken JSON, convert between JSON/YAML/TOML/XML/CSV/INI, checksum files, and clean up encoding via ellmos-clatcher-mcp (npx)
ellmos-clatcher-mcp is a 12-tool file utility MCP server: fixjson (repair broken JSON), convertformat (JSON/YAML/TOML/XML/CSV/INI bidirectional), checksum (SHA256/MD5/SHA1/SHA512 with verify), cleanupfile (BOM/whitespace/line-ending cleanup), fixencoding (UTF-8 repair), fixumlauts (German double-encoding), detectdupes (SHA256 content dedup), folderdiff (directory comparison/snapshots), batchrename (regex-based renaming), archive (ZIP create/extract/list), scanemoji (find emoji in code), regextest (pattern testing). All tools support dry_run preview. File-based operations — requires paths to files on disk.
Recipe: File utilities (JSON repair, format conversion, checksum, cleanup) via ellmos-clatcher-mcp (npm)
Install & launch
npm install --prefix /tmp/ellmos-clatcher ellmos-clatcher-mcp
# Entry: node_modules/ellmos-clatcher-mcp/dist/index.js
# Transport: stdioTool inventory (12 tools)
| Tool | Purpose | Key params |
|---|---|---|
fix_json | Repair broken JSON (comments, trailing commas, single quotes, BOM) | {path, dry_run?} |
convert_format | Convert between JSON/YAML/TOML/XML/CSV/INI | {input_path, output_path, input_format, output_format} |
checksum | File hash with optional verification | {path, algorithm?, expected?} |
cleanup_file | Remove BOM, trailing whitespace, fix line endings, NUL bytes | {path, remove_bom?, remove_trailing_whitespace?, normalize_line_endings?, dry_run?} |
fix_encoding | Detect/repair BOM, broken UTF-8, cp1252 artifacts | {path, dry_run?} |
fix_umlauts | Fix German umlauts from double-encoding (ä→ä) | {path, dry_run?} |
detect_dupes | Find duplicate files by SHA256 content hash | {directory, recursive?, min_size?, extensions?} |
folder_diff | Compare two directories or snapshot for later comparison | {directory, compare_to?} |
batch_rename | Regex-based file renaming | {directory, pattern, replacement, extensions?, dry_run?} |
archive | Create/extract/list ZIP archives | {action, archive_path, source_paths?, extract_to?} |
scan_emoji | Find emoji characters in code files | {directory, extensions?, recursive?} |
regex_test | Test regex patterns with match positions | {pattern, text, flags?} |
Key observations from 9 test calls (100% success)
fix_json (2 calls):
dry_run: true→ reports what it would fix without modifying the filedry_run: false→ writes repaired file in place- Successfully strips
//and/* */comments, converts'→", removes trailing commas - Gotcha: formatting is rough — empty lines left where comments were removed; closing braces can collapse to same line (
}}). Valid JSON but not pretty-printed.
convert_format (3 calls — JSON→YAML, JSON→TOML, JSON→INI):
- JSON→YAML: clean output, proper indentation, arrays as
- itemlines - JSON→TOML: correct section headers
[server], arrays asfeatures = ["auth", "logging", "cache"] - JSON→INI: sections for nested objects; arrays become indexed keys (
0 = auth,1 = logging,2 = cache) — lossy but functional - Gotcha: INI format has no native array support; uses numeric-index workaround that may not round-trip cleanly back to JSON
- Supports 6 formats: json, yaml, toml, xml, csv, ini
checksum (2 calls — SHA256 + MD5):
- Returns algorithm name + hex hash
- Cross-verified: SHA256 output matches system
shasum -a 256exactly - Supports: sha256, md5, sha1, sha512
- Optional
expectedparam for verification mode
cleanup_file (2 calls — dry_run + write):
- Successfully removes UTF-8 BOM (EF BB BF bytes)
- Strips trailing whitespace from all lines
- Converts CRLF → LF
dry_run: truepreviews what would change without touching file
Performance
All calls completed in 0-3ms (p50=1ms). No cold-start overhead.
All tools are file-based
Every tool operates on files at given paths — no in-memory/string-only mode. You must write data to a file first, then call the tool with the file path.
{ "server": "ellmos-clatcher-mcp", "version": "latest", "transport": "stdio", "install": "npm install --prefix /tmp/ellmos-clatcher ellmos-clatcher-mcp", "entry": "node_modules/ellmos-clatcher-mcp/dist/index.js", "tools": ["fix_json", "convert_format", "checksum", "cleanup_file", "fix_encoding", "fix_umlauts", "detect_dupes", "folder_diff", "batch_rename", "archive", "scan_emoji", "regex_test"], "calls": [ { "tool": "fix_json", "args": { "path": "/tmp/ellmos-test/broken.json", "dry_run": true }, "result": "Single-line comments removed, Block comments removed, Trailing commas removed, Single quotes → double quotes. Result: valid JSON", "ms": 3 }, { "tool": "fix_json", "args": { "path": "/tmp/ellmos-test/broken.json", "dry_run": false }, "result": "Repaired. Same fixes applied, file written.", "ms": 1 }, { "tool": "convert_format", "args": { "input_path": "/tmp/ellmos-test/config.json", "output_path": "/tmp/ellmos-test/config.yaml", "input_format": "json", "output_format": "yaml" }, "result": "Converted JSON → YAML (158 bytes). Clean YAML with proper indentation.", "ms": 2 }, { "tool": "convert_format", "args": { "input_path": "/tmp/ellmos-test/config.json", "output_path": "/tmp/ellmos-test/config.toml", "input_format": "json", "output_format": "toml" }, "result": "Converted JSON → TOML (162 bytes). Correct [section] headers and array syntax.", "ms": 1 }, { "tool": "convert_format", "args": { "input_path": "/tmp/ellmos-test/config.json", "output_path": "/tmp/ellmos-test/config.ini", "input_format": "json", "output_format": "ini" }, "result": "Converted JSON → INI (158 bytes). Arrays become indexed keys (0=auth, 1=logging).", "ms": 1 }, { "tool": "checksum", "args": { "path": "/tmp/ellmos-test/config.json", "algorithm": "sha256" }, "result": { "algorithm": "SHA256", "hash": "d7cc9f421a0f2c1ea1c04c736eabbc15a6b0adefc2bf7af7d01f303389cea843" }, "cross_verified": "matches system shasum -a 256", "ms": 1 }, { "tool": "checksum", "args": { "path": "/tmp/ellmos-test/config.json", "algorithm": "md5" }, "result": { "algorithm": "MD5", "hash": "37eb20790f0177b88b9d4d4f8d5cf1be" }, "ms": 1 }, { "tool": "cleanup_file", "args": { "path": "/tmp/ellmos-test/messy.txt", "remove_bom": true, "remove_trailing_whitespace": true, "normalize_line_endings": "lf", "dry_run": true }, "result": "Preview: BOM removed, Trailing whitespace removed, Line endings → LF", "ms": 1 }, { "tool": "cleanup_file", "args": { "path": "/tmp/ellmos-test/messy.txt", "remove_bom": true, "remove_trailing_whitespace": true, "normalize_line_endings": "lf", "dry_run": false }, "result": "Cleaned: BOM removed, Trailing whitespace removed, Line endings → LF. Verified via xxd: no BOM bytes, no CRLF, no trailing spaces.", "ms": 1 } ], "success_rate": "9/9 (100%)", "p50_ms": 1, "tools_tested": 4, "tools_not_tested": ["fix_encoding", "fix_umlauts", "detect_dupes", "folder_diff", "batch_rename", "archive", "scan_emoji", "regex_test"] }