Cross-platform CLI and Python library for NXP MCUXpresso Config Tools chip data
Project description
██████████
██▓▓▓▓▓▓▓▓▓▓██
██▓▓░░░░░░▓▓▓▓░░██
████░░ ░░░░ ██
██░░▓▓░░ ████░░░░██ ██
██░░▓▓░░ ████░░░░██ ██
██▓▓░░ ░░░░░░░░░░██
██▓▓▓▓▓▓▓▓▓▓░░▓▓░░▓▓██
████ ██▓▓▓▓▓▓▓▓░░░░░░▓▓██
██▓▓▓▓██ ██▓▓████████▓▓▓▓▓▓██
██▓▓████ ██▓▓▓▓▓▓▓▓▓▓████████
██▓▓██ ██▓▓▓▓██▓▓██▓▓▓▓▓▓▓▓██
██▓▓██ ████▓▓▓▓██▓▓▓▓██████▓▓██
██▓▓██████▓▓██▓▓▓▓██▓▓▓▓▓▓██▓▓▓▓██
██▓▓▓▓▓▓████░░░░██░░░░░░██░░░░██
██████ ████████████ ████
nxp_monkey
Cross-platform CLI and Python library for fetching, indexing, and searching NXP MCUXpresso Config Tools chip data, with both XML (raw NXP binders) and JSON (parsed spine + lossless XML->JSON mirror) output by default.
nxp_monkey talks to NXP's public KEX storage API (the same one the
MCUXpresso Config Tools Data Manager uses) and exposes the per-processor
data tree — signal configurations, register variants, packages, clocks,
resource tables — as a clean local cache that humans, scripts, and LLM
agents can all consume.
Install
uv tool install nxp-monkey
uv tool update-shell
nxp-monkey --version
# Short alias is also installed:
nxpm --version
CLI quick start (MCXA156)
# What tool versions does NXP publish?
nxp-monkey versions
# What processor families are available?
nxp-monkey families
# Search by part / family root (partial + fuzzy)
nxp-monkey search MCXA
nxp-monkey search mcxa --fuzzy
# Build a local index of all available parts and variants
nxp-monkey index build
nxp-monkey index show MCXA156
# Fetch one part. Downloads every SDK variant NXP publishes,
# mirrors the XML, and writes the JSON views alongside.
nxp-monkey fetch MCXA156
# Print the parsed chip-data spine (header, cores, package variants)
nxp-monkey details MCXA156
# Print the per-part roadmap (where things live + inferred schema)
nxp-monkey roadmap MCXA156
# Manage the cache
nxp-monkey cache path
nxp-monkey cache size
nxp-monkey cache clear
What you get from fetch MCXA156
Output is split by media type so an agent can pick either side:
MCXA156/
xml/ # raw NXP binders, one subdir per SDK variant
ksdk2_0/... # - canonical silicon data (registers, pins, clocks)
zephyr3_2/... # - Zephyr DT codegen scripts
i_mx_2_0/... # - i.MX Linux binder (when published)
json/
MCXA156.json # PartDetails spine: header, cores, package SKUs, db_links
MCXA156.roadmap.json # agent guide + inferred schema + folder layout
ksdk2_0/... # full XML->JSON mirror (one .json per .xml)
MCXA156VFT/registers/ADC1.json
MCXA156VFT/signal_configuration.json
packages/QFN48.json
...
For MCXA156 this is ~40 MB of XML plus a 1:1 ~71 MB JSON mirror across 127 files (per variant). Progress is shown live on stderr; stdout stays a clean list of paths so it pipes well.
JSON vs XML
| You want... | Read |
|---|---|
| Top-level chip facts (family, cores, packages, SKU list) | json/<PART>.json |
| A guide to where things live + observed XML namespaces | json/<PART>.roadmap.json |
| One peripheral's registers / bit fields | json/<variant>/<SKU>/registers/<PERIPH>.json |
| Pin mux for a specific SKU | json/<variant>/<SKU>/signal_configuration.json |
| The bit-identical NXP binder (codegen scripts, exact whitespace) | xml/<variant>/... |
The XML->JSON conversion is lossless for data: namespace-stripped tags,
@attr keys for attributes, #text for mixed content, repeated children
as lists, root @_xmlns preserves the source namespace declarations.
Skip the mirror with --no-json-mirror, or narrow it with
--json-mirror-only '**/registers/**' (repeatable glob).
The global --json flag switches stdout to print the JSON output path
(for tool / agent integration); JSON files are always written by
fetch.
Library quick start
import nxp_monkey
# Discovery
versions = nxp_monkey.list_versions()
families = nxp_monkey.list_families()
# Search
hits = nxp_monkey.search("MCXA", fuzzy=False)
# Index
nxp_monkey.build_index()
info = nxp_monkey.get_part("MCXA156") # -> PartInfo dataclass
# Fetch + parse
path = nxp_monkey.fetch("MCXA156") # -> pathlib.Path to unpacked tree
details = nxp_monkey.details("MCXA156") # -> PartDetails (header, cores, variants)
roadmap = nxp_monkey.build_roadmap(path) # -> dict (guide, key_files, xml_namespaces, ...)
# Cache control
nxp_monkey.cache_path()
nxp_monkey.cache_size()
nxp_monkey.cache_clear()
Documentation
docs/adrs/— architecture decision records.docs/design/cli/— one HTML doc per CLI command.docs/design/api/— one HTML doc per public library interface.docs/contracts/— JSON manifests + schemas (command + interface).docs/research/xml_survey.md— narrative survey of the KEX XML schema universe.
License
MIT. See LICENSE.
nxp_monkey fetches public NXP data on behalf of the user. NXP MCUXpresso
Config Tools content is NXP material and is governed by NXP terms.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nxp_monkey-2026.5.29.tar.gz.
File metadata
- Download URL: nxp_monkey-2026.5.29.tar.gz
- Upload date:
- Size: 78.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab6dfb2fe146e67167a9129ceb20ece1dbc1e5b66230d30ed66de7ccf325c95a
|
|
| MD5 |
2e880c6d7a2f4ee5be43c92501268391
|
|
| BLAKE2b-256 |
50e77fefa9823c1a6ee18dfc0fcf119c9854af5a8f85d3ef6c11e0b4193c1545
|
Provenance
The following attestation bundles were made for nxp_monkey-2026.5.29.tar.gz:
Publisher:
release.yml on wavenumber-eng/nxp_monkey
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nxp_monkey-2026.5.29.tar.gz -
Subject digest:
ab6dfb2fe146e67167a9129ceb20ece1dbc1e5b66230d30ed66de7ccf325c95a - Sigstore transparency entry: 1673444980
- Sigstore integration time:
-
Permalink:
wavenumber-eng/nxp_monkey@45c6219c00386d11a400a22f6ee85bb9679877d5 -
Branch / Tag:
refs/tags/v2026.5.29 - Owner: https://github.com/wavenumber-eng
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@45c6219c00386d11a400a22f6ee85bb9679877d5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file nxp_monkey-2026.5.29-py3-none-any.whl.
File metadata
- Download URL: nxp_monkey-2026.5.29-py3-none-any.whl
- Upload date:
- Size: 53.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2b7db05bb207e2f22b181b0841ad52a51f967aa0a3722f654050586d25ef6f4
|
|
| MD5 |
d001ab91958d6fdf0eb9d5a98df7a21c
|
|
| BLAKE2b-256 |
cee533256d5334c22edce76cc49afaf80135dc03738f91ab140fd6c0dcf1961e
|
Provenance
The following attestation bundles were made for nxp_monkey-2026.5.29-py3-none-any.whl:
Publisher:
release.yml on wavenumber-eng/nxp_monkey
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nxp_monkey-2026.5.29-py3-none-any.whl -
Subject digest:
e2b7db05bb207e2f22b181b0841ad52a51f967aa0a3722f654050586d25ef6f4 - Sigstore transparency entry: 1673444986
- Sigstore integration time:
-
Permalink:
wavenumber-eng/nxp_monkey@45c6219c00386d11a400a22f6ee85bb9679877d5 -
Branch / Tag:
refs/tags/v2026.5.29 - Owner: https://github.com/wavenumber-eng
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@45c6219c00386d11a400a22f6ee85bb9679877d5 -
Trigger Event:
push
-
Statement type: