myst-nb
A Jupyter Notebook Sphinx reader built on top of the MyST markdown parser.
What it is and what it does
MyST-NB is a Sphinx extension that lets you write and include Jupyter Notebooks directly in Sphinx documentation builds. Instead of converting notebooks to Markdown or reStructuredText by hand, you drop .ipynb files into your source tree and Sphinx reads them natively, rendering cells, outputs, and markdown content as part of your docs. It builds on the MyST parser, which understands Markdown syntax, so your notebooks can use MyST-flavored Markdown alongside standard Jupyter cell syntax.
The package sits at the intersection of Jupyter and Sphinx tooling. It depends on IPython, nbclient, jupyter-cache, and nbformat to handle notebook parsing and execution, plus Sphinx itself for documentation generation. It's actively maintained, supports Python 3.10 through 3.14, and is used in production documentation workflows. The main constraint is that you need a working Sphinx setup and familiarity with how Sphinx extensions are configured.
Use it for:
- Build technical documentation that includes executable Jupyter notebooks as chapters or sections.
- Publish data science or research notebooks as part of a larger Sphinx documentation site.
- Create tutorials or guides where notebook cells and their outputs are rendered inline in the final docs.
- Maintain a single source (the notebook) that serves both as an interactive tool and as documentation.
- Integrate notebooks into ReadTheDocs or similar CI/CD-driven documentation builds.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Sphinx extension that parses and converts Jupyter Notebooks (.ipynb files) directly into Sphinx documentation, built on the MyST markdown parser.
Yes, if you use Sphinx for documentation and want to include Jupyter Notebooks without manual conversion. The install friction is low, maintenance is active, and the package is in the top 5000 by downloads. The only caveat is that the license status is unclear in the metadata—verify the actual license in the repository before using in proprietary contexts. No known security vulnerabilities.
Install
myst-nb on PyPI
pip
pip install myst-nbuv
uv add myst-nbpoetry
poetry add myst-nbInstalling myst-nb
Before you install
Low friction install with a pure Python wheel. Actively maintained as of August 2026 with recent commits. Depends on a substantial stack (Sphinx, IPython, nbclient, jupyter-cache, myst-parser) but all are standard ecosystem packages.
License in practice
License status is unclear from the package metadata—no SPDX identifier or raw license field is recorded. Verify the actual license in the repository before adopting in proprietary or restricted-license contexts.
Quickstart
pip install myst-nb
# In conf.py:
extensions = ['myst_nb']
# Then add .ipynb files to your Sphinx source tree and build normally.
Requires Python 3.10 or later. Sphinx and IPython must be installed and configured.
Verify before relying
- Actual license text and terms—metadata shows no SPDX or raw license field despite active development.
- Whether notebook execution is automatic or opt-in during documentation builds.
- Performance characteristics with large notebooks or many notebooks in a single build.
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 10 — importlib_metadata, ipython, jupyter-cache, nbclient, myst-parser, nbformat, pyyaml, sphinx, typing-extensions, ipykernel |
| Maintenance | actively maintained — 165 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,052,857/month — #4,438 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: myst_nb-1.4.0-py3-none-any.whl
Keywords: markdown, lexer, parser, jupyter, docutils, sphinx
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
myst-parserMyST-Parser extends CommonMark-compliant…
permissive · top 5,000 on PyPI
nbsphinxnbsphinx is a Sphinx extension that parses…
permissive · top 5,000 on PyPI
nbsphinx-linkA Sphinx extension that lets you include…
permissive · top 15,000 on PyPI
nbconvertnbconvert converts Jupyter notebooks (.ipynb…
permissive · top 1,000 on PyPI
jupyter-bookJupyter Book converts Markdown files and…
permissive · top 15,000 on PyPI
importnbimportnb lets you import Jupyter notebooks as…
permissive · top 15,000 on PyPI
jupyter-sphinxJupyter Sphinx Extensions runs code embedded in…
unclear · top 15,000 on PyPI
hepconverthepconvert converts between columnar file…
permissive · top 15,000 on PyPI
mkdocs-jupyterConverts Jupyter notebooks and Python scripts…
permissive · top 15,000 on PyPI
nbformatnbformat provides Python APIs and the reference…
permissive · top 1,000 on PyPI