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
Server Terkait
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
MCP LLaMA
An MCP server with weather tools and LLaMA integration.
Dart MCP Server
An MCP server that exposes Dart SDK commands for AI-powered development.
MCP Client
A Python client for connecting to Model Context Protocol (MCP) servers, supporting local scripts and npx packages.
IDA MCP Server
A Model Context Protocol server for the IDA Pro disassembler.
Remote MCP Server (Authless)
An example of a remote MCP server deployable on Cloudflare Workers without authentication.
RenPy MCP
MCP server + visual development tools for Ren'Py visual novel engine. 60 tools, story map, live dashboard, standalone CLI.
Web3 MCP
Interact with multiple blockchains including Solana, Ethereum, THORChain, XRP Ledger, TON, Cardano, and UTXO chains.
Website Generator MCP
An example MCP server designed for deployment on Cloudflare Workers, supporting both remote and local setups.
limelink-mcp-server
MCP server for managing Limelink dynamic links with platform-specific deep linking (iOS/Android), social previews, and UTM tracking
Super Secret MCP Server
A fun tool to generate random combinations of US States and signature soups.