Data as of

Jupyter MCP Server for Cursor: Setup & Config

Jupyter MCP Server lets Cursor inspect, edit, and execute notebooks with live output feedback.

What you can do with Jupyter in Cursor

A live notebook interface combining precise cell edits, execution feedback, and multimodal results.

  • Switch between several notebooks during a data-science workflow.
  • Trace tool calls and kernel execution with observability hooks.

Before you start: Jupyter in Cursor

  • Python
  • uv 0.6.14 or later
  • A running authenticated Jupyter service
  • JupyterLab collaboration setup as documented
  • An MCP-compatible client

The environment setup includes ipykernel, pycrdt, and jupyter-mcp-tools, with JupyterLab pinned to 4.4.1 and jupyter-collaboration to 4.0.2. It separately warns that MCP_TOKEN is required from v1.0.0; consult its linked provider setup for that token's configuration. Image output needs compatible clients and models.

Jupyter Cursor configuration

  1. Choose Cursor configuration scope

    For Jupyter MCP Server, open Project: .cursor/mcp.json User: ~/.cursor/mcp.json. Merge into mcpServers at project or user scope.

  2. Add Jupyter MCP Server to Cursor

    Use the jupyter-mcp-server entry below in mcpServers. Keep Jupyter MCP Server's documented stdio connection fields and your other Cursor entries.

  3. Check Jupyter MCP Server in Cursor

    Jupyter MCP Server: Enable in Cursor’s MCP settings; inspect tools.

Config file · Project: .cursor/mcp.json

User: ~/.cursor/mcp.json

JSON
{
  "mcpServers": {
    "jupyter-mcp-server": {
      "command": "uvx",
      "args": [
        "jupyter-mcp-server@latest"
      ],
      "env": {
        "JUPYTER_URL": "<URL of the running Jupyter service>",
        "JUPYTER_TOKEN": "<Jupyter authentication token>",
        "ALLOW_IMG_OUTPUT": "<true for image-capable clients, otherwise false>",
        "MCP_TOKEN": "<MCP authentication token required by the README's version 1.0.0 notice>"
      }
    }
  }
}

Jupyter tools available to Cursor

Jupyter's stored tool list documents 19 tools; compare it with Cursor's connected tool list, because the stored list is not a live check.

list_files

Find list_files under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Enumerate directories and files exposed by the Jupyter service.

list_kernels

Find list_kernels under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

connect_to_jupyter

Find connect_to_jupyter under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

use_notebook

Find use_notebook under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

list_notebooks

Find list_notebooks under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

restart_notebook

Find restart_notebook under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

unuse_notebook

Find unuse_notebook under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

read_notebook

Find read_notebook under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

read_cell

Find read_cell under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

insert_cell

Find insert_cell under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

delete_cell

Find delete_cell under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Remove a cell by index.

move_cell

Find move_cell under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Reposition a cell within its notebook.

overwrite_cell_source

Find overwrite_cell_source under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Replace an existing cell's source content.

edit_cell_source

Find edit_cell_source under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Apply targeted find-and-replace changes to cell source.

execute_cell

Find execute_cell under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Run a cell with timeout control and multimodal results.

insert_execute_code_cell

Find insert_execute_code_cell under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Create a code cell and run it in one operation.

execute_code

Find execute_code under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Run code directly in the kernel, including magic and shell commands.

notebook_run-all-cells

Find notebook_run-all-cells under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Run current notebook cells in sequence when JupyterLab mode is enabled.

notebook_get-selected-cell

Find notebook_get-selected-cell under Jupyter in Cursor's MCP settings; inspect its arguments when the agent requests a call.

Inspect the selected notebook cell in JupyterLab mode.

Jupyter: full stored tool descriptions

Troubleshooting Jupyter in Cursor

  • Cursor must find uvx jupyter-mcp-server@latest (from uv, for Python tools) for Jupyter MCP Server. Enable the project/user entry in MCP settings and inspect its tools.
  • Review ALLOW_IMG_OUTPUT, JUPYTER_TOKEN, JUPYTER_URL, MCP_TOKEN for Jupyter MCP Server before sharing project .cursor/mcp.json; project scope travels with the repository.
  • Jupyter MCP Server uses stdio here: Cursor must keep the configured process running; protocol output belongs on stdout and diagnostics on stderr.
  • Known limitation: Requires a configured Jupyter environment and authentication tokens.
  • Known limitation: Image handling depends on client and model capabilities.
  • Known limitation: Dynamic server connection is unavailable in Jupyter extension mode.
  • General Cursor troubleshooting lives in the /clients/cursor guide.

Jupyter MCP Server — details. Cursor guide

Frequently asked questions

Cursor's Jupyter MCP Server entry belongs under mcpServers in .cursor/mcp.json (project) or ~/.cursor/mcp.json (user). Confirm the active scope in MCP settings.

Cursor's jupyter-mcp-server example uses stdio.

Jupyter MCP Server's Cursor configuration invokes uvx jupyter-mcp-server@latest (from uv, for Python tools).

Cursor's Jupyter MCP Server example references ALLOW_IMG_OUTPUT, JUPYTER_TOKEN, JUPYTER_URL, MCP_TOKEN. Check these names if startup or authentication fails; the example alone does not distinguish required from optional values.

Jupyter MCP Server's stored list contains 19 tools, including list_files, list_kernels, connect_to_jupyter. Compare those names with Cursor's connected tool list; the stored list is not a live check.

No. Separate document and runtime URLs and tokens are documented for deployments that split those services.

The quick start uses JUPYTER_TOKEN. A separate version notice says client setups must also configure MCP_TOKEN from v1.0.0.