prism MCP Server
Enables exploring and querying structured data (JSON, JSONL, CSV, TSV) via shape, read, find, and diff operations, with bounded resource usage.
README
π» prism
The agent's data reader. Point it at a JSON, JSONL, CSV, or TSV blob β a file, a URL, or a string you already hold β and get back its shape and the slice you asked for, never the whole thing. What scout does for a web page and lens does for a source file, prism does for structured data.
Part of tools-for-agents. Zero dependencies β the Node standard library and nothing else. CLI + web view + MCP.
Why
An agent that gets handed a 200 KB API response has three bad options: paste it all into the context window, guess at its structure, or write a throwaway script to poke at it. prism is the fourth option.
# the SHAPE of a big response β a few hundred tokens instead of the whole payload
curl -s https://api.example.com/users | prism shape -
{
"type": "object",
"keys": 4,
"fields": {
"page": { "type": "int", "sample": 2 },
"total": { "type": "int", "sample": 1284 },
"users": { "type": "array", "len": 50, "sampled": 20,
"of": { "type": "object", "keys": 4, "fields": {
"id": { "type": "int" },
"name": { "type": "string" },
"email": { "type": "string" },
"roles": { "type": "array", "len": 2, "of": { "type": "string" } } } } }
}
}
Now you know where everything is. Read exactly what you need:
prism read users.json --path 'data.users[*].email' # every email, and nothing else
prism find config.json "timeout" # where does 'timeout' live? β the paths
The four verbs
| Command | Gives you | For |
|---|---|---|
prism shape <src> |
the skeleton: keysβtypes, array lengths, nesting | seeing the structure of a blob you've never met |
prism read <src> --path P |
the subtree at path P, token-budgeted |
pulling out just the part you need |
prism find <src> "<q>" |
the paths where a key/value lives | locating something in a big document |
prism diff <a> <b> |
the paths that changed β added / removed / changed | what differs between two responses, configs, or a before and after |
Sources (<src>): a file path, an http(s):// URL, or - for stdin. Paths: data.items[0].name,
users[*].id ([*] maps over an array), logs[0:20] (a half-open slice β [:20] / [100:] too, bounds
clamp), logs[-1] (a negative index counts from the end β [-20:] is the last twenty), $ for the root.
Formats: JSON and JSONL/NDJSON auto-detect;
CSV and TSV come from a .csv/.tsv source or --format csv (the header row names the columns, so a
spreadsheet becomes an array of row objects that shape/read/find/diff all work on).
It is built to read untrusted data
prism reads blobs an agent did not write, so every operation is bounded β the same discipline that keeps a sandbox safe:
- Byte-capped before parse. A file bigger than the cap (64 MB default) is refused up front, not read
into memory to find out.
JSON.parseis all-or-nothing; a 2 GB file handed to it is a frozen process. - Depth- and key-bounded.
shapestops descending at a depth and shows a fixed number of keys per level, so the shape of a pathologically deep or wide document is still small. - Token-budgeted. An over-budget
readhands back the value's shape and its honest size β never a silently truncated body that looks complete. - Node-bounded search.
findvisits at most a fixed number of nodes, and says so if it stopped early.
Every clipped or empty answer carries the size of the whole ("withheld": 9960, "len": 2000), because
"20 results" and "20 of 1284 results" are different facts.
Install
node --version # 22+; nothing to npm install
npm test # node --test
node src/cli.js shape package.json
node src/cli.js serve # the web view β http://localhost:7970 (paste a blob, explore its shape)
npm run mcp # the MCP server, stdio JSON-RPC
The web view
prism serve [--port 7970] opens a single-file explorer: paste a blob (or point at a file or URL), see its
shape as a collapsible tree, click any node to read the value at its path (token-budgeted) β or type a
path (users[0:10], logs[-1]) to reach a slice or an element the tree can't click to β find a key or
value across the whole document, and Compare β· it against a second blob to diff them (added / removed
/ changed paths). A read as selector declares the format β auto sniffs JSON vs JSONL, and
because a spreadsheet can't be sniffed apart from prose you pick CSV / TSV to read a pasted sheet as
an array of row objects (the same knob rides the file/URL load and the compare blob). It holds one document
in RAM β no store, nothing written to disk.
MCP
Four tools β prism_shape, prism_read, prism_find, prism_diff β each read-only and open-world. Pass a blob inline
as data, or point at a file/URL with source:
{ "name": "prism_read",
"arguments": { "data": "{\"user\":{\"email\":\"a@x.com\"}}", "path": "user.email" } }
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.