CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
datalayer avatar

Jupyter

datalayer/jupyter-mcp-server
1.1k
Summary

The Jupyter MCP Server enables AI systems to connect to and manage Jupyter Notebooks in real-time through the Model Context Protocol, providing tools for executing cells, viewing notebook state, and understanding multimodal outputs including code, text, images, and plots. It offers context-aware notebook interaction with smart execution that handles cell failures, supports multiple notebooks, and provides instant visibility into notebook changes. The server solves the problem of giving AI assistants programmatic access to live Jupyter environments for collaborative notebook editing, debugging, and data exploration workflows.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →

Datalayer

Become a Sponsor

🪐🔧 Jupyter MCP Server

An MCP server developed for AI to connect and manage Jupyter Notebooks in real-time — and scale your Code Sandbox from local to the cloud (Datalayer, Kaggle, Google Colab, Modal, Daytona, E2B, CoreWeave, Cloudflare...)

Developed by Datalayer - Join our Discord

PyPI - Version Total PyPI downloads Docker Pulls License

Built and maintained by Datalayer

📖 Documentation  ·  🔧 Tools  ·  💬 Community

HOT NEWS

No process to run. Datalayer now hosts this server for you at https://mcp.datalayer.run/mcp — one endpoint for every agent and every notebook. Sign in from your browser, approve what the agent may do, and your work keeps running on the server after the agent disconnects.

→ Hosted Jupyter MCP Server

Jupyter MCP Server 2

Claude Code plugin

One command to connect Claude Code, with /datalayer:notebook, /datalayer:run and /datalayer:status on top:

/plugin marketplace add datalayer/jupyter-mcp-server
/plugin install datalayer

→ Datalayer plugin for Claude Code


Free and open source, BSD 3-Clause — point it at any Jupyter you already run, local or JupyterHub, no account needed.

Built and maintained by Datalayer, where the same server drives always-on Notebooks with GPU Code Sandboxes and durable execution — so your agent keeps working on your data when your laptop does not.

Discover Datalayer


New: OAuth 2.1

No token to copy and paste. An agent that meets this server unauthenticated is told where to authenticate, opens your browser, and you sign in to Datalayer as yourself. The agent never sees your password — it receives a token scoped to what you approved, and you can disconnect one agent without touching the others.

What each agent may do is two separate decisions: the scopes you approve (notebooks:read, notebooks:write, code:execute, data:read) say what kind of operation it may perform, and your own Datalayer permissions still say which notebooks it may touch. An agent can never reach a notebook you cannot.

Personal access tokens keep working, and remain the simpler path for a CLI or a script. → OAuth and identity

Hot fix

Pin code-sandboxes to match your jupyter-mcp-server. The sandbox variant jupyter was renamed to jupyter-server in code-sandboxes 1.1.1, and the two packages have to agree on the name.

Your jupyter-mcp-serverInstall
>= 1.5.0code-sandboxes >= 1.1.1
< 1.5.0code-sandboxes <= 1.0.9
# On 1.5.0 or later
pip install "jupyter-mcp-server>=1.5.0" "code-sandboxes>=1.1.1"

# Staying on an earlier jupyter-mcp-server
pip install "jupyter-mcp-server<1.5.0" "code-sandboxes<=1.0.9"

An older server with a newer code-sandboxes installs cleanly and then fails on the first execution with Unknown sandbox variant: jupyter. → Release notes


Built on MCP 2 in v2.0.0

Jupyter MCP Server 2 runs on the MCP Python SDK 2 (mcp>=2,<3), the SDK's first major release. Nothing changes in how you start or configure the server, in the tools, or for the MCP clients connecting to it — the protocol is negotiated with each client as before. What changes is the Python environment:

Your jupyter-mcp-servermcp SDK
>= 2.0.0mcp >= 2
< 2.0.0mcp < 2

Both are pinned in the package, so pip sorts it out; an environment holding another package that still pins mcp<2 has to stay on jupyter-mcp-server<2 until that package moves. Writing an extension or a custom token verifier against the SDK? See the release notes for the renamed imports.


Renamed in v1.3.2

--provider is now --document-provider (env var PROVIDER → DOCUMENT_PROVIDER).

