
JupyterMCP
Connect Claude to Jupyter Notebook 6.x to insert, execute, edit and manage cells via MCP.
Add to your client
Copy the config for your MCP client and paste it into its config file.
git clone https://github.com/jjsantos01/jupyter-notebook-mcp.gitPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"jupytermcp": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/REPO/FOLDER/src",
"run",
"jupyter_mcp_server.py"
]
}
}
}Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- Python 3.12 or newer
- uv package manager
- Claude AI desktop application
- Jupyter Notebook 6.x (run via 'jupyter nbclassic'); does NOT work with Jupyter Lab, Notebook v7.x, VS Code Notebooks, or Google Colab
About JupyterMCP
JupyterMCP bridges a Jupyter Notebook 6.x instance to an MCP client (such as Claude Desktop) so the AI can insert, execute, edit, and manage cells, retrieve text and image outputs, run individual or all cells, save the notebook, and set slideshow types for building presentations. A WebSocket server runs inside the notebook and the MCP server connects to it, while the client invokes the MCP server over stdio via the uv package manager.
Tools & capabilities (11)
pingCheck server connectivity.
insert_and_execute_cellInsert a cell at the specified position and execute it.
save_notebookSave the current Jupyter notebook.
get_cells_infoGet information about all cells in the notebook.
get_notebook_infoGet information about the current notebook.
run_cellRun a specific cell by its index.
run_all_cellsRun all cells in the notebook.
get_cell_text_outputGet the output content of a specific cell (text output limited to 1500 characters by default).
get_image_outputGet the image outputs of a specific cell.
edit_cell_contentEdit the content of an existing cell.
set_slideshow_typeSet the slideshow type for a cell.
When to use it
- Have Claude build a slideshow presentation in a notebook with markdown explanations and runnable code cells, using appropriate slideshow types per cell.
- Run AI-assisted data analysis and visualization (e.g. Seaborn) directly inside Jupyter.
- Execute Stata code via the %%stata magic to solve statistics exercises and interpret results.
- Inspect and retrieve cell text and image outputs for iterative, AI-driven notebook workflows.
Security notes
Experimental tool that runs arbitrary Python code on your computer, which could modify or delete data if not used carefully. Always back up important projects and data before use.
JupyterMCP FAQ
Which Jupyter versions are supported?
Only Jupyter Notebook 6.x, started with 'uv run jupyter nbclassic'. It does not work with Jupyter Lab, Notebook v7.x, VS Code Notebooks, Google Colab, or other notebook interfaces.
How do I start the connection?
Start Jupyter Notebook 6.x, create a notebook using the 'jupyter-mcp' kernel, then run a cell that imports setup_jupyter_mcp_integration from jupyter_ws_server and calls it to launch the WebSocket server inside Jupyter. Then launch Claude Desktop with MCP enabled.
Can I test it without Claude Desktop?
Yes. Run 'uv run python src/jupyter_ws_external_client.py' for an interactive test menu, or add '--batch' for automated testing of all commands.
What happens if the default WebSocket port is in use?
The default port is 8765; if it is already in use, the server automatically tries to find an available port.
Alternatives to JupyterMCP
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 JupyterMCP with: