{"_id":"@ee_will_i/simple-data-comparator-mcp","_rev":"3-dbf3cc7572cf87d833b2d529ec31ce93","name":"@ee_will_i/simple-data-comparator-mcp","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"@ee_will_i/simple-data-comparator-mcp","version":"0.0.1","keywords":["mcp","validator","comparator"],"author":{"name":"Bogdan Shevtsov"},"license":"MIT","_id":"@ee_will_i/simple-data-comparator-mcp@0.0.1","maintainers":[{"name":"ee_will_i","email":"ee_will_i@mail.ru"}],"homepage":"https://github.com/EE-WILL-I/simple-data-comparator-mcp#readme","bugs":{"url":"https://github.com/EE-WILL-I/simple-data-comparator-mcp/issues"},"dist":{"shasum":"2e9576084060b66b0aa731869669f652106f295b","tarball":"https://registry.npmjs.org/@ee_will_i/simple-data-comparator-mcp/-/simple-data-comparator-mcp-0.0.1.tgz","fileCount":31,"integrity":"sha512-gqllGBGxEScFf3SsyN6n8tSqn2xVKi3TIwS/qoMV93NErUPCZBcdLXHWIJMW4+oj5KN44aBwOrvy23uYheeLFw==","signatures":[{"sig":"MEQCIGRAAWybK/tV7Vt2pZ1bkI4rG0oVdvPdguZi8fKiLBVEAiAxoLrZucQPwlUPbb6DgDCvRp9MpHGay/81lEzbA3Erkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222695},"main":"./dist/index.js","type":"CommonJS","gitHead":"f0dd6a158af97428934aa355ef1f67a9ace2e6c9","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"npm run clean && tsc","clean":"node -e \"fs.rmSync('dist', { recursive: true, force: true })\"","start":"node ./dist/index.js"},"_npmUser":{"name":"ee_will_i","email":"ee_will_i@mail.ru"},"repository":{"url":"git+https://github.com/EE-WILL-I/simple-data-comparator-mcp.git","type":"git"},"_npmVersion":"11.5.2","description":"Simple toolset for performing validations for JSON, XML, CSV and text files with report generation in HTML format.","directories":{},"_nodeVersion":"24.4.1","dependencies":{"ajv":"^8.20.0","daff":"^1.4.2","diff":"^9.0.0","uuid":"^14.0.1","xlsx":"^0.18.5","dotenv":"^16.4.7","csv-parse":"^7.0.2","diff2html":"^3.4.56","ajv-formats":"^3.0.1","diff-js-xml":"^1.0.8","jsondiffpatch":"^0.7.6","fast-xml-parser":"^5.10.1","@aws-sdk/client-s3":"^3.1102.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.10.0","@opentelemetry/sdk-node":"^0.221.0","@opentelemetry/resources":"^2.10.0","@modelcontextprotocol/sdk":"^1.29.0","@opentelemetry/semantic-conventions":"^1.43.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","ts-jest":"^29.4.12","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^26.1.2","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@babel/plugin-transform-modules-commonjs":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/simple-data-comparator-mcp_0.0.1_1785908092996_0.3508086377165631","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@ee_will_i/simple-data-comparator-mcp","version":"0.0.2","keywords":["mcp","validator","comparator"],"author":{"name":"Bogdan Shevtsov"},"license":"MIT","_id":"@ee_will_i/simple-data-comparator-mcp@0.0.2","maintainers":[{"name":"ee_will_i","email":"ee_will_i@mail.ru"}],"homepage":"https://github.com/EE-WILL-I/simple-data-comparator-mcp#readme","bugs":{"url":"https://github.com/EE-WILL-I/simple-data-comparator-mcp/issues"},"bin":{"simple-data-comparator-mcp":"dist/index.js"},"dist":{"shasum":"1593b38e3c4c995f8b8dae866e17972945a75cbb","tarball":"https://registry.npmjs.org/@ee_will_i/simple-data-comparator-mcp/-/simple-data-comparator-mcp-0.0.2.tgz","fileCount":22,"integrity":"sha512-dAor+US7rd0qvvOgbYMfUZnIuAiV4CoSUIyffX4OZd1OvcSrSbMMa1h3n3nbN+ueKYDTU0n+VvDXdY6d76IMQA==","signatures":[{"sig":"MEUCIQDNSWJ5Cn+r/Na8nZDii00fWGFIw3r3nNBDZkGhhLn0iAIgd42UjgRoS9HI6vHlLO27CVb4dcI+BXm0JRnXgEpSH+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119677},"main":"./dist/index.js","type":"CommonJS","gitHead":"f0dd6a158af97428934aa355ef1f67a9ace2e6c9","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"npm run clean && tsc","clean":"node -e \"fs.rmSync('dist', { recursive: true, force: true })\"","start":"node ./dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ee_will_i","email":"ee_will_i@mail.ru"},"repository":{"url":"git+https://github.com/EE-WILL-I/simple-data-comparator-mcp.git","type":"git"},"_npmVersion":"11.5.2","description":"Simple toolset for performing validations for JSON, XML, CSV and text files with report generation in HTML format.","directories":{},"_nodeVersion":"24.4.1","dependencies":{"ajv":"^8.20.0","daff":"^1.4.2","diff":"^9.0.0","uuid":"^14.0.1","xlsx":"^0.18.5","dotenv":"^16.4.7","csv-parse":"^7.0.2","diff2html":"^3.4.56","ajv-formats":"^3.0.1","diff-js-xml":"^1.0.8","jsondiffpatch":"^0.7.6","fast-xml-parser":"^5.10.1","@aws-sdk/client-s3":"^3.1102.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.10.0","@opentelemetry/sdk-node":"^0.221.0","@opentelemetry/resources":"^2.10.0","@modelcontextprotocol/sdk":"^1.29.0","@opentelemetry/semantic-conventions":"^1.43.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","ts-jest":"^29.4.12","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^26.1.2","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@babel/plugin-transform-modules-commonjs":"^7.29.7"},"_npmOperationalInternal":{"tmp":"tmp/simple-data-comparator-mcp_0.0.2_1785908254012_0.24395711896411454","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@ee_will_i/simple-data-comparator-mcp","version":"0.0.3","description":"Simple toolset for performing validations for JSON, XML, CSV and text files with report generation in HTML format.","keywords":["mcp","validator","comparator"],"homepage":"https://github.com/EE-WILL-I/simple-data-comparator-mcp#readme","bugs":{"url":"https://github.com/EE-WILL-I/simple-data-comparator-mcp/issues"},"repository":{"type":"git","url":"git+https://github.com/EE-WILL-I/simple-data-comparator-mcp.git"},"license":"MIT","author":{"name":"Bogdan Shevtsov"},"publishConfig":{"access":"public"},"type":"CommonJS","main":"./dist/index.js","bin":{"simple-data-comparator-mcp":"dist/index.js"},"scripts":{"clean":"node -e \"fs.rmSync('dist', { recursive: true, force: true })\"","build":"npm run clean && tsc","prepublishOnly":"npm run build","start":"node ./dist/index.js","dev":"npm run build && npm run start","test":"jest"},"dependencies":{"@aws-sdk/client-s3":"^3.1102.0","@modelcontextprotocol/sdk":"^1.29.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.10.0","@opentelemetry/resources":"^2.10.0","@opentelemetry/sdk-node":"^0.221.0","@opentelemetry/semantic-conventions":"^1.43.0","ajv":"^8.20.0","ajv-formats":"^3.0.1","csv-parse":"^7.0.2","daff":"^1.4.2","diff":"^9.0.0","diff-js-xml":"^1.0.8","diff2html":"^3.4.56","dotenv":"^16.4.7","fast-xml-parser":"^5.10.1","jsondiffpatch":"^0.7.6","uuid":"^14.0.1","xlsx":"^0.18.5"},"devDependencies":{"@babel/plugin-transform-modules-commonjs":"^7.29.7","@types/express":"^5.0.6","@types/jest":"^30.0.0","@types/node":"^26.1.2","@types/uuid":"^10.0.0","jest":"^30.4.2","ts-jest":"^29.4.12","typescript":"^5.8.3"},"_id":"@ee_will_i/simple-data-comparator-mcp@0.0.3","gitHead":"2158a7d36a0078e9cdef81f524e6fd0cbeb437a4","_nodeVersion":"24.4.1","_npmVersion":"11.5.2","dist":{"integrity":"sha512-7q8ARraqqs2J032M7aMHSpHoSYAXuR71R4rYjbyYS8WySKfCLhCGkEqRzt3pirpBUvVC9b/j0iYz+vCQEdR1LQ==","shasum":"2dc02616bcb79f77b39de7121ce1b7f24514a7e0","tarball":"https://registry.npmjs.org/@ee_will_i/simple-data-comparator-mcp/-/simple-data-comparator-mcp-0.0.3.tgz","fileCount":23,"unpackedSize":122608,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCgt+Bm1kS8WZ/nvh7U1+WgjCbAVB+cWfyIoBwKr357dQIgBHsH9SDanINYgysKd7BvqLpWcRhrH3XIoMDeFEABtc4="}]},"_npmUser":{"name":"ee_will_i","email":"ee_will_i@mail.ru"},"directories":{},"maintainers":[{"name":"ee_will_i","email":"ee_will_i@mail.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/simple-data-comparator-mcp_0.0.3_1786002247288_0.9612808704317783"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-05T05:34:52.845Z","modified":"2026-08-06T07:44:07.552Z","0.0.1":"2026-08-05T05:34:53.149Z","0.0.2":"2026-08-05T05:37:34.151Z","0.0.3":"2026-08-06T07:44:07.427Z"},"bugs":{"url":"https://github.com/EE-WILL-I/simple-data-comparator-mcp/issues"},"author":{"name":"Bogdan Shevtsov"},"license":"MIT","homepage":"https://github.com/EE-WILL-I/simple-data-comparator-mcp#readme","keywords":["mcp","validator","comparator"],"repository":{"type":"git","url":"git+https://github.com/EE-WILL-I/simple-data-comparator-mcp.git"},"description":"Simple toolset for performing validations for JSON, XML, CSV and text files with report generation in HTML format.","maintainers":[{"name":"ee_will_i","email":"ee_will_i@mail.ru"}],"readme":"# Simple Data Comparator MCP\n\nSimple toolset for performing comparison of JSON, XML, XLSX, CSV and text data in Actual-Expected format with different options.\n\n# Documentation\n\nAgent-oriented reference for the **simple-data-comparator-mcp** MCP server. Each comparator compares an **actual** value against an **expected template** and returns pass/fail with structured difference lines on failure.\n\n## Tools\n\n| MCP Tool | Doc | Use when |\n|---|---|---|\n| `compare-json` | [json-comparator.md](skills/json-comparator/references/json-comparator.md) | Comparing JSON API responses, config objects, or structured data |\n| `compare-xml` | [xml-comparator.md](skills/xml-comparator/references/xml-comparator.md) | Comparing XML documents, SOAP payloads, or config files |\n| `compare-csv` | [csv-comparator.md](skills/csv-comparator/references/csv-comparator.md) | Comparing tabular CSV exports or reports |\n| `compare-xlsx` | [xlsx-comparator.md](skills/xlsx-comparator/references/xlsx-comparator.md) | Comparing Excel workbook sheets |\n| `compare-text` | [text-comparator.md](skills/text-comparator/references/text-comparator.md) | Exact line-by-line text comparison (logs, plain output) |\n\n## Common response shape\n\nAll tools return MCP content with this structure:\n\n```json\n{\n  \"content\": [{ \"type\": \"text\", \"text\": \"<result message>\" }],\n  \"isError\": true | false\n}\n```\n\n- **Pass:** `isError: false`, text is `Validation passed.`\n- **Fail:** `isError: true`, text includes `Validation failed.` and difference lines (except text comparator, which does not expose diff details via MCP)\n\n## Agent workflow\n\n1. **Choose the tool** that matches the data format you need to compare.\n2. **Prepare inputs** — JSON/XML/CSV/text as strings; XLSX as **workspace file paths** (e.g. `Templates/test/1.xlsx`) or base64.\n3. **Call the MCP tool** — for Excel use **`compare-xlsx`** with `actual` and `template` file paths.\n4. **Read `isError`** — if `true`, parse the difference lines to explain what diverged.\n5. **Apply options** when needed (e.g. `strictMode` for JSON, `includeColumns` for CSV, `ignoreRowOrder` for unordered row sets).\n\n## Discovering tools at runtime\n\nUse MCP tool discovery (`tools/list`) to get live schemas. Tool names are stable: `validate-json`, `validate-xml`, `validate-csv`, `validate-xlsx`, `validate-text`.\n\n## Running\n\nBuild and start the stdio MCP server:\n\n```bash\nnpm run build\nnpm start\n```\n\nThe server communicates over stdin/stdout. Logs are written to stderr so they do not interfere with MCP protocol messages.\n\n## Cursor configuration\n\nAdd this to your Cursor MCP settings (`.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"simple-data-comparator-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@ee_will_i/simple-data-comparator-mcp\"\n      ]\n    }\n  }\n}\n```\n\nReplace the path with your local project path. Run `npm run build` before starting the server.\n","readmeFilename":"README.md"}