Skip to main content
Glama
README.md
# json-mcp-lite

Turn a JSON file into an **MCP server** in one command, so Claude Desktop, Claude Code, Cursor or any stdio MCP client can browse and search your data.

Give it a catalogue, an FAQ, a price list or a docs index, and it creates three read-only tools:

| Tool | What it does |
|---|---|
| `<name>_list` | List records, with `limit` / `offset` paging |
| `<name>_search` | Keyword search; every word must match, case-insensitive |
| `<name>_get` | One record by its id field |

MIT licence. Node.js 20+. Two dependencies: the official `@modelcontextprotocol/sdk` and `zod`.

## Try it

```bash
git clone https://github.com/scoretracker4321/json-mcp-lite
cd json-mcp-lite && npm install
npm start          # serves examples/products.json on stdio
npm test
```

## Use it with Claude Desktop or Cursor

```json
{
  "mcpServers": {
    "products": {
      "command": "node",
      "args": [
        "/abs/path/json-mcp-lite/src/server.js",
        "--file", "/abs/path/products.json",
        "--name", "products",
        "--id", "sku",
        "--search", "title,description"
      ]
    }
  }
}
```

Claude Code:

```bash
claude mcp add products -- node /abs/path/json-mcp-lite/src/server.js --file /abs/path/products.json --name products --id sku
```

Then ask: *"Which teas are under ₹400 and in stock?"* or *"Show me product MUG-001."*

## Options

| Flag | Default | Meaning |
|---|---|---|
| `--file` | (required) | The JSON file |
| `--path` | root | Dot path to the array inside the file, e.g. `data.items` |
| `--name` | `records` | Tool name prefix: `products` → `products_list`, … |
| `--id` | `id` | Field used by `<name>_get` |
| `--search` | all fields | Comma-separated fields that `<name>_search` looks in |

## Need more than a JSON file?

**json-mcp-lite** is the free, local, single-file part of [**MCP Server Kit**](https://checkout.dodopayments.com/buy/pdt_0NnmvXPBAvJBJC3NqGDJq?quantity=1) ($29, one-time). The Kit adds:

- **Any REST API → MCP tools** from its OpenAPI 3 spec: one typed tool per operation, auth injected from env, read-only filter, include/exclude lists
- **Remote hosting** over Streamable HTTP (stateless, proxy-friendly), not only stdio
- **API-key auth** and **per-key rate limits**, CORS, `/health` and `/tools` endpoints
- **Several sources in one server**, set up in one YAML/JSON config file
- **Docker** image, an Express router to mount inside your own app, and deploy guides

| | json-mcp-lite | MCP Server Kit |
|---|---|---|
| JSON file → list/search/get | ✅ | ✅ |
| stdio (Claude Desktop, Cursor, Claude Code) | ✅ | ✅ |
| OpenAPI / REST API → tools | | ✅ |
| Remote HTTP server | | ✅ |
| API keys + rate limits | | ✅ |
| Multiple sources, config file | | ✅ |
| Docker + deploy docs | | ✅ |
| Email support | | ✅ |

## Licence

MIT. Built by Brain Grain (support@braingrain.in).

TDQS

A4/5.0

Scored across 3 tools

Disambiguation5/5

products_list retrieves all records, products_search performs keyword matching, and products_get fetches by primary key. Each tool has a clearly distinct action and return shape, leaving no ambiguity about which to call for a given need.

Naming Consistency5/5

All three tools follow the same noun_verb pattern: products_list, products_search, products_get. The convention is applied uniformly with no deviations in casing or verb style.

Tool Count5/5

Three tools is a tight, well-scoped surface for a lite JSON data server exposing a single products collection. Each tool earns its place, covering the fundamental read patterns without redundancy.

Completeness4/5

The read surface is complete for retrieving data: full listing with pagination, keyword search, and single-record lookup by sku. Write operations are absent, but the 'lite' designation implies a read-only toolset, so this is a minor rather than critical gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues