---
title: "Jupyter MCP Server: Let an AI Edit and Run Your Notebooks"
url: "https://mcpshelf.co/servers/jupyter"
description: "Datalayer's server lets an assistant open, edit and run cells in a live Jupyter notebook and read the outputs, plots included. JupyterLab setup and config."
updated: "2026-10-27"
site: "MCP Shelf"
---

# Jupyter MCP Server

> Lets an assistant edit and run cells in a live Jupyter notebook and read the results.

Source: https://mcpshelf.co/servers/jupyter  
Markdown: https://mcpshelf.co/servers/jupyter.md  
Generated: 2026-10-27T13:27:27.895Z

## Facts

- **Name:** Jupyter MCP Server
- **Tagline:** Lets an assistant edit and run cells in a live Jupyter notebook and read the results.
- **Description:** Jupyter MCP Server is Datalayer's open source server that lets an assistant read, write and run cells in a live JupyterLab notebook, with outputs and images coming back to the model.
- **Repository:** https://github.com/datalayer/jupyter-mcp-server
- **Package:** jupyter-mcp-server 2.2.4 (PyPI)
- **Install:** `claude mcp add jupyter -e JUPYTER_URL=http://localhost:8888 -e JUPYTER_TOKEN=MY_TOKEN -e ALLOW_IMG_OUTPUT=true -- uvx jupyter-mcp-server@latest`
- **Transport:** stdio (local)
- **Auth:** Needs `JUPYTER_URL`, `JUPYTER_TOKEN`
- **Tools exposed:** 18: `list_files`, `list_kernels`, `use_notebook`, `list_notebooks`, `restart_notebook`, `unuse_notebook`, `read_notebook`, `insert_cell`, `overwrite_cell_source`, `edit_cell_source`, `execute_cell`, `insert_execute_code_cell`, `read_cell`, `delete_cell`, `clear_cell_output`, `move_cell`, `execute_code`, `connect_to_jupyter`
- **Category:** Developer tools (https://mcpshelf.co/categories/developer-tools)
- **Stats:** 1.3K GitHub stars, 12.2K downloads a week, last commit 24 Oct 2026, 0 upvotes on MCP Shelf
- **Install check:** Needs your setup first
- **Listed:** 2026-10-27
- **Page updated:** 2026-10-27

## Full description

### What is Jupyter MCP Server?

**Jupyter MCP Server is Datalayer's open source server that lets an assistant read, write and run cells in a live JupyterLab notebook, with outputs and images coming back to the model.**

Datalayer built this server to work on a notebook while it is open in JupyterLab. The model can list and open notebooks, read cells, insert, edit, move and delete them, run a cell or a snippet of code on the kernel, and see the output, images and plots included. Because it goes through Jupyter’s real-time collaboration layer, you see each change in your browser as it happens.

It works with any Jupyter server, local or JupyterHub. Running code is the point of it, so it can do anything the kernel can do on that machine. Point it at a server and a token you control rather than a shared one.

|  |  |
| --- | --- |
| Made by | Datalayer (datalayer/jupyter-mcp-server) |
| GitHub | https://github.com/datalayer/jupyter-mcp-server |
| Licence | BSD |
| PyPI package | [jupyter-mcp-server](https://pypi.org/project/jupyter-mcp-server/) 2.2.4 (11 Oct 2026) |
| GitHub stars | 1.3K |
| Downloads | 12.2K a week |
| Last commit | 24 Oct 2026 |
| Tools | 18 |
| Runs on | Your computer |
| Install check | Needs your setup first |
| Category | [Developer tools](https://mcpshelf.co/categories/developer-tools) |
| Setup checked | 27 Oct 2026 |
| Page updated | 27 Oct 2026 |

**Our check:** It needs something our Linux test machine does not have (an account, a desktop app, a Mac or a running service), so on 27 Oct 2026 we read its tools from the source code instead of running this config.

#### MCP Shelf take

> Jupyter needs something our Linux test machine does not have (an account, an app or a service), so on 27 Oct 2026 we read its source and counted 18 tools. 5 of the 18 only read; the other 13 can change things. It sits 19th of 21 in its category on our shelf by GitHub stars (1.3K, with 12.2K downloads a week).

— MCP Shelf tests (numbers from our own runs), tested on 27 Oct 2026

### What tools does Jupyter MCP Server have?

We listed 18 tools on 27 Oct 2026. 5 only read; the rest can change things or run commands.

| Tool | Kind | What it is for |
| --- | --- | --- |
| `list_files` | reads | Lists the files and folders on the Jupyter server. |
| `list_kernels` | reads | Lists running and available kernels. |
| `use_notebook` | changes | Opens or creates a notebook and makes it the one later cell tools work on. |
| `list_notebooks` | reads | Lists the notebooks opened in this session. |
| `restart_notebook` | changes | Restarts a notebook's kernel. |
| `unuse_notebook` | changes | Releases a notebook. |
| `read_notebook` | reads | Reads every cell's index, type, source and execution count, in brief or full form. |
| `insert_cell` | changes | Inserts a code or Markdown cell at a position. |
| `overwrite_cell_source` | changes | Replaces a cell's source and shows the diff. |
| `edit_cell_source` | changes | Finds and replaces text inside one cell. |
| `execute_cell` | runs | Runs a cell and returns its outputs, with a time limit. |
| `insert_execute_code_cell` | runs | Inserts a code cell and runs it straight away. |
| `read_cell` | reads | Reads one cell, with its outputs if wanted. |
| `delete_cell` | changes | Deletes cells and returns what they contained. |
| `clear_cell_output` | changes | Clears a code cell's outputs. |
| `move_cell` | changes | Moves a cell to another position. |
| `execute_code` | runs | Runs code on the kernel without adding it to the notebook. |
| `connect_to_jupyter` | changes | Switches to another Jupyter server by URL and token. |

### How do I install Jupyter MCP Server?

#### What you need first

- JupyterLab with jupyter-collaboration, jupyter-mcp-tools and ipykernel installed
- A running Jupyter server and its token
- uv, for uvx, or Docker

1. Install the Jupyter side: pip install jupyterlab jupyter-collaboration jupyter-mcp-tools ipykernel.
2. Start JupyterLab with a token you choose: jupyter lab --port 8888 --IdentityProvider.token MY_TOKEN.
3. Add the config below with the same URL and token, then restart your client.

#### Claude Code

Where: Your terminal, in the project folder

```bash
claude mcp add jupyter -e JUPYTER_URL=http://localhost:8888 -e JUPYTER_TOKEN=MY_TOKEN -e ALLOW_IMG_OUTPUT=true -- uvx jupyter-mcp-server@latest
```

Start JupyterLab first with the same token, for example jupyter lab --port 8888 --IdentityProvider.token MY_TOKEN, and keep it running while you work.

#### Cursor

Where: ~/.cursor/mcp.json, or .cursor/mcp.json in a project

```json
{
  "mcpServers": {
    "jupyter": {
      "command": "uvx",
      "args": [
        "jupyter-mcp-server@latest"
      ],
      "env": {
        "JUPYTER_URL": "http://localhost:8888",
        "JUPYTER_TOKEN": "MY_TOKEN",
        "ALLOW_IMG_OUTPUT": "true"
      }
    }
  }
}
```

#### Claude Desktop

Where: claude_desktop_config.json (Settings → Developer → Edit Config)

```json
{
  "mcpServers": {
    "jupyter": {
      "command": "uvx",
      "args": [
        "jupyter-mcp-server@latest"
      ],
      "env": {
        "JUPYTER_URL": "http://localhost:8888",
        "JUPYTER_TOKEN": "MY_TOKEN",
        "ALLOW_IMG_OUTPUT": "true"
      }
    }
  }
}
```

To use Docker instead of uvx, run datalayer/jupyter-mcp-server:latest with -e JUPYTER_URL, -e JUPYTER_TOKEN and -e ALLOW_IMG_OUTPUT, and point JUPYTER_URL at http://host.docker.internal:8888 on macOS and Windows.

#### VS Code

Where: .vscode/mcp.json in your project

```json
{
  "servers": {
    "jupyter": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "jupyter-mcp-server@latest"
      ],
      "env": {
        "JUPYTER_URL": "http://localhost:8888",
        "JUPYTER_TOKEN": "MY_TOKEN",
        "ALLOW_IMG_OUTPUT": "true"
      }
    }
  }
}
```

#### Windsurf

Where: ~/.codeium/windsurf/mcp_config.json

```json
{
  "mcpServers": {
    "jupyter": {
      "command": "uvx",
      "args": [
        "jupyter-mcp-server@latest"
      ],
      "env": {
        "JUPYTER_URL": "http://localhost:8888",
        "JUPYTER_TOKEN": "MY_TOKEN",
        "ALLOW_IMG_OUTPUT": "true"
      }
    }
  }
}
```

#### ChatGPT

Where: Not supported

ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.

Use the same token in JUPYTER_TOKEN as on the command line. Set ALLOW_IMG_OUTPUT to "false" if your client cannot read images.

Checked against the project's own install docs on 27 Oct 2026: https://github.com/datalayer/jupyter-mcp-server#readme, https://jupyter-mcp-server.datalayer.tech

### How do I configure Jupyter MCP Server?

| Setting | Kind | Required | What it does |
| --- | --- | --- | --- |
| `JUPYTER_URL` | env | yes | Address of your Jupyter server. Example: `http://localhost:8888` |
| `JUPYTER_TOKEN` | env | yes | The server's token, the same one you started JupyterLab with. |
| `ALLOW_IMG_OUTPUT` | env | no | Return plots and images to the model. Turn off for clients that cannot read images. Example: `true` |
| `DOCUMENT_ID` | env | no | Path of a notebook to open at start, relative to the server root. Example: `notebook.ipynb` |
| `allowed_jupyter_mcp_tools` | config | no | Which JupyterLab commands to expose as extra tools when jupyter-mcp-tools is installed. Run all cells and get the selected cell are on by default. |

### What can Jupyter MCP Server read and change?

**It can read**

- Notebooks and files on the Jupyter server
- Cell outputs, including images

**It can change**

- Cells in your notebooks
- Anything the kernel can reach when the model runs code: files, data and network

**Safer setup:** Run Jupyter in a project folder or container you are happy for the model to change, and restart the kernel if something runs away.

### Good for

- Exploring a dataset with the model writing and running cells for you
- Fixing a cell that errors, with the traceback in front of the model
- Turning a rough notebook into a cleaner one

### Jupyter MCP Server not working? Common fixes

**Changes do not appear in JupyterLab**
Install jupyter-collaboration. Type in a cell: the unsaved mark should turn into a dot within a few seconds, which shows real-time sync is working.

**Unknown sandbox variant: jupyter on the first run**
Your code-sandboxes package does not match. With jupyter-mcp-server 1.5.0 or later, install code-sandboxes 1.1.1 or later.

**403 or authentication errors**
JUPYTER_TOKEN must match the token JupyterLab was started with.

**In Docker it cannot reach Jupyter on localhost**
Use http://host.docker.internal:8888 on macOS and Windows, or host networking on Linux.

### What are the alternatives to Jupyter MCP Server?

| Server | What it does | Tools | Runs on | Licence | Stars |
| --- | --- | --- | --- | --- | --- |
| [Jupyter MCP Server](https://mcpshelf.co/servers/jupyter) | Lets an assistant edit and run cells in a live Jupyter notebook and read the results. | 18 | Your computer | BSD | 1.3K |
| [Burp Suite MCP](https://mcpshelf.co/servers/burp-suite) | Lets an assistant send requests, read proxy history and use Repeater in Burp Suite. | 27 | Your computer | GPL-3.0 | 1.3K |
| [Ref MCP](https://mcpshelf.co/servers/ref) | Docs search for coding agents that returns only the part of the page that matters. | 2 | Your computer or hosted | MIT | 1.2K |
| [Desktop Commander](https://mcpshelf.co/servers/desktop-commander) | A terminal, file search and surgical file edits for your assistant. | 25 | Your computer | MIT | 10.1K |
| [Serena](https://mcpshelf.co/servers/serena) | IDE-style "find symbol" and "edit symbol" for an agent, backed by language servers. | 3 (REPL) | Your computer | GPL-3.0 | 30.8K |
| [Context7](https://mcpshelf.co/servers/context7) | Pulls current, version-specific library docs into the conversation. | 2 | Your computer or hosted | MIT | 63.8K |

### Jupyter MCP Server FAQ

#### How do I connect Claude to a Jupyter notebook?

Install jupyterlab, jupyter-collaboration, jupyter-mcp-tools and ipykernel, start JupyterLab with a token, then add uvx jupyter-mcp-server@latest to Claude with JUPYTER_URL and JUPYTER_TOKEN set to match.

#### How do I add Jupyter MCP Server to Claude Code or Cursor?

Use the same uvx jupyter-mcp-server@latest command with the JUPYTER_URL and JUPYTER_TOKEN env values, as shown on this page. JupyterLab must already be running.

#### Why don't the assistant's changes appear in JupyterLab?

Real-time collaboration is probably off. Install jupyter-collaboration and check that an open notebook saves on its own a few seconds after you type.

#### Can it run code in my notebook?

Yes. It can insert, edit and run cells on the notebook's kernel and read the outputs, including plots when ALLOW_IMG_OUTPUT is on. Use a folder or container you are happy for it to change.

#### Does Jupyter MCP Server work with JupyterHub?

Yes. Datalayer has a separate guide for running it against JupyterHub.

#### Do I need a Datalayer account?

No. It works with your own Jupyter server. Datalayer's hosted notebooks are an option, not a requirement.

#### Does it work with ChatGPT?

Not as set up here. The server runs next to your Jupyter server, and ChatGPT only connects to servers by public URL.

#### Is Jupyter MCP Server free?

Yes. It is BSD-3-Clause licensed, like Jupyter itself, and it works with your own JupyterLab at no cost.

Full docs on GitHub: https://github.com/datalayer/jupyter-mcp-server

## Notes for agents

Fetch these instead of parsing the HTML page:

- llms.txt: https://mcpshelf.co/llms.txt
- llms-full.txt: https://mcpshelf.co/llms-full.txt
- ai.txt: https://mcpshelf.co/ai.txt
- Full catalog (.md): https://mcpshelf.co/catalog.md
- API spec: https://mcpshelf.co/openapi.json
- MCP server: https://mcpshelf.co/mcp
- MCP manifest: https://mcpshelf.co/.well-known/mcp.json
- Developer docs: https://mcpshelf.co/developers

MCP endpoint (Streamable HTTP, no key): https://mcpshelf.co/mcp. REST API: https://mcpshelf.co/api/v1.

