jupyterlite-webmcp
A JupyterLab 4 frontend extension that exposes your live, in-browser
notebook — the open cells, the running kernel, your mouse selection, the
review comments — to a browser-based AI agent through
WebMCP, the emerging W3C
proposal for a web page to register callable tools with an agent sharing the
same browser tab (document.modelContext.registerTool).
Concretely: once installed, a WebMCP-aware agent in your browser can read
your notebook's live cells (not stale .ipynb bytes off disk — the actual
unsaved state in memory), run code on the kernel you're already using, insert
or edit cells with conflict detection, and read/reply to review comments —
all subject to per-cell access control (write / read / none) that you
set. If your browser doesn't expose document.modelContext yet, the
extension registers nothing and your notebook behaves exactly as it always
has; nothing about the normal editing experience is gated behind it.
It is frontend-only: no server extension, no backend, no API keys, no
Python runtime dependencies (dependencies = []). Works unmodified in
JupyterLab 4.6, Notebook 7, and JupyterLite.
Live demo: https://jupyterlite-web-mcp.vercel.app/lab/index.html Documentation, quickstart and the 22-tool reference: https://alliecatowo.github.io/jupyterlite-web-mcp/ Source and issues: https://github.com/alliecatowo/jupyterlite-web-mcp
Install
pip install jupyterlite-webmcp
Installs a prebuilt extension: no Node.js and no jupyter lab build. For
JupyterLite, add it to your site's requirements and run jupyter lite build;
see docs/install.md.
Once installed, confirm it registered:
jupyter labextension list
# jupyterlite-webmcp vX.Y.Z enabled OK (python, jupyterlite_webmcp)
Then start jupyter lab or jupyter notebook as usual — no configuration
is required.
pip uninstall jupyterlite_webmcp
What it contributes
Seven frontend plugins, all autoStart: true; the two you'll notice first:
jupyterlite-webmcp:tools— registers the WebMCP tool surface (22 tools) whendocument.modelContextis present; otherwise a no-op beyond an optional status-bar indicator.jupyterlite-webmcp:review— the review-comment store, commands and cell markers: threaded comments on a cell, a text range, or an output, stored in the notebook's own metadata. Works whether or not the browser supports WebMCP. The comments are shown in the Agent panel (:panel, Comments tab).
The rest provide the access controls and cell menu, the activity/presence layer, Propose mode, the Agent panel and output selection.
See the tool reference
for the full list of tools and their schemas, and
docs/install.md
for the JupyterLite requirements.txt variant and how to check whether
WebMCP is active in your browser.
Building from source (contributors)
Installing the published wheel never requires Node.js; it ships prebuilt
JS/CSS. Building from a clone does: the labextension build uses
jupyter-builder from the jupyterlab Python package, so install that
first (Node.js 22+ must be on your PATH):
git clone https://github.com/alliecatowo/jupyterlite-web-mcp.git
cd jupyterlite-web-mcp/packages/jupyterlite-webmcp
python -m venv .venv && source .venv/bin/activate
pip install "jupyterlab~=4.6.0"
npm ci
npm run build:prod
pip install -e .
Other useful scripts (see package.json): npm run build (development
build), npm test (Jest unit tests), npm run typecheck, npm run lint:check. See
CONTRIBUTING.md
for the development loop and browser tests.
License
MIT — see LICENSE.
Metadata
Release files for jupyterlite-webmcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jupyterlite_webmcp-0.1.1.tar.gz | 324.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jupyterlite_webmcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 441.1 kB
Release files / jupyterlite_webmcp-0.1.1.tar.gz
| Download URL | jupyterlite_webmcp-0.1.1.tar.gz |
|---|---|
| Size | 324.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
910074485ea4c3d4f720516a09193b489a32644dc1fc3616a947ca385d907352
|
|
BLAKE2b-256 checksum How to use checksums |
f909319375be587e1ce962bfabd001f3952c1fb22ae1a77a874d15fbeb67e86e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.
Transparency logRelease files / jupyterlite_webmcp-0.1.1-py3-none-any.whl
| Download URL | jupyterlite_webmcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 116.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7377c844baba6bc1e0d8cde033893ef7373186b4e2dc24b3e6053294b114a002
|
|
BLAKE2b-256 checksum How to use checksums |
c2e942435d787a570d55fd98a1695364677d32d9422fea74d8fd9bfad1a9f462
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.
Transparency log