An MCP server that gives AI assistants the ability to parse partial / messy / truncated JSON.
Built on top of @mukundakatta/streamparse.
Works with Claude Desktop, Cursor, Cline, Windsurf, Zed, and any other MCP client.
Recover a JSON value from a possibly-truncated string. Always returns a valid value with synthetic closure of any open strings, arrays, or objects.
{
"text": "{\"type\":\"tool_use\",\"name\":\"edit_file\",\"input\":{\"path\":\"a/b.ts\",\"cont"
}→
{
"value": {
"type": "tool_use",
"name": "edit_file",
"input": { "path": "a/b.ts", "cont": null }
},
"complete": false,
"path": ["input", "cont"],
"bytes_consumed": 67,
"confidence": 0.65
}Strip prose, ```json fences, and comments around a JSON value embedded in
LLM output. Returns the first parseable value.
Sure, here you go:
```json
{ "answer": 42 }
Let me know!
→ `{ "answer": 42 }`
### `validate_json`
Strict-mode RFC 8259 validator. Returns `ok=true` and the parsed value on
success, or `ok=false` with a precise byte position and error message on
failure.
## Install
### Claude Desktop
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"streamparse": {
"command": "npx",
"args": ["-y", "@mukundakatta/streamparse-mcp"]
}
}
}
Same shape, in the appropriate mcp.json for your client. Most clients
auto-discover via npx -y @mukundakatta/streamparse-mcp.
npm install -g @mukundakatta/streamparse-mcp
mcp-streamparse # listens on stdioWhen an LLM is mid-tool-call and you need the assistant to reason about the
half-formed JSON it just wrote, no other tool gives a usable answer. Standard
JSON.parse throws. Regex extraction misses nested structure. This MCP server
gives Claude (or whichever model is driving) a real handle on partial JSON,
right where it lives.
MIT.