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 Full project README, design rationale, and the 22-tool reference: https://github.com/alliecatowo/jupyterlite-web-mcp
Install
pip install jupyterlite-webmcp
This is the target install once the package is published to PyPI. It is not live yet. Until then, install from a clone or directly from git — see
docs/install.mdin the repository for the exact command and how to verify it.
Once installed, confirm it registered:
jupyter labextension list
# jupyterlite-webmcp v0.1.0 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— a notebook review/comments panel. 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 rest provide the access-control panel 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 a built wheel of this package never requires Node.js — it ships
prebuilt JS/CSS. The package is not on PyPI yet, though, so today's
pip install from git or a clone builds that wheel for you and needs Node.js
on your PATH. To work on the extension's source:
git clone https://github.com/alliecatowo/jupyterlite-web-mcp.git
cd jupyterlite-web-mcp/packages/jupyterlite-webmcp
npm install
npm run build:prod
pip install -e .
Other useful scripts (see package.json): npm run build (development
build), npm run watch, npm test (Jest unit tests), npm run typecheck.
License
MIT — see LICENSE.
Metadata
Release files for jupyterlite-webmcp 0.1.0
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.0.tar.gz | 296.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jupyterlite_webmcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 406.7 kB
Release files / jupyterlite_webmcp-0.1.0.tar.gz
| Download URL | jupyterlite_webmcp-0.1.0.tar.gz |
|---|---|
| Size | 296.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bbe5c2f9cd075b594bfe6ddf7e61b04453722c53178c45423489bf8adc3589eb
|
|
BLAKE2b-256 checksum How to use checksums |
a9ec1d05b1a2de6573ea61895b2da8500d37f51f9b953893b2ae082e7b6d86ee
|
| 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 Sep 30, 2026.
Transparency logRelease files / jupyterlite_webmcp-0.1.0-py3-none-any.whl
| Download URL | jupyterlite_webmcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 110.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0af2514a98857d7a49d3f6caee8e8c59cf8801c6a9da88bc6e27bb6a2c6fada6
|
|
BLAKE2b-256 checksum How to use checksums |
22457ce940f217a20e157afa52e11ed26564d6d62539f81fd95cdd8429afefaa
|
| 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 Sep 30, 2026.
Transparency log