Skip to main content

jpx-mcp

Invoke jpx MCP server tools for JMESPath evaluation, function discovery, JSON utilities, and cross-server tool discovery. Use when evaluating expressions via MCP, exploring functions, analyzing JSON structure, or managing named queries.

Source facts

Repository
joshrotenberg/jpx
Last source activity
August 24, 2026 at 17:29
Detected SKILL.md language
English
Stars
4
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
4 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
jpx-mcp
description
Invoke jpx MCP server tools for JMESPath evaluation, function discovery, JSON utilities, and cross-server tool discovery. Use when evaluating expressions via MCP, exploring functions, analyzing JSON structure, or managing named queries.
license
MIT OR Apache-2.0
metadata
{"author":"joshrotenberg","version":"1.0"}
compatibility
Requires jpx-mcp server (stdio or HTTP transport)
# jpx MCP Server Guide The jpx MCP server exposes 31 tools for JMESPath evaluation, function discovery, JSON utilities, and more. It supports 470+ extension functions beyond the JMESPath specification. ## Tool Groups ### Evaluation (5 tools) | Tool | Use when... | |------|-------------| | `evaluate` | Running a JMESPath expression against inline JSON data | | `evaluate_file` | Querying a JSON file on disk (avoids passing large data through protocol) | | `batch_evaluate` | Running multiple expressions against the same input (parses once) | | `validate` | Checking if an expression is syntactically valid before running it | | `explain` | Understanding what an expression does step by step | **`evaluate` example:** ```json {"expression": "users[?age > `30`].name", "input": "{\"users\":[{\"name\":\"alice\",\"age\":35}]}"} ``` **`batch_evaluate`** is more efficient than calling `evaluate` multiple times when you need several values from the same data -- it parses the input JSON once. **`explain`** returns a structured breakdown with node types, functions used, and complexity rating. Works on invalid expressions too (returns parse error details). ### Function Discovery (7 tools) | Tool | Use when... | |------|-------------| | `functions` | Listing available functions, optionally filtered by category | | `describe` | Getting detailed info on a specific function (signature, examples) | | `batch_describe` | Getting details for several functions in one call | | `categories` | Listing all function categories | | `search` | Finding functions by keyword (fuzzy matching across names, descriptions) | | `similar` | Finding functions related to a known function | | `suggest_function` | Describing what you want in natural language | **Discovery workflow:** 1. `search` with a keyword to find relevant functions 2. `describe` to get the full signature and examples 3. `evaluate` to try it out **`suggest_function`** accepts plain English: "remove duplicates from an array" returns ranked suggestions with relevance explanations. ### JSON Utilities (7 tools) | Tool | Use when... | |------|-------------| | `format` | Pretty-printing or compacting JSON (with configurable indent) | | `diff` | Generating RFC 6902 JSON Patch between two documents | | `patch` | Applying RFC 6902 JSON Patch operations | | `merge` | Applying RFC 7396 JSON Merge Patch | | `keys` | Extracting object keys (optionally recursive with dot notation) | | `stats` | Analyzing JSON structure (type, size, depth, field analysis) | | `paths` | Listing all paths in dot notation (optionally with types/values) | **Data exploration workflow:** 1. `stats` to understand overall structure 2. `paths` to see all available fields 3. `keys` with `recursive: true` for nested structure 4. `evaluate` with expressions informed by the structure ### Query Store (5 tools) | Tool | Use when... | |------|-------------| | `define_query` | Saving a named query for reuse while this server process runs | | `get_query` | Retrieving a stored query's expression | | `delete_query` | Removing a stored query | | `list_queries` | Showing all stored queries | | `run_query` | Executing a stored query against new input | **Iterative query building:** 1. `define_query` with an initial expression 2. `run_query` to test against data 3. Refine and `define_query` again (updates existing) 4. `run_query` with different inputs Queries are validated on definition -- invalid expressions are rejected. ### Cross-Server Discovery (6 tools) | Tool | Use when... | |------|-------------| | `register_tools` | Registering another MCP server's tools for searchable discovery | | `query_tools` | Searching across all registered tools (BM25 full-text search) | | `similar_tools` | Finding tools similar to a given tool | | `unregister_discovery` | Removing a server from the discovery index | | `list_discovery_servers` | Listing registered servers | | `list_discovery_categories` | Listing tool categories across servers | **Registration** supports two formats: - **Full spec:** Detailed `DiscoverySpec` with params, examples, categories, tags - **Simplified:** Just `server_name` + array of `{name, description, tags}` **Search** uses BM25 indexing across tool names, descriptions, tags, categories, and parameters. ### Engine Info (1 tool) | Tool | Use when... | |------|-------------| | `engine_info` | Checking server version, mode, function count, and process state | Optionally include the discovery JSON schema (`include_schema: true`) or index statistics (`include_index_stats: true`). ## Common Workflows ### Explore unfamiliar JSON ``` stats(input) -> paths(input) -> evaluate(expression, input) ``` ### Find the right function ``` search("group elements") -> describe("group_by") -> evaluate(...) ``` ### Build complex queries iteratively ``` define_query("v1", "users[*].name") -> run_query("v1", data) -> define_query("v1", "users[?active].name | sort(@)") -> run_query("v1", data) ``` ### Compare JSON documents ``` diff(source, target) -> review patch ops -> patch(document, ops) ``` ## Configuration ### Transport modes - **stdio** (default): For local MCP client integration - **HTTP**: For remote access (`--transport http --host 0.0.0.0 --port 3000`) ### Filesystem access `evaluate_file` is unrestricted on stdio by default for backward compatibility and disabled on HTTP by default. Pass `--allow-root <DIRECTORY>` repeatedly to restrict either transport to canonicalized directory trees. Symlinks cannot escape those roots during canonical-path validation. Treat allowed roots as a trust boundary: use read-only mounts or directories that untrusted users cannot rewrite concurrently. Use `engine_info` to inspect the effective policy. ### Strict mode `--strict` disables all extension functions, limiting to the 26 standard JMESPath functions. ### Config file The server discovers `jpx.toml` configuration (cwd -> home -> XDG) for function filtering, query libraries, and other engine settings. ## Related Skills - [jmespath-query](../jmespath-query/SKILL.md) -- JMESPath expression syntax - [jpx-functions](../jpx-functions/SKILL.md) -- 470+ extension functions - [jpx-cli](../jpx-cli/SKILL.md) -- Command-line usage
View on GitHub