๐Ÿช ๐Ÿ”ง Model Context Protocol (MCP) Server for Jupyter.

Datalayer

Become a Sponsor

๐Ÿช โœจ Jupyter MCP Server

Github Actions StatusPyPI - Versionsmithery badge

Jupyter MCP Server is a Model Context Protocol (MCP) server implementation that provides interaction with ๐Ÿ““ Jupyter notebooks running in any JupyterLab (works also with your ๐Ÿ’ป local JupyterLab).

Jupyter MCP Server

Start JupyterLab

Make sure you have the following installed. The collaboration package is needed as the modifications made on the notebook can be seen thanks to Jupyter Real Time Collaboration.

pip install jupyterlab jupyter-collaboration ipykernel
pip uninstall -y pycrdt datalayer_pycrdt
pip install datalayer_pycrdt

Then, start JupyterLab with the following command.

jupyter lab --port 8888 --IdentityProvider.token MY_TOKEN --ip 0.0.0.0

You can also run make jupyterlab.

[!NOTE]

The --ip is set to 0.0.0.0 to allow the MCP server running in a Docker container to access your local JupyterLab.

Use with Claude Desktop

Claude Desktop can be downloaded from this page for macOS and Windows.

For Linux, we had success using this UNOFFICIAL build script based on nix

# โš ๏ธ UNOFFICIAL
# You can also run `make claude-linux`
NIXPKGS_ALLOW_UNFREE=1 nix run github:k3d3/claude-desktop-linux-flake \
  --impure \
  --extra-experimental-features flakes \
  --extra-experimental-features nix-command

To use this with Claude Desktop, add the following to your claude_desktop_config.json (read more on the MCP documentation website).

[!IMPORTANT]

Ensure the port of the SERVER_URLand TOKEN match those used in the jupyter lab command.

The NOTEBOOK_PATH should be relative to the directory where JupyterLab was started.

Claude Configuration on macOS and Windows

{
  "mcpServers": {
    "jupyter": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SERVER_URL",
        "-e",
        "TOKEN",
        "-e",
        "NOTEBOOK_PATH",
        "datalayer/jupyter-mcp-server:latest"
      ],
      "env": {
        "SERVER_URL": "http://host.docker.internal:8888",
        "TOKEN": "MY_TOKEN",
        "NOTEBOOK_PATH": "notebook.ipynb"
      }
    }
  }
}

Claude Configuration on Linux

CLAUDE_CONFIG=${HOME}/.config/Claude/claude_desktop_config.json
cat <<EOF > $CLAUDE_CONFIG
{
  "mcpServers": {
    "jupyter": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SERVER_URL",
        "-e",
        "TOKEN",
        "-e",
        "NOTEBOOK_PATH",
        "--network=host",
        "datalayer/jupyter-mcp-server:latest"
      ],
      "env": {
        "SERVER_URL": "http://localhost:8888",
        "TOKEN": "MY_TOKEN",
        "NOTEBOOK_PATH": "notebook.ipynb"
      }
    }
  }
}
EOF
cat $CLAUDE_CONFIG

Components

Tools

The server currently offers 3 tools:

  1. add_execute_code_cell
  • Add and execute a code cell in a Jupyter notebook.
  • Input:
    • cell_content(string): Code to be executed.
  • Returns: Cell output.
  1. add_markdown_cell
  • Add a markdown cell in a Jupyter notebook.
  • Input:
    • cell_content(string): Markdown content.
  • Returns: Success message.
  1. download_earth_data_granules

    โš ๏ธ We plan to migrate this tool to a separate repository in the future as it is specific to Geospatial analysis.

  • Add a code cell in a Jupyter notebook to download Earth data granules from NASA Earth Data.
  • Input:
    • folder_name(string): Local folder name to save the data.
    • short_name(string): Short name of the Earth dataset to download.
    • count(int): Number of data granules to download.
    • temporal (tuple): (Optional) Temporal range in the format (date_from, date_to).
    • bounding_box (tuple): (Optional) Bounding box in the format (lower_left_lon, lower_left_lat, upper_right_lon, upper_right_lat).
  • Returns: Cell output.

Building

You can build the Docker image it from source.

make build-docker

Installing via Smithery

To install Jupyter MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @datalayer/jupyter-mcp-server --client claude

MCP Server ยท Populars

MCP Server ยท New

    ohad6k

    Ditto

    Mine your Claude Code and Codex logs into a local you.md agent profile.

    Community ohad6k
    aidatacooper

    cwtwb

    A Python-based engine that enables Text-to-Tableau twb dashboards generation.

    Community aidatacooper
    aeonfun

    OPENDIA

    Connect your browser to AI models. Just use Dia on Chrome, Arc or Firefox.

    Community aeonfun
    modelscope

    funasr

    Industrial-grade speech recognition toolkit: 170x realtime, 50+ languages, speaker diarization, emotion detection, streaming, and OpenAI-compatible API.

    Community modelscope
    SimplyLiz

    CKB โ€” Code Knowledge Backend

    Code intelligence for AI assistants - MCP server, CLI, and HTTP API with symbol navigation, impact analysis, and architecture mapping

    Community SimplyLiz