Skip to main content

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
nxp-monkey version
# Short alias is also installed:
nxpm --version
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. Uses the index when present and falls
# back to the portfolio map when it is not.
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

# Prefixes and concrete orderable aliases are accepted too.
nxp-monkey fetch MIMX93 --variant ksdk2_0

# 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)
imx_hits = nxp_monkey.search("MIMX9352CVVXMAB")

# Index
nxp_monkey.build_index()
info = nxp_monkey.get_part("MCXA156")     # -> PartInfo dataclass

# Fetch + parse
path = nxp_monkey.fetch("MIMX9352CVVXMAB") # -> 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/setup.html - setup, release, and artifact policy.
  • docs/architecture.html - package layers and ownership boundaries.
  • 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.

Testing

Rack is the primary local signoff gate:

uv sync --all-extras
uv run rack run --all
uv run python -m build
uv run twine check dist/*
uv run python tests/support_scripts/install_test.py

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nxp_monkey-2026.6.9.tar.gz (94.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nxp_monkey-2026.6.9-py3-none-any.whl (57.7 kB view details)

Uploaded Python 3

File details

Details for the file nxp_monkey-2026.6.9.tar.gz.

File metadata

  • Download URL: nxp_monkey-2026.6.9.tar.gz
  • Upload date:
  • Size: 94.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nxp_monkey-2026.6.9.tar.gz
Algorithm Hash digest
SHA256 67a037a0fd3926819e5890152db9aa125d3361a8e2835f5dbaa733130b89ffa0
MD5 faef2f08073a5dcbbee3b750d9a43b7e
BLAKE2b-256 a999ec02a4a8dc069b151b83524e8bcbd84845de2b886a8fe3c73f592a393b09

See more details on using hashes here.

Provenance

The following attestation bundles were made for nxp_monkey-2026.6.9.tar.gz:

Publisher: release.yml on wavenumber-eng/nxp_monkey

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nxp_monkey-2026.6.9-py3-none-any.whl.

File metadata

  • Download URL: nxp_monkey-2026.6.9-py3-none-any.whl
  • Upload date:
  • Size: 57.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nxp_monkey-2026.6.9-py3-none-any.whl
Algorithm Hash digest
SHA256 05f81e5328e6d56c20ed29a1531b0bfc62c839546d8513216c777c7827138845
MD5 092e882ec39ac0a5a7077ed101875130
BLAKE2b-256 0c86bbe4b17f2a4485828a2049384088ee7d7fc6223c34d879c3a11901d4fa6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nxp_monkey-2026.6.9-py3-none-any.whl:

Publisher: release.yml on wavenumber-eng/nxp_monkey

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page