It only ever chose where the notebook documents live — jupyter for the collaboration API of a Jupyter Server, datalayer for the Datalayer spacer — while the old name and its help text suggested it also chose where code runs. Execution is picked separately, with --sandbox-variant (jupyter-server, datalayer, daytona, e2b, coreweave, cloudflare, kaggle, google-colab, monty, modal).

Nothing breaks in v1.3.2: --provider is still accepted as an alias, PROVIDER is still read, and a /connect payload carrying "provider" is still understood. Move to the new names when convenient — the old ones are deprecated, not removed.


Jupyter MCP Server Demo

📖 Table of Contents

  • Key Features
  • MCP Overview
  • Getting Started
  • Sandbox Variants
  • Best Practices
  • Contributing
  • Resources

🚀 Key Features

  • ⚡ Real-time control: Instantly view notebook changes as they happen.
  • 🔁 Smart execution: Automatically adjusts when a cell run fails thanks to cell output feedback.
  • 🧠 Context-aware: Understands the entire notebook context for more relevant interactions.
  • 📊 Multimodal support: Support different output types, including images, plots, and text.
  • 📚 Multi-notebook support: Seamlessly switch between multiple notebooks.
  • 🎨 JupyterLab integration: Enhanced UI integration like automatic notebook opening.
  • 🤝 MCP-compatible: Works with any MCP client, such as Claude Desktop, Cursor, Windsurf, and more.
  • 🔍 Observability: Built-in hook system with OpenTelemetry integration for tracing tool calls and kernel executions.

Compatible with any Jupyter deployment (local, JupyterHub, ...) and with Datalayer hosted Notebooks, where the Code Sandboxes come with GPUs and the execution survives a disconnect.

🔧 MCP Overview

🔧 Tools Overview

Every tool, with its parameters, schema and return value, is generated from a live snapshot of the running server and published at jupyter-mcp-server.datalayer.tech/mcp — so it is never out of step with the code, which a table copied into this file would be.

They fall into four groups:

  • Server and code sandbox — browse the Jupyter file system, list kernels, connect to a server at runtime, and launch, select and terminate code sandboxes.
  • Notebooks — open, create and switch between notebooks, list them, read one, restart its kernel, release it.
  • Cells — read, insert, delete, move, reorder and edit cells, surgically or wholesale, and clear their outputs.
  • Execution — run a cell or arbitrary code on the active backend, with multimodal output and streaming where the sandbox supports it.

Sandbox tools need the optional jupyter_mcp_sandboxes extension; see Sandbox Variants.

JupyterLab Integration

Available only when JupyterLab mode is enabled. It is enabled by default.

In JupyterLab mode the server also exposes JupyterLab commands as MCP tools through jupyter-mcp-tools — notebook_run-all-cells and notebook_get-selected-cell by default, with more selectable through allowed_jupyter_mcp_tools. The full list and how to configure it are in the Additional Tools documentation.

📝 Prompt Overview

The server implements the MCP prompts feature. jupyter-cite cites specific cells from a notebook, the way @ does in a coding IDE or CLI. Input parameters and returned content are in the Prompts documentation.

🏁 Getting Started

For comprehensive setup instructions—including Streamable HTTP transport, running as a Jupyter Server extension and advanced configuration—check out our documentation. Or, get started quickly with JupyterLab and STDIO transport here below.

1. Set Up Your Environment

pip install jupyterlab jupyter-collaboration jupyter-mcp-tools ipykernel

Tip

To confirm your environment is correctly configured:

  1. Open a notebook in JupyterLab
  2. Type some content in any cell (code or markdown)
  3. Observe the tab indicator: you should see an "×" appear next to the notebook name, indicating unsaved changes
  4. Wait a few seconds—the "×" should automatically change to a "●" without manually saving

This automatic saving behavior confirms that the real-time collaboration features are working properly, which is essential for MCP server integration.


2. Start JupyterLab

# Start JupyterLab on port 8888, allowing access from any IP and setting a token
jupyter lab --port 8888 --IdentityProvider.token MY_TOKEN --ip 0.0.0.0

Note

If you are running notebooks through JupyterHub instead of JupyterLab as above, refer to our JupyterHub setup guide.


3. Configure Your Preferred MCP Client

