Real-time interaction with Jupyter Notebooks so agents can edit, document and execute code for data analysis and visualization.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add jupyter --env NOTEBOOK_PATH='<NOTEBOOK_PATH>' --env ROOM_ID='<ROOM_ID>' --env ROOM_TOKEN='<ROOM_TOKEN>' --env ROOM_URL='<ROOM_URL>' --env RUNTIME_TOKEN='<RUNTIME_TOKEN>' --env RUNTIME_URL='<RUNTIME_URL>' --env SERVER_URL='<SERVER_URL>' --env TOKEN='<TOKEN>' -- python -m jupyter_mcp_server~/.codex/config.toml
[mcp_servers.jupyter]
command = "python"
args = ["-m", "jupyter_mcp_server"]
env = { NOTEBOOK_PATH = "<NOTEBOOK_PATH>", ROOM_ID = "<ROOM_ID>", ROOM_TOKEN = "<ROOM_TOKEN>", ROOM_URL = "<ROOM_URL>", RUNTIME_TOKEN = "<RUNTIME_TOKEN>", RUNTIME_URL = "<RUNTIME_URL>", SERVER_URL = "<SERVER_URL>", TOKEN = "<TOKEN>" }
# codex mcp add jupyter --env NOTEBOOK_PATH='<NOTEBOOK_PATH>' --env ROOM_ID='<ROOM_ID>' --env ROOM_TOKEN='<ROOM_TOKEN>' --env ROOM_URL='<ROOM_URL>' --env RUNTIME_TOKEN='<RUNTIME_TOKEN>' --env RUNTIME_URL='<RUNTIME_URL>' --env SERVER_URL='<SERVER_URL>' --env TOKEN='<TOKEN>' -- python -m jupyter_mcp_server~/.cursor/mcp.json
{
"mcpServers": {
"jupyter": {
"command": "python",
"args": [
"-m",
"jupyter_mcp_server"
],
"env": {
"NOTEBOOK_PATH": "<NOTEBOOK_PATH>",
"ROOM_ID": "<ROOM_ID>",
"ROOM_TOKEN": "<ROOM_TOKEN>",
"ROOM_URL": "<ROOM_URL>",
"RUNTIME_TOKEN": "<RUNTIME_TOKEN>",
"RUNTIME_URL": "<RUNTIME_URL>",
"SERVER_URL": "<SERVER_URL>",
"TOKEN": "<TOKEN>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"jupyter": {
"type": "stdio",
"command": "python",
"args": [
"-m",
"jupyter_mcp_server"
],
"env": {
"NOTEBOOK_PATH": "<NOTEBOOK_PATH>",
"ROOM_ID": "<ROOM_ID>",
"ROOM_TOKEN": "<ROOM_TOKEN>",
"ROOM_URL": "<ROOM_URL>",
"RUNTIME_TOKEN": "<RUNTIME_TOKEN>",
"RUNTIME_URL": "<RUNTIME_URL>",
"SERVER_URL": "<SERVER_URL>",
"TOKEN": "<TOKEN>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"jupyter": {
"command": "python",
"args": [
"-m",
"jupyter_mcp_server"
],
"env": {
"NOTEBOOK_PATH": "<NOTEBOOK_PATH>",
"ROOM_ID": "<ROOM_ID>",
"ROOM_TOKEN": "<ROOM_TOKEN>",
"ROOM_URL": "<ROOM_URL>",
"RUNTIME_TOKEN": "<RUNTIME_TOKEN>",
"RUNTIME_URL": "<RUNTIME_URL>",
"SERVER_URL": "<SERVER_URL>",
"TOKEN": "<TOKEN>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"jupyter": {
"command": "python",
"args": [
"-m",
"jupyter_mcp_server"
],
"env": {
"NOTEBOOK_PATH": "<NOTEBOOK_PATH>",
"ROOM_ID": "<ROOM_ID>",
"ROOM_TOKEN": "<ROOM_TOKEN>",
"ROOM_URL": "<ROOM_URL>",
"RUNTIME_TOKEN": "<RUNTIME_TOKEN>",
"RUNTIME_URL": "<RUNTIME_URL>",
"SERVER_URL": "<SERVER_URL>",
"TOKEN": "<TOKEN>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"jupyter": {
"command": "python",
"args": [
"-m",
"jupyter_mcp_server"
],
"env": {
"NOTEBOOK_PATH": "<NOTEBOOK_PATH>",
"ROOM_ID": "<ROOM_ID>",
"ROOM_TOKEN": "<ROOM_TOKEN>",
"ROOM_URL": "<ROOM_URL>",
"RUNTIME_TOKEN": "<RUNTIME_TOKEN>",
"RUNTIME_URL": "<RUNTIME_URL>",
"SERVER_URL": "<SERVER_URL>",
"TOKEN": "<TOKEN>"
}
}
}
}Environment variables
NOTEBOOK_PATHROOM_IDROOM_TOKENROOM_URLRUNTIME_TOKENRUNTIME_URLSERVER_URLTOKEN
Replace the placeholders with your own credentials and keep them out of version control.