json-shaper-lite

io.github.tidybytetoolsPublished by GitHub account tidybytetoolsv1.1.0Updated Nov 5, 2026

Turn key: value notes, CSV/TSV and Markdown tables into typed JSON. Plain code, no AI, runs locally.

VerifiedSTDIODesktop onlyDeveloper ToolsData & Analytics

Overview

AI-generated overview

Local MCP server that converts pasted text or local text files (key: value notes, CSV/TSV, Markdown tables) into typed JSON.

What you can do
  • Convert text from the conversation into typed JSON, with format auto-detected or set to kv, csv or markdown
  • Read a local text file (.txt, .csv, .tsv, .md, up to 5 MB) and return the same typed JSON structure
  • Return a consistent result object with the detected format and the data, using deterministic plain code rather than an AI model
When to use it
Useful when an assistant has plain-text records or a table in the chat or in a local text file and needs clean, typed JSON without guessing values itself. Not intended for input that is already JSON, nested data, app logs, or binary formats such as Excel or PDF.
Requirements
Runs as a local stdio process started with uvx (uv required); the package is on PyPI and needs Python 3.10 or newer. No authentication, environment variables or headers are declared, and it does not use the internet.
Before you install
Both tools are read-only: files are only read, never changed, and nothing is sent over the network. Types are best guesses, so values like 007 or zip codes may become numbers and need fixing by hand; only one table per run is handled. A short promotional line about a paid version is printed to stderr in a terminal and can be turned off with --quiet.

Installation

In SourceWeft

  1. Open json-shaper-lite in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[Tidy Byte Tools]

json-shaper-lite

[License: MIT] [Python 3.10+] [MCP server]

Free tool that turns key: value notes, CSV/TSV and Markdown tables into clean JSON. Need app logs or US addresses parsed too? The paid version does that: json-shaper on Gumroad

Plain code, not AI, so the same text always gives the same JSON. Runs on your own computer. MIT license. Works with Python 3.10 and newer, on Windows, Mac and Linux.

Install

pip install json-shaper-lite

Or use pipx, which keeps it in its own space:

pipx install json-shaper-lite

Want the newest code from GitHub instead?

pip install git+https://github.com/tidybytetools/json-shaper-lite

Or just download json_shaper_lite.py and run it with python3. That one file uses only Python's standard library. (Installing with pip also adds the mcp package, which the MCP server needs.)

Use it

printf 'Name: Ada\nAge: 36\nActive: yes' | json-shaper-litejson-shaper-lite export.csvjson-shaper-lite notes.md --format markdownjson-shaper-lite export.csv --json      # {"ok": true, "format": "csv", "data": [...]}

Output:

json
{"name": "Ada", "age": 36, "active": true}

Numbers come out as numbers, yes/no and true/false as booleans, and empty or "null" as null. The format is detected for you, or you can set it with --format kv|csv|markdown.

From Python:

python
from json_shaper_lite import shapeshape("x,y\n1,2")  # {'format': 'csv', 'data': [{'x': 1, 'y': 2}]}

When you run it in a terminal it prints one short line about the paid version to stderr after the result. It never goes into your JSON output, it only shows when you are looking at a terminal, and --quiet turns it off.

Known limits

  • It makes flat JSON. It does not flatten or unflatten nested JSON. For that, use a tool like flatten-json.
  • Types are a best guess. A value like 007 or a zip code can turn into a number. Fix those by hand after.
  • One table per run. Two Markdown tables in one file get mixed together. Split them first.
  • No app logs or addresses. Those are in the paid version.

How it compares to other free tools

json-shaper-liteflatten-jsoncsvkit csvjsonpandas
Main jobmessy text → JSONnested JSON → flat (and back)CSV → JSONfull data toolkit
Install sizeone file (pip adds mcp for the MCP server)smallmediumlarge
key: value notesyesnonono
Markdown tablesyesnonono, not built in
CSV/TSVyesnoyesyes
Guesses numbers and true/falseyesnoyesyes
Nested JSON flatten/unflattennoyesnoyes (json_normalize)
MCP server for AI appsyesnonono

