json-mcp

lpenguin/json-mcp

3.2

If you are the rightful owner of json-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

A Model Context Protocol (MCP) server for querying and manipulating JSON data using JSONPath expressions.

Tools
6
Resources
0
Prompts
0

json-mcp

A Model Context Protocol (MCP) server for querying and manipulating JSON data using JSONPath expressions.

Features

This MCP server provides powerful tools for working with JSON files:

  • search: Search JSON data in a file by simple text and return JSONPaths with context around matching elements
  • query: Query JSON data in a file by JSONPath expressions
  • appendToArray: Append element to array(s) selected by JSONPath
  • set: Set (upsert) a value at a JSONPath. Can update a single match or all matches.
  • delete: Delete element at JSONPath in a file

Installation

You can run this server using npx:

npx @lpenguin/json-mcp

Or install it globally:

npm install -g @lpenguin/json-mcp

Usage

As an MCP Server

Add to your MCP client configuration (e.g., Claude Desktop, Cline):

{
  "mcpServers": {
    "@lpenguin/json-mcp": {
      "command": "npx",
      "args": ["-y", "@lpenguin/json-mcp"]
    }
  }
}

Tool Examples

Search for text in JSON file
// Search for "apple" in data.json
{
  "name": "search",
  "arguments": {
    "file": "/path/to/data.json",
    "searchText": "apple"
  }
}
Query by JSONPath
// Get all book titles from books.json
{
  "name": "query",
  "arguments": {
    "file": "/path/to/books.json",
    "path": "$.store.book[*].title"
  }
}
Append to array
// Append new item to array in items.json
{
  "name": "appendToArray",
  "arguments": {
    "file": "/path/to/items.json",
    "path": "$.items",
    "value": {"name": "new item", "price": 9.99}
  }
}
Set (upsert) data
// Set or create a value at path in config.json (updates first match only)
{
  "name": "set",
  "arguments": {
    "file": "/path/to/config.json",
    "path": "$.settings.timeout",
    "value": 5000
  }
}

// Set value at all matching paths (when all=true)
{
  "name": "set",
  "arguments": {
    "file": "/path/to/data.json",
    "path": "$.items[*].price",
    "value": 9.99,
    "all": true
  }
}
Delete data
// Delete first item from array in items.json
{
  "name": "delete",
  "arguments": {
    "file": "/path/to/items.json",
    "path": "$.items[0]"
  }
}

JSONPath Syntax

This server uses jsonpath-plus which supports the full JSONPath specification:

  • $ - Root node
  • @ - Current node
  • . - Child operator
  • .. - Recursive descent
  • * - Wildcard
  • [] - Array subscript
  • [,] - Union operator
  • [start:end:step] - Array slice
  • ?() - Filter expression
  • () - Script expression

Examples:

  • $.store.book[*].author - All authors
  • $..author - All authors (recursive)
  • $.store.* - All things in store
  • $.store..price - All prices in store
  • $..book[?(@.price < 10)] - All books cheaper than 10
  • $..book[-1:] - Last book

Development

Setup

npm install

Build

npm run build

Test

npm test

License

MIT