@unstringify/mcp
v0.1.1
Published
unstringify as an MCP server: fix broken JSON with named fixes, convert between JSON, YAML, XML, CSV, NDJSON, Markdown and TypeScript, read CSV, NDJSON and logs as records, unpack stringified JSON, compare by structure. A local process — nothing leaves th
Maintainers
Readme
unstringify — MCP server
The engine behind unstringify.com, as tools an agent can call: fix broken JSON with named fixes, validate, convert between JSON, YAML, XML, CSV, NDJSON, a Markdown table and TypeScript, read CSV, NDJSON and logs as records, unpack stringified JSON, compare by structure or by key.
It is a local process on stdio. It reads the text you hand it (or a file path you name) and answers; it makes no network request — there is no network code in the package.
Install
Claude Code:
claude mcp add unstringify -- npx -y @unstringify/mcpCursor — .cursor/mcp.json (or the global one):
{
"mcpServers": {
"unstringify": { "command": "npx", "args": ["-y", "@unstringify/mcp"] }
}
}VS Code: nothing to write — the unstringify extension (0.6.0 or later, VS Code 1.101 or later) registers this server for Copilot's agent mode.
Any other MCP client: the command is npx -y @unstringify/mcp, the
transport is stdio.
Tools
Every tool takes text, or path to a file it reads itself, and answers
with JSON that ends in one measured sentence — the same sentence the app's
status line prints.
| Tool | What it answers |
|---|---|
| fix_json | The fixed text, every fix by line and kind (line 3 · Single → double quotes), and whether the result is valid now. JSON, YAML and XML. Deterministic — it never guesses at content. → 7 fixes on 6 lines · valid JSON now. |
| validate | Valid or not, and where not: line, column, the parser's message, a hint. → Not valid JSON · 3 errors. |
| convert | Any format into any target the engine writes: yaml, csv, ts, markdown, ndjson, xml, json, json-min. A document into rows takes its main list of records with the rest of the document on every row. → TypeScript · 1,204 bytes. |
| read_records | CSV, TSV, NDJSON, a Markdown table or a raw log as one JSON value per record, with the counts, the columns and the levels. delimiter, header and pattern are the reading answers the app would ask for; absent, the engine's measured defaults decide. → CSV · 1,284 rows. |
| unpack | Every string that holds JSON, XML or YAML opened in place — the literal replaced by what it held, every other byte where it was. valuePath opens one. → 3 packed values opened in place. |
| compare | Two documents by structure (keys sorted, whitespace ignored, one row per differing path) or two sets of rows by key (added, removed, changed — and in which fields). → 12 changed · 3 added · 1 removed · by id. |
Lists are capped so an answer fits an agent's context: 200 diff rows, 1,000 records, 20 errors; the counts are always the whole.
Privacy
The server runs on your machine and talks to your agent over stdio. It reads what it is given and nothing else; nothing is uploaded, logged or kept. The same engine runs in the browser at unstringify.com — where nothing leaves the tab — and in the VS Code extension.
Licence
Proprietary — see LICENSE. Free to use. Questions: [email protected]