If your data is already JSON and just too nested, flatten-json is the better pick.

Use it from Claude Desktop or Cursor (MCP)

There is a small free MCP server built in. It gives your AI app two tools. Both only read. They never write or change files, and they never use the internet. It needs uv.

Run it by hand to check it starts (it waits quietly for an app to talk to it):

uvx json-shaper-lite mcp

Claude Desktop (claude_desktop_config.json) or Cursor (~/.cursor/mcp.json):

json
{  "mcpServers": {    "json-shaper-lite": {      "command": "uvx",      "args": ["json-shaper-lite", "mcp"]    }  }}

uvx --from json-shaper-lite json-shaper-lite-mcp starts the same server.

Tools:

  • shape_text_to_json(text, format="auto"): for text in the chat.
  • shape_file_to_json(path, format="auto"): for a text file on your computer (.txt, .csv, .tsv, .md, up to 5 MB).

Both return {"format": "csv", "data": [...]}. format can be auto, kv, csv or markdown.

For AI agents

  • Use when: you have plain text in key: value lines, CSV/TSV, or a Markdown table and need typed JSON.
  • Don't use when: the input is already JSON, it's app logs, or it's nested data. Use the paid version for logs.
  • Input: text on stdin or a file path. Optional --format kv|csv|markdown.
  • MCP: uvx json-shaper-lite mcp gives two read-only tools, shape_text_to_json and shape_file_to_json.
  • Output: with --json, one object: {"ok": true, "format": "csv", "data": [...]}. On error ok is false. Exit code 0 ok, 1 error.
  • Hint lines go to stderr only, and only in a terminal, so stdout is always clean JSON. See also llms.txt.

Lite vs paid

lite (free)json-shaper
key: value notes, CSV/TSV, Markdown tablesyesyes
App logs (timestamp, level, message, key=value fields)noyes
One-line US address splitternoyes
tool.json manifest for scripts and AI agentsnoyes

Tests

pip install "mcp>=1.10,<2"python3 -m unittest discover tests

The MCP tests are skipped if mcp is not installed.

License

MIT. See LICENSE.

Source: README.md at commit 4d49aa2

Tools

2

shape_text_to_json

Turn text into JSON

Turn pasted text (key: value notes, CSV/TSV or a Markdown table) into typed JSON. Use this when you have plain-text records or a table in the conversation and need clean JSON you can trust, without guessing values yourself. It is plain code, not an AI model, so the same text always gives the same JSON and nothing is made up. Do not use it when the text is already JSON, is nested data, is app logs, or is a file on disk (use shape_file_to_json for files). format: "auto" (default) picks for you. Or force "kv" (key: value or key=value lines, a blank line starts a new record), "csv" (comma, semicolon, tab or | separated, first row is the header) or "markdown" (a | pipe | table, first row is the header). Returns {"format": <format used>, "data": <JSON>}. data is a list of records for CSV and tables. For key: value text it is one object, or a list when blank lines split it into several records. Keys become lower_snake_case. Numbers become numbers, yes/no and true/false become booleans, empty or "null" becomes null.

Parameterstextrequiredformat

shape_file_to_json

Turn a text file into JSON

Read a local text file (key: value notes, .csv, .tsv or a Markdown table) and return typed JSON. Use this when the data is in a file on this computer, so you don't have to paste it. The file is only read, never changed. Do not use it for Excel (.xlsx), PDF or other binary files, for files that are already JSON, or for app logs. path: full path to a UTF-8 text file, up to 5 MB. format: "auto" (default) picks for you. Or force "kv" (key: value or key=value lines, a blank line starts a new record), "csv" (comma, semicolon, tab or | separated, first row is the header) or "markdown" (a | pipe | table, first row is the header). Returns {"format": <format used>, "data": <JSON>}, the same as shape_text_to_json.

Parameterspathrequiredformat

Version history

1
  1. v1.1.0LatestNov 4, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts