jpx
JMESPath query tool with 320+ extended functions for JSON transformation and analysis
jmespath-extensions
NOTE
This work has moved to https://github.com/joshrotenberg/jpx which includes a full JMESPath Specification
implementation with some performance improvements over the official crate, the full extensions (plus more) implemented here, a higher level "engine"
library that includes meta for both evaluation and function discovery, and the jpx CLI tool and the jpx-mcp MCP server.
No further development will be done on this repository.
Extended JMESPath with 400+ functions. Rust library and Python bindings.
Installation
Rust
[dependencies]
jmespath_extensions = "0.9"
Python
pip install jmespath-extensions
Usage
Rust
use jmespath_extensions::search;
use serde_json::json;
let data = json!({"items": [1, 2, 3, 4, 5]});
let result = search("sum(items)", &data)?;
assert_eq!(result, json!(15));
// String functions
let data = json!({"name": "alice"});
let result = search("upper(name)", &data)?;
assert_eq!(result, json!("ALICE"));
// Date functions
let result = search("format_date(now(), '%Y-%m-%d')", &json!({}))?;
// Array functions
let data = json!({"values": [1, 2, 2, 3, 3, 3]});
let result = search("unique(values)", &data)?;
assert_eq!(result, json!([1, 2, 3]));
Python
import jmespath_extensions as jmx
# Basic usage
data = {"items": [1, 2, 3, 4, 5]}
result = jmx.search("sum(items)", data)
assert result == 15
# String functions
result = jmx.search("upper(name)", {"name": "alice"})
assert result == "ALICE"
# Array functions
result = jmx.search("unique(values)", {"values": [1, 2, 2, 3]})
assert result == [1, 2, 3]
Function Categories
| Category | Examples |
|---|---|
| String | upper, lower, split, replace, camel_case, pad_left |
| Array | first, last, unique, chunk, zip, flatten, group_by |
| Math | round, sqrt, median, stddev, percentile |
| Date/Time | now, parse_date, format_date, date_add, date_diff |
| Hash | md5, sha256, hmac_sha256, crc32 |
| Encoding | base64_encode, base64_decode, hex_encode, url_encode |
| Regex | regex_match, regex_extract, regex_replace |
| Geo | haversine, geo_distance_km, geo_bearing |
| Network | cidr_contains, is_private_ip, ip_to_int |
| JSON Patch | json_patch, json_merge_patch, json_diff |
| Fuzzy | levenshtein, jaro_winkler, soundex, metaphone |
| Expression | map_expr, filter_expr, sort_by_expr, group_by_expr |
See docs.rs for the full function reference.
Related Projects
- jpx - CLI, MCP server, and query engine built on this library
- JMESPath - The query language specification
- jmespath.rs - Rust JMESPath implementation
License
MIT or Apache-2.0
Related Servers
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Gemini MCP Server
An MCP server for interacting with Google's Gemini models through the Gemini CLI.
Tekion Persona Loader
Loads AI persona definitions from a GitLab repository.
GhidraMCP
Enables LLMs to autonomously reverse engineer applications by exposing core Ghidra functionality.
Profile MCP Server
An example MCP server deployable on Cloudflare Workers without authentication.
SuzieQ
Interact with the SuzieQ network observability platform via its REST API.
FDEP MCP Server
A static code analysis server for enterprise-scale Haskell codebases, providing over 40 comprehensive analysis tools.
Remote MCP Server (Authless)
An example of a remote MCP server without authentication, deployable on Cloudflare Workers.
PsiAnimator-MCP
A server for quantum physics simulation and animation, using QuTip for computations and Manim for visualizations.
40ants MCP
A framework for building Model Context Protocol (MCP) servers in Common Lisp.
Ollama MCP Bridge
A bridge API service connecting Ollama with Model Context Protocol (MCP) servers.