
How to add Jupyter MCP Server to Cursor
Connect AI to Jupyter Notebooks in real-time — run cells, read outputs, and manage multiple notebooks. Paste the config into ~/.cursor/mcp.json and restart Cursor.
Last updated June 14, 2026 · 1.2k★ · stdio · apikey · official
Cursor config for Jupyter MCP Server
uvx jupyter-mcp-server@latest{
"mcpServers": {
"jupyter-mcp-server": {
"command": "uvx",
"args": [
"jupyter-mcp-server@latest"
],
"env": {
"JUPYTER_URL": "http://localhost:8888",
"JUPYTER_TOKEN": "MY_TOKEN",
"ALLOW_IMG_OUTPUT": "true"
}
}
}
}Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.
Setup steps
- 1Open Cursor → Settings → MCP → Add new MCP server (or edit ~/.cursor/mcp.json directly).
- 2Paste the Jupyter MCP Server config below into the "mcpServers" object.
- 3Fill in placeholder secrets, then save.
- 4Cursor reloads MCP servers automatically — check Settings → MCP for a green status dot.
- 5Ask Cursor to use one of Jupyter MCP Server's tools to confirm it's connected.
Before you start
- A running JupyterLab / Jupyter server (e.g. jupyterlab==4.4.1 with jupyter-collaboration, jupyter-mcp-tools, ipykernel, pycrdt)
- uv / uvx (0.6.14+) for the quick-start method, or Docker for the production method
- A Jupyter server token (JUPYTER_TOKEN) and, since v1.0.0, MCP_TOKEN configured in the MCP client
What Jupyter MCP Server can do in Cursor
list_filesList files and directories in the Jupyter server's file system.
list_kernelsList all available and running kernel sessions on the Jupyter server.
connect_to_jupyterConnect to a Jupyter server dynamically without restarting the MCP server. Not available when running as a Jupyter extension.
use_notebookConnect to a notebook file, create a new one, or switch between notebooks.
list_notebooksList all notebooks available on the Jupyter server and their status.
restart_notebookRestart the kernel for a specific managed notebook.
unuse_notebookDisconnect from a specific notebook and release its resources.
read_notebookRead notebook cells source content with brief or detailed format options.
Security
Requires a Jupyter server token (JUPYTER_TOKEN) for authentication; as of v1.0.0 you must also configure MCP_TOKEN in your MCP client setup. The server connects to a running Jupyter/JupyterLab instance and can execute arbitrary code in its kernels, so treat the configured Jupyter endpoint and its token as sensitive.
Jupyter MCP Server + Cursor FAQ
Where is the Cursor config file?
Cursor reads MCP servers from ~/.cursor/mcp.json. Paste the Jupyter MCP Server config there under the "mcpServers" key and restart the client.
Is Jupyter MCP Server safe to use with Cursor?
Requires a Jupyter server token (JUPYTER_TOKEN) for authentication; as of v1.0.0 you must also configure MCP_TOKEN in your MCP client setup. The server connects to a running Jupyter/JupyterLab instance and can execute arbitrary code in its kernels, so treat the configured Jupyter endpoint and its token as sensitive.
Which transports are supported?
The quick-start uses STDIO transport with uvx (or Docker). The documentation also covers Streamable HTTP transport and running as a Jupyter Server extension.
Do I need to install datalayer_pycrdt?
No. As of v1.0.2, pycrdt is supported directly, so installing datalayer_pycrdt is no longer required.
What changed in v1.0.0?
v1.0.0 introduced a breaking change requiring you to configure MCP_TOKEN in your MCP client setup.