mcp-server-jupyter
Language:
Python
Stars:
2
Forks:
0
mcp-server-jupyter
An MCP server for managing and interacting with Jupyter notebooks programmatically.
Components
Tools
The server provides six tools for notebook manipulation:
-
read_notebook_with_outputs
: Read a notebook's content including cell outputs- Required:
notebook_path
(string)
- Required:
-
read_notebook_source_only
: Read notebook content without outputs- Required:
notebook_path
(string) - Use when size limitations prevent reading full notebook with outputs
- Required:
-
read_output_of_cell
: Read output of a specific cell- Required:
notebook_path
(string)cell_id
(string)
- Required:
-
add_cell
: Add new cell to notebook- Required:
notebook_path
(string)source
(string)
- Optional:
cell_type
(string): "code" or "markdown"position
(integer): insertion index (-1 to append)
- Required:
-
edit_cell
: Modify existing cell content- Required:
notebook_path
(string)cell_id
(string): Unique ID of the cell to editsource
(string)
- Required:
-
execute_cell
: Execute a specific cell and return its output- Required:
notebook_path
(string)cell_id
(string)
- Useful for verifying cell execution and output
- Required:
Usage with Claude Desktop
Step1: Start JupyterLab or Jupyter Notebook
By using uv to run Jupyter notebooks it's much easier to manage venv and package installations.
Follow uv jupyter docummentation for more details.
uv venv --seed
source .venv/bin/activate
uv pip install jupyterlab
.venv/bin/jupyter lab
NOTE: this environment should be used as UV_PROJECT_ENVIRONMENT
env variable in MCP server (next step). Run in the same folder where Jupyter started.
echo $(pwd)/.venv
Step2: Configure Claude Desctop Add this configuration to your Claude Desktop config file:
**PyPi package:**
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"Jupyter-notebook-manager": {
"command": "uv",
"args": ["run", "--with", "mcp-server-jupyter", "mcp-server-jupyter"],
"env": {
"UV_PROJECT_ENVIRONMENT": "/path/to/venv_for_jupyter/.venv"
}
}
}
}
Git repo fork
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"Jupyter-notebook-manager": {
"command": "uv",
"args": [
"run",
"--directory",
"/Users/inna/mcp-server-jupyter/src/mcp_server_jupyter",
"mcp-server-jupyter"
],
"env": {
"UV_PROJECT_ENVIRONMENT": "/path/to/venv_for_jupyter/.venv"
}
}
}
}
Step 3: Open Notebook & Claude Chat
Open or create a notebook in JupyterLab/Jupyter Notebook
Get the full path to your notebook:
- In JupyterLab: Right-click on the notebook in the file browser → "Copy Path"
- In Jupyter Notebook: Copy the path from the URL (modify to full system path)
In Claude Desktop chat:
- Always use the full path to the notebook when calling tools
- Example:
/Users/username/projects/my_notebook.ipynb
Important Notes:
- After any modifications through Claude (add_cell, edit_cell):
- Reload the notebook page in JupyterLab/Jupyter Notebook
- Current version does not support automatic reload
- Keep JupyterLab/Jupyter Notebook instance running while working with Claude
License
This project is licensed under the MIT License. See the LICENSE file for details.