Lets Claude control a running Jupyter Notebook: insert and run cells, read outputs and work through data analysis tasks.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add jupyter-notebook -- uv run python -m ipykernel install --name jupyter-mcp~/.codex/config.toml
[mcp_servers.jupyter-notebook]
command = "uv"
args = ["run", "python", "-m", "ipykernel", "install", "--name", "jupyter-mcp"]
# codex mcp add jupyter-notebook -- uv run python -m ipykernel install --name jupyter-mcp~/.cursor/mcp.json
{
"mcpServers": {
"jupyter-notebook": {
"command": "uv",
"args": [
"run",
"python",
"-m",
"ipykernel",
"install",
"--name",
"jupyter-mcp"
]
}
}
}.vscode/mcp.json
{
"servers": {
"jupyter-notebook": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"python",
"-m",
"ipykernel",
"install",
"--name",
"jupyter-mcp"
]
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"jupyter-notebook": {
"command": "uv",
"args": [
"run",
"python",
"-m",
"ipykernel",
"install",
"--name",
"jupyter-mcp"
]
}
}
}claude_desktop_config.json
{
"mcpServers": {
"jupyter-notebook": {
"command": "uv",
"args": [
"run",
"python",
"-m",
"ipykernel",
"install",
"--name",
"jupyter-mcp"
]
}
}
}.trae/mcp.json
{
"mcpServers": {
"jupyter-notebook": {
"command": "uv",
"args": [
"run",
"python",
"-m",
"ipykernel",
"install",
"--name",
"jupyter-mcp"
]
}
}
}