Next, configure your MCP client to connect to the server. We offer two primary methods—choose the one that best fits your needs:

  • 📦 Using uvx (Recommended for Quick Start): A lightweight and fast method using uv. Ideal for local development and first-time users.
  • 🐳 Using Docker (Recommended for Production): A containerized approach that ensures a consistent and isolated environment, perfect for production or complex setups.
📦 Using uvx (Quick Start)

First, install uv:

pip install uv
uv --version
# should be 0.6.14 or higher

See more details on uv installation.

Then, configure your client:

{
  "mcpServers": {
    "jupyter": {
      "command": "uvx",
      "args": ["jupyter-mcp-server@latest"],
      "env": {
        "JUPYTER_URL": "http://localhost:8888",
        "JUPYTER_TOKEN": "MY_TOKEN",
        "ALLOW_IMG_OUTPUT": "true"
      }
    }
  }
}
🐳 Using Docker (Production)

On macOS and Windows:

{
  "mcpServers": {
    "jupyter": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "JUPYTER_URL",
        "-e", "JUPYTER_TOKEN",
        "-e", "ALLOW_IMG_OUTPUT",
        "datalayer/jupyter-mcp-server:latest"
      ],
      "env": {
        "JUPYTER_URL": "http://host.docker.internal:8888",
        "JUPYTER_TOKEN": "MY_TOKEN",
        "ALLOW_IMG_OUTPUT": "true"
      }
    }
  }
}

On Linux:

{
  "mcpServers": {
    "jupyter": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "JUPYTER_URL",
        "-e", "JUPYTER_TOKEN",
        "-e", "ALLOW_IMG_OUTPUT",
        "--network=host",
        "datalayer/jupyter-mcp-server:latest"
      ],
      "env": {
        "JUPYTER_URL": "http://localhost:8888",
        "JUPYTER_TOKEN": "MY_TOKEN",
        "ALLOW_IMG_OUTPUT": "true"
      }
    }
  }
}

Tip

  1. Port Configuration: Ensure the port in your Jupyter URLs matches the one used in the jupyter lab command. For simplified config, set this in JUPYTER_URL.
  2. Server Separation: Use JUPYTER_URL when both services are on the same server, or set individual variables for advanced deployments. The different URL variables exist because some deployments separate notebook storage (DOCUMENT_URL) from kernel execution (CODE_SANDBOX_URL).
  3. Authentication: In most cases, document and code sandbox services use the same authentication token. Use JUPYTER_TOKEN for simplified config or set DOCUMENT_TOKEN and CODE_SANDBOX_TOKEN individually for different credentials.
  4. Notebook Path: The DOCUMENT_ID parameter specifies the path to the notebook the MCP client default to connect. It should be relative to the directory where JupyterLab was started. If you omit DOCUMENT_ID, the MCP client can automatically list all available notebooks on the Jupyter server, allowing you to select one interactively via your prompts.
  5. Image Output: Set ALLOW_IMG_OUTPUT to false if your LLM does not support mutimodel understanding.

For detailed instructions on configuring various MCP clients—including Claude Desktop, VS Code, Cursor, Cline, and Windsurf — see MCP Client Configuration.

🧩 Sandbox Variants

By default, code executes through the code-sandboxes jupyter-server variant against a Jupyter Server (SANDBOX_VARIANT=jupyter-server). Setting SANDBOX_VARIANT to any other value uses another code-sandboxes engine via the sandbox's plain kernel client when the selected variant exposes one, so the same notebook tools can run code on additional backends.

The spelling is not fussy: google_colab, google-colab and GOOGLE-COLAB all name the same variant. The names below are the canonical ones.

Sandbox features are provided by the optional jupyter_mcp_sandboxes extension. To expose sandbox lifecycle tools (launch_sandbox, list_sandboxes, use_sandbox, terminate_sandbox) or run any non-jupyter-server sandbox variant, install it with pip install jupyter_mcp_sandboxes.

