Jupyter MCP
Run and edit cells in a live Jupyter notebook.
Test results
Last passed 2026-10-13Claude CodePassed2026-10-13 · install, connect, tools, agent task
CursorPassed2026-10-13 · install, connect, tools, agent task
Claude DesktopNot tested—
ChatGPT (Codex)Not tested—
Protocol: starts, 18 tools listed · 2026-10-13
🧪 Test-box note: Tested against a local JupyterLab (127.0.0.1:8888, test token) started by the harness.
Install
claude mcp add jupyter -e JUPYTER_URL=http://127.0.0.1:8888 -e JUPYTER_TOKEN=your-jupyter-token -e DOCUMENT_URL=http://127.0.0.1:8888 -e DOCUMENT_TOKEN=your-jupyter-token -e RUNTIME_URL=http://127.0.0.1:8888 -e RUNTIME_TOKEN=your-jupyter-token -e DOCUMENT_ID=notebook.ipynb -e ALLOW_IMG_OUTPUT=false -- uvx jupyter-mcp-serverRun in your terminal. This exact command is what our harness runs in Claude Code; see the results above.
{
"mcpServers": {
"jupyter": {
"command": "uvx",
"args": [
"jupyter-mcp-server"
],
"env": {
"JUPYTER_URL": "http://127.0.0.1:8888",
"JUPYTER_TOKEN": "your-jupyter-token",
"DOCUMENT_URL": "http://127.0.0.1:8888",
"DOCUMENT_TOKEN": "your-jupyter-token",
"RUNTIME_URL": "http://127.0.0.1:8888",
"RUNTIME_TOKEN": "your-jupyter-token",
"DOCUMENT_ID": "notebook.ipynb",
"ALLOW_IMG_OUTPUT": "false"
}
}
}
}Save as .cursor/mcp.json. This exact config is what our harness runs in Cursor; see the results above.
{
"mcpServers": {
"jupyter": {
"command": "uvx",
"args": [
"jupyter-mcp-server"
],
"env": {
"JUPYTER_URL": "http://127.0.0.1:8888",
"JUPYTER_TOKEN": "your-jupyter-token",
"DOCUMENT_URL": "http://127.0.0.1:8888",
"DOCUMENT_TOKEN": "your-jupyter-token",
"RUNTIME_URL": "http://127.0.0.1:8888",
"RUNTIME_TOKEN": "your-jupyter-token",
"DOCUMENT_ID": "notebook.ipynb",
"ALLOW_IMG_OUTPUT": "false"
}
}
}
}Add to claude_desktop_config.json and restart Claude Desktop. Tested on the Linux beta; see the results above.
[mcp_servers.jupyter]
command = "uvx"
args = ["jupyter-mcp-server"]
env = { JUPYTER_URL = "http://127.0.0.1:8888", JUPYTER_TOKEN = "your-jupyter-token", DOCUMENT_URL = "http://127.0.0.1:8888", DOCUMENT_TOKEN = "your-jupyter-token", RUNTIME_URL = "http://127.0.0.1:8888", RUNTIME_TOKEN = "your-jupyter-token", DOCUMENT_ID = "notebook.ipynb", ALLOW_IMG_OUTPUT = "false" }Add to ~/.codex/config.toml (shared by the ChatGPT (Codex) CLI and the ChatGPT desktop app; Codex runs inside the ChatGPT desktop app). Tested with the ChatGPT (Codex) CLI bundled in the ChatGPT desktop app; see the results above.
Not connecting? Troubleshooting: Claude Code · Cursor · Claude Desktop · ChatGPT (Codex)
Test history
| Date | Check | Result | Version |
|---|---|---|---|
| 2026-10-13 | Protocol (direct stdio) | Protocol: starts, 18 tools listed | 2.2.4 |
| 2026-10-13 | Claude Code | Passed install, connect, tools, agent task | 2.1.296 (Claude Code) |
| 2026-10-13 | Cursor | Passed install, connect, tools, agent task | 2026.10.12-d47ca18 |
Tools seen by our harness (18)
clear_cell_outputconnect_to_jupyterdelete_celledit_cell_sourceexecute_cellexecute_codeinsert_cellinsert_execute_code_celllist_fileslist_kernelslist_notebooksmove_celloverwrite_cell_sourceread_cellread_notebookrestart_notebookunuse_notebookuse_notebook