MCP server enabling real-time AI interaction and control of Jupyter notebooks with multi-notebook and multimodal support.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent ā or use 1-click editor setup below.
We ran the install command below but it didn't respond within our test window ā this can mean a slow first-time install rather than a real problem.
uvx jupyter-mcp-server@latestNo response to initialize.
This is an experimental automated check and can have false negatives ā missing environment variables, a slow cold install, etc. It doesnāt necessarily mean somethingās wrong. Last checked 4d ago.
š” Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Jupyter MCP Server.
An MCP server developed for AI to connect and manage Jupyter Notebooks in real-time ā and scale your Code Sandbox from local to the cloud (Datalayer, Kaggle, Google Colab, Modal, Daytona, E2B, CoreWeave, Cloudflare...)
š Documentation Ā Ā·Ā š§ Tools Ā Ā·Ā š¬ Community
No process to run. Datalayer now hosts this server for you at
https://mcp.datalayer.run/mcp ā one endpoint for every agent and every notebook.
Sign in from your browser, approve what the agent may do, and your work keeps running
on the server after the agent disconnects.
One command to connect Claude Code, with /datalayer:notebook, /datalayer:run and
/datalayer:status on top:
ā Datalayer plugin for Claude Code
Free and open source, BSD 3-Clause ā point it at any Jupyter you already run, local or JupyterHub, no account needed.
Built and maintained by Datalayer, where the same server drives always-on Notebooks with GPU Code Sandboxes and durable execution ā so your agent keeps working on your data when your laptop does not.
No token to copy and paste. An agent that meets this server unauthenticated is told where to authenticate, opens your browser, and you sign in to Datalayer as yourself. The agent never sees your password ā it receives a token scoped to what you approved, and you can disconnect one agent without touching the others.
What each agent may do is two separate decisions: the scopes you approve
(notebooks:read, notebooks:write, code:execute, data:read) say what kind of
operation it may perform, and your own Datalayer permissions still say which notebooks it
may touch. An agent can never reach a notebook you cannot.
Personal access tokens keep working, and remain the simpler path for a CLI or a script. ā OAuth and identity
Pin code-sandboxes to match your jupyter-mcp-server. The sandbox variant
jupyter was renamed to jupyter-server in code-sandboxes 1.1.1, and the two packages
have to agree on the name.
Your jupyter-mcp-server | Install |
|---|---|
| >= 1.5.0 | code-sandboxes >= 1.1.1 |
| < 1.5.0 | code-sandboxes <= 1.0.9 |
An older server with a newer code-sandboxes installs cleanly and then fails on the
first execution with Unknown sandbox variant: jupyter.
ā Release notes
Jupyter MCP Server 2 runs on the MCP Python SDK 2
(mcp>=2,<3), the SDK's first major release. Nothing changes in how you start or
configure the server, in the tools, or for the MCP clients connecting to it ā the protocol
is negotiated with each client as before. What changes is the Python environment:
Your jupyter-mcp-server | mcp SDK |
|---|---|
| >= 2.0.0 | mcp >= 2 |
| < 2.0.0 | mcp < 2 |
Both are pinned in the package, so pip sorts it out; an environment holding another
package that still pins mcp<2 has to stay on jupyter-mcp-server<2 until that package
moves. Writing an extension or a custom token verifier against the SDK? See the
release notes for the renamed
imports.
--provider is now --document-provider (env var PROVIDER ā DOCUMENT_PROVIDER).
It only ever chose where the notebook documents live ā jupyter for the collaboration
API of a Jupyter Server, datalayer for the Datalayer spacer ā while the old name and its
help text suggested it also chose where code runs. Execution is picked separately, with
--sandbox-variant (jupyter-server, datalayer, daytona, e2b, coreweave,
cloudflare, kaggle, google-colab, monty, modal).
Nothing breaks in v1.3.2: --provider is still accepted as an alias, PROVIDER is still
read, and a /connect payload carrying "provider" is still understood. Move to the new
names when convenient ā the old ones are deprecated, not removed.

Compatible with any Jupyter deployment (local, JupyterHub, ...) and with Datalayer hosted Notebooks, where the Code Sandboxes come with GPUs and the execution survives a disconnect.
Every tool, with its parameters, schema and return value, is generated from a live snapshot of the running server and published at jupyter-mcp-server.datalayer.tech/mcp ā so it is never out of step with the code, which a table copied into this file would be.
They fall into four groups:
Factual signals from GitHub, npm, and our automated checks ā not a rating.
No reviews yet ā be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/datalayer-jupyter-mcp-server)<a href="https://allmcps.com/mcp/datalayer-jupyter-mcp-server"><img src="https://allmcps.com/api/badge/datalayer-jupyter-mcp-server?style=directory" alt="Jupyter MCP Server on AllMCPs" /></a>