EngineSANDBOX_VARIANTExtra installKey variablesDocs
Jupyter Server (default)jupyter-server—JUPYTER_URL, JUPYTER_TOKENSetup
JupyterHubjupyter-server—CODE_SANDBOX_URL, CODE_SANDBOX_TOKENSetup
Datalayerdatalayerjupyter-mcp-server[datalayer]CODE_SANDBOX_URL, CODE_SANDBOX_TOKEN, SANDBOX_ENVIRONMENTSetup
Kagglekagglejupyter-mcp-server[kaggle]Kaggle credentials, or CODE_SANDBOX_URL for interactive modeSetup
Google Colabgoogle-colabjupyter-mcp-serverCODE_SANDBOX_URL, CODE_SANDBOX_ID, CODE_SANDBOX_PROXY_TOKENSetup
Montymontyjupyter-mcp-server[monty]—Setup
Modalmodaljupyter-mcp-server[modal]Modal credentialsSetup
Daytonadaytonajupyter-mcp-server[daytona]DAYTONA_API_KEY, or DAYTONA_JWT_TOKEN + DAYTONA_ORGANIZATION_IDSetup
E2Be2bjupyter-mcp-server[e2b]E2B_API_KEYSetup
CoreWeavecoreweavejupyter-mcp-server[coreweave]CWSANDBOX_API_KEYSetup
Cloudflarecloudflarejupyter-mcp-server[cloudflare]CLOUDFLARE_SANDBOX_API_URL, CLOUDFLARE_SANDBOX_API_KEYSetup

Each engine has its own page with the credentials it needs, the accelerator options it accepts and a worked client configuration — start from jupyter-mcp-server.datalayer.tech/code-sandboxes.

🧪 Testing

Run the test suite:

pytest tests/

Required environment variables for tests:

  • None for the default local suite.

Optional environment variables:

  • TEST_MCP_SERVER: true/false toggle for standalone MCP server mode tests (default true).
  • TEST_JUPYTER_SERVER: true/false toggle for Jupyter extension mode tests (default true).
  • DATALAYER_API_KEY: required only for Datalayer cloud smoke/integration tests.
  • DATALAYER_RUN_URL: optional custom Datalayer code sandbox URL for datalayer engine tests.
  • SANDBOX_ENVIRONMENT: optional cloud environment override (for example ai-agents-env).

✅ Best Practices

  • Interact with LLMs that supports multimodal input (like Gemini 2.5 Pro) to fully utilize advanced multimodal understanding capabilities.
  • Use a MCP client that supports returning image data and can parse it (like Cursor, Gemini CLI, etc.), as some clients may not support this feature.
  • Break down complex task (like the whole data science workflow) into multiple sub-tasks (like data cleaning, feature engineering, model training, model evaluation, etc.) and execute them step-by-step.
  • Provide clearly structured prompts and rules (👉 Visit our Prompt Templates to get started)
  • Provide as much context as possible (like already installed packages, field explanations for existing datasets, current working directory, detailed task requirements, etc.).

🤝 Contributing

We welcome contributions of all kinds! Here are some examples:

  • 🐛 Bug fixes
  • 📝 Improvements to existing features
  • 🔧 New feature development
  • 📚 Documentation improvements and prompt templates

For detailed instructions on how to get started with development and submit your contributions, please see our Contributing Guide.

Our Contributors

Contributors

📚 Resources

Looking for blog posts, videos, or other materials about Jupyter MCP Server?

👉 Visit the Resources section in our documentation for more!

Star History Chart


If this project is helpful to you, please give us a ⭐️

Made with ❤️ by Datalayer

Datalayer Logo
Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
Categories
Data & Analytics
UpdatedMar 10, 2026
View on GitHub

Related Data & Analytics MCP Servers

View all →
neo4j-contrib avatar
Mcp Neo4j Data Modeling

io.github.neo4j-contrib/mcp-neo4j-data-modeling

A simple Neo4j MCP server for creating graph data models.
958
microsoft avatar
Power BI Modeling MCP Server

microsoft/powerbi-modeling-mcp

The Power BI Modeling MCP Server brings Power BI semantic modeling capabilities to your AI agents.
847
tickdb avatar
TickDB Market Data

io.github.tickdb/tickdb-market-data

Real-time & historical market data: forex, stocks, crypto, indices, metals, K-line, quotes
414
snowflake-labs avatar
OSS Snowflake MCP Server

snowflake-labs/mcp

MCP Server for Snowflake from Snowflake Labs
291
worldwidelaw avatar
Legal Data Hunter

io.github.zachlaik/legal-data-hunter

Search 18M+ legal documents worldwide — case law, legislation, and doctrine across 110+ countries.
276
surendranb avatar
Google Analytics Mcp

surendranb/google-analytics-mcp

An MCP server that provides [describe what your server does]
214