
Jupyter MCP Server
OfficialConnect AI to Jupyter Notebooks in real-time — run cells, read outputs, and manage multiple notebooks.
Add to your client
Copy the config for your MCP client and paste it into its config file.
uvx jupyter-mcp-server@latestPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"jupyter-mcp-server": {
"command": "uvx",
"args": [
"jupyter-mcp-server@latest"
],
"env": {
"JUPYTER_URL": "http://localhost:8888",
"JUPYTER_TOKEN": "MY_TOKEN",
"ALLOW_IMG_OUTPUT": "true"
}
}
}
}Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.
Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- A running JupyterLab / Jupyter server (e.g. jupyterlab==4.4.1 with jupyter-collaboration, jupyter-mcp-tools, ipykernel, pycrdt)
- uv / uvx (0.6.14+) for the quick-start method, or Docker for the production method
- A Jupyter server token (JUPYTER_TOKEN) and, since v1.0.0, MCP_TOKEN configured in the MCP client
About Jupyter MCP Server
An MCP server developed by Datalayer for AI to connect and manage Jupyter Notebooks in real-time. It offers real-time control to view notebook changes as they happen, smart execution that adjusts based on cell output feedback, context awareness across the entire notebook, multimodal output support, and seamless switching between multiple notebooks. It integrates with JupyterLab to expose additional commands as MCP tools and includes a built-in hook system with OpenTelemetry integration for observability. Compatible with local Jupyter, JupyterHub, and Datalayer-hosted notebooks.
Tools & capabilities (19)
list_filesList files and directories in the Jupyter server's file system.
list_kernelsList all available and running kernel sessions on the Jupyter server.
connect_to_jupyterConnect to a Jupyter server dynamically without restarting the MCP server. Not available when running as a Jupyter extension.
use_notebookConnect to a notebook file, create a new one, or switch between notebooks.
list_notebooksList all notebooks available on the Jupyter server and their status.
restart_notebookRestart the kernel for a specific managed notebook.
unuse_notebookDisconnect from a specific notebook and release its resources.
read_notebookRead notebook cells source content with brief or detailed format options.
read_cellRead the full content (metadata, source and outputs) of a single cell.
insert_cellInsert a new code or markdown cell at a specified position.
delete_cellDelete a cell at a specified index.
move_cellMove a cell from one position to another within a notebook.
overwrite_cell_sourceOverwrite the source code of an existing cell.
edit_cell_sourceApply surgical find-and-replace edits to a cell's source without a full rewrite.
execute_cellExecute a cell with timeout, supports multimodal output including images.
insert_execute_code_cellInsert a new code cell and execute it in one step.
execute_codeExecute code directly in the kernel, supports magic commands and shell commands.
notebook_run-all-cellsExecute all cells in the current notebook sequentially. Available only in JupyterLab mode.
notebook_get-selected-cellGet information about the currently selected cell. Available only in JupyterLab mode.
When to use it
- Letting an AI assistant run and iterate on Jupyter notebook cells with live output feedback
- Automating data science workflows (data cleaning, feature engineering, model training/evaluation) step-by-step
- Reading, inserting, editing, moving, and deleting notebook cells programmatically from an MCP client
- Working across multiple notebooks and kernels, including multimodal outputs like plots and images
Security notes
Requires a Jupyter server token (JUPYTER_TOKEN) for authentication; as of v1.0.0 you must also configure MCP_TOKEN in your MCP client setup. The server connects to a running Jupyter/JupyterLab instance and can execute arbitrary code in its kernels, so treat the configured Jupyter endpoint and its token as sensitive.
Jupyter MCP Server FAQ
Which transports are supported?
The quick-start uses STDIO transport with uvx (or Docker). The documentation also covers Streamable HTTP transport and running as a Jupyter Server extension.
Do I need to install datalayer_pycrdt?
No. As of v1.0.2, pycrdt is supported directly, so installing datalayer_pycrdt is no longer required.
What changed in v1.0.0?
v1.0.0 introduced a breaking change requiring you to configure MCP_TOKEN in your MCP client setup.
Does it support image and plot outputs?
Yes, it has multimodal support for images, plots, and text. Set ALLOW_IMG_OUTPUT to false if your LLM does not support multimodal understanding, and use an MCP client that can parse returned image data.
Alternatives to Jupyter MCP Server
Compare all alternatives →Official MCP server providing persistent, file-backed knowledge-graph memory across sessions.
Structured step-by-step reasoning tool for breaking problems into revisable thought sequences.
Fully managed remote server for AWS docs, blogs, What's-New and Well-Architected guidance — no key.
Compare Jupyter MCP Server with: