mcpField
🪐
🪐✨ Jupyter MCP Server

🪐✨ Jupyter MCP Server

本地服务
jupyter-mcp-server.datalayer.tech数据与分析1.3k1 天前更新

关于 🪐✨ Jupyter MCP Server

Jupyter MCP Server 让 AI 通过 MCP 实时连接并操作 Jupyter Notebook,可从本地 Jupyter 扩展到多种云端代码沙箱。它面向数据科学与分析工作者,既可自托管,也可使用 Datalayer 托管的服务。

主要功能

  1. 01实时读取与修改 Notebook 单元格
  2. 02执行代码并返回文本、图像等多种输出
  3. 03根据单元格执行错误自动调整
  4. 04通过 code-sandboxes 切换多种执行后端
  5. 05提供 jupyter-cite 提示词引用单元格

适用场景

  1. 01让 AI 协助分析 Notebook 中的数据
  2. 02在本地 JupyterLab 中运行并调试代码
  3. 03将 Notebook 执行迁移到 GPU 沙箱等云端环境

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 Notebook 的打开、编辑、执行等工具,以及 jupyter-cite 提示词。它也支持 Streamable HTTP 传输方式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jupyter": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Datalayer

成为赞助者

🪐🔧 Jupyter MCP 服务

一个为 AI 开发的 MCP 服务,可实时连接和管理 Jupyter Notebook,并将你的 代码沙盒 从本地扩展到云端(Datalayer、Kaggle、Google Colab、Modal、Daytona、E2B、CoreWeave、Cloudflare……)

由 Datalayer 开发 - 加入我们的 Discord

PyPI - 版本 PyPI 总下载量 Docker 拉取量 许可证

由 Datalayer 构建和维护

📖 文档  ·  🔧 工具  ·  💬 社区

热点新闻

无需运行进程。 Datalayer 现在为你托管此服务,地址为 https://mcp.datalayer.run/mcp —— 一个端点,适用于每个 Agent 和每个 Notebook。 通过浏览器登录,批准 Agent 可以执行的操作;即使 Agent 断开连接,你的工作也会继续在服务器上运行。

→ 托管的 Jupyter MCP 服务

Jupyter MCP 服务 2

Claude Code 插件

只需一条命令即可连接 Claude Code,并提供 /datalayer:notebook、/datalayer:run 和 /datalayer:status:

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

→ Claude Code 的 Datalayer 插件


免费开源,采用 BSD 3-Clause 许可证 —— 可连接你已在运行的任何 Jupyter,无论是本地环境还是 JupyterHub,无需账户。

由 Datalayer 构建和维护。同一服务还驱动始终在线的 Notebook,配备 GPU 代码沙盒和持久化执行功能——即使你的笔记本电脑不在身边,Agent 也能继续处理你的数据。

了解 Datalayer


新增:OAuth 2.1 无需复制粘贴令牌。 当 Agent 未经身份验证连接到此服务时,它会收到身份验证位置的提示,打开你的浏览器,你以自己的身份登录 Datalayer。Agent 永远看不到你的密码——它会收到一个令牌,其权限范围仅限于你批准的内容;你可以断开某个 Agent,而不影响其他 Agent。

每个 Agent 可以执行哪些操作,由两个独立的决策决定:你批准的权限范围(notebooks:read、notebooks:write、code:execute、data:read)决定它可以执行哪类操作,而你自己的 Datalayer 权限仍决定它可以访问哪些笔记本。Agent 永远无法访问你无权访问的笔记本。

个人访问令牌仍可使用,对于 CLI 或脚本来说依然是更简单的选择。 → OAuth 和身份

热修复

将 code-sandboxes 固定到与 jupyter-mcp-server 匹配的版本。 code-sandboxes 1.1.1 将沙箱变体 jupyter 重命名为 jupyter-server,两个包必须使用相同的名称。

你的 jupyter-mcp-server安装
>= 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"

较旧的服务搭配较新的 code-sandboxes 可以顺利安装,但首次执行时会因 Unknown sandbox variant: jupyter 而失败。 → 发行说明


v2.0.0 基于 MCP 2 构建

Jupyter MCP Server 2 基于 MCP Python SDK 2(mcp>=2,<3)运行,这是该 SDK 的首个主版本。启动或配置服务、使用工具,以及连接到该服务的 MCP 客户端,方式均没有变化——协议仍会像以前一样与每个客户端协商。变化之处在于 Python 环境:

你的 jupyter-mcp-servermcp SDK
>= 2.0.0mcp >= 2
< 2.0.0mcp < 2

这两个依赖均已在包中固定,因此 pip 会处理好;如果某个环境中有其他包仍固定使用 mcp<2,那么在该包升级之前,必须继续使用 jupyter-mcp-server<2。如果你要基于 SDK 编写扩展或自定义令牌验证器,请参阅发行说明了解重命名后的导入项。


在 v1.3.2 中重命名

--provider 现已更名为 --document-provider(环境变量 PROVIDER → DOCUMENT_PROVIDER)。

它过去一直只用于选择笔记本文档的存放位置——jupyter 表示使用 Jupyter Server 的协作 API,datalayer 表示使用 Datalayer spacer——而旧名称及其帮助文本却让人以为它也能选择代码的运行位置。执行环境通过 --sandbox-variant 单独选择(jupyter-server、datalayer、daytona、e2b、coreweave、cloudflare、kaggle、google-colab、monty、modal)。

v1.3.2 不会造成任何兼容性问题:仍接受 --provider 作为别名,仍会读取 PROVIDER,也仍能理解包含 "provider" 的 /connect 负载。方便时请迁移到新名称——旧名称已弃用,但尚未移除。


Jupyter MCP Server 演示

## 📖 目录

🚀 主要功能

  • ⚡ 实时控制: 即时查看 Notebook 的实时变化。
  • 🔁 智能执行: 借助单元格输出反馈,在运行单元格失败时自动调整。
  • 🧠 感知上下文: 理解整个 Notebook 上下文,让交互更贴合需求。
  • 📊 多模态支持: 支持多种输出类型,包括图像、图表和文本。
  • 📚 支持多个 Notebook: 在多个 Notebook 之间无缝切换。
  • 🎨 集成 JupyterLab: 增强 UI 集成,例如自动打开 Notebook。
  • 🤝 兼容 MCP: 可与任何 MCP 客户端配合使用,例如 Claude Desktop、Cursor、Windsurf 等。
  • 🔍 可观测性: 内置钩子系统并集成 OpenTelemetry,可跟踪工具调用和内核执行。

兼容任何 Jupyter 部署(本地、JupyterHub 等),也兼容由 Datalayer 托管的 Notebook;其中的代码沙盒配备 GPU,且即使断开连接,执行也会继续。

🔧 MCP 概览

🔧 工具概览

所有工具及其参数、架构和返回值,均根据运行中服务的实时快照生成,并发布在 jupyter-mcp-server.datalayer.tech/mcp 上——因此它始终与代码保持同步,而复制到此文件中的表格则无法做到这一点。

这些工具分为四组:

  • 服务和代码沙盒 — 浏览 Jupyter 文件系统、列出内核、在运行时连接到服务,以及启动、选择和终止代码沙盒。
  • Notebook — 打开、创建和切换 Notebook,列出 Notebook、读取 Notebook、重启其内核并释放 Notebook。
  • 单元格 — 逐项或批量读取、插入、删除、移动、重新排序和编辑单元格,并清除单元格输出。
  • 执行 — 在活动后端运行单元格或任意代码;在沙盒支持时,提供多模态输出和流式传输。

沙盒工具需要可选的 jupyter_mcp_sandboxes 扩展;请参阅 沙盒变体。

JupyterLab 集成

仅在启用 JupyterLab 模式时可用。默认情况下已启用。

在 JupyterLab 模式下,服务还会通过 jupyter-mcp-tools 将 JupyterLab 命令作为 MCP 工具提供——默认包括 notebook_run-all-cells 和 notebook_get-selected-cell,还可以通过 allowed_jupyter_mcp_tools 选择更多命令。完整列表和配置方法请参阅 Additional Tools 文档。

📝 提示词概览

该服务实现了 MCP 提示词功能。 jupyter-cite 可以引用 Notebook 中的特定单元格,类似于在编码 IDE 或 命令行中使用 @。输入参数和返回内容请参阅 Prompts 文档。

🏁 开始使用

如需完整的设置说明(包括 Streamable HTTP 传输、作为 Jupyter Server 扩展运行以及高级配置),请参阅我们的文档。或者,也可以在下方通过 JupyterLab 和 STDIO 传输快速开始。

1. 设置环境
pip install jupyterlab jupyter-collaboration jupyter-mcp-tools ipykernel

提示

要确认环境配置正确:

  1. 在 JupyterLab 中打开一个笔记本
  2. 在任意单元格中输入一些内容(代码或 Markdown)
  3. 查看标签页指示符:笔记本名称旁应出现“×”,表示有未保存的更改
  4. 等待几秒钟,“×”应自动变为“●”,无需手动保存

自动保存行为表明实时协作功能正常运行,这是集成 MCP 服务的必要条件。


2. 启动 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

备注

如果你通过 JupyterHub 而非上述 JupyterLab 运行笔记本,请参阅我们的 JupyterHub 设置指南。


3. 配置首选的 MCP 客户端

接下来,配置 MCP 客户端以连接到服务。我们提供两种主要方式,请选择最适合你需求的一种:

  • 📦 使用 uvx(推荐用于快速开始): 使用 uv 的轻量快速方式,适合本地开发和初次使用者。
  • 🐳 使用 Docker(推荐用于生产环境): 容器化方案,可确保环境一致且相互隔离,非常适合生产环境或复杂配置。
📦 使用 uvx(快速开始)

首先,安装 uv:

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

有关 uv 安装的更多详情,请参阅相关页面。

然后,配置客户端:

{
  "mcpServers": {
    "jupyter": {
      "command": "uvx",
      "args": ["jupyter-mcp-server@latest"],
      "env": {
        "JUPYTER_URL": "http://localhost:8888",
        "JUPYTER_TOKEN": "MY_TOKEN",
        "ALLOW_IMG_OUTPUT": "true"
      }
    }
  }
}
🐳 使用 Docker(生产环境)

在 macOS 和 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"
      }
    }
  }
}

在 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"
      }
    }
  }
}

提示

  1. 端口配置:确保 Jupyter URL 中的 port 与 jupyter lab 命令使用的端口一致。为简化配置,可在 JUPYTER_URL 中设置此项。
  2. 服务分离:两个服务位于同一台服务器时使用 JUPYTER_URL;对于高级部署,可分别设置各变量。之所以提供不同的 URL 变量,是因为某些部署会将笔记本存储(DOCUMENT_URL)与内核执行(CODE_SANDBOX_URL)分开。
  3. 身份验证:在大多数情况下,文档服务和代码沙箱服务使用相同的身份验证令牌。为简化配置,可使用 JUPYTER_TOKEN;如果凭据不同,则分别设置 DOCUMENT_TOKEN 和 CODE_SANDBOX_TOKEN。
  4. 笔记本路径:DOCUMENT_ID 参数指定 MCP 客户端默认连接的笔记本路径。该路径应相对于启动 JupyterLab 的目录。如果省略 DOCUMENT_ID,MCP 客户端可以自动列出 Jupyter 服务上所有可用的笔记本,让你通过提示词交互式地选择一个笔记本。
  5. 图像输出:如果你的 LLM 不支持多模态理解,请将 ALLOW_IMG_OUTPUT 设为 false。

有关配置各类 MCP 客户端的详细说明,包括 Claude Desktop、VS Code、Cursor、Cline 和 Windsurf,请参阅 MCP 客户端配置。

🧩 沙盒变体

默认情况下,代码通过 code-sandboxes 的 jupyter-server 变体在 Jupyter Server 上执行(SANDBOX_VARIANT=jupyter-server)。将 SANDBOX_VARIANT 设置为其他值时,如果所选变体提供了普通内核客户端,则会通过沙盒的普通内核客户端使用另一个 code-sandboxes 引擎,这样相同的笔记本工具就能在更多后端上运行代码。

变体名称的拼写不必严格一致:google_colab、google-colab 和 GOOGLE-COLAB 都表示同一个变体。下方列出的是规范名称。

沙盒功能由可选扩展 jupyter_mcp_sandboxes 提供。要使用沙盒生命周期工具(launch_sandbox、list_sandboxes、use_sandbox、terminate_sandbox)或运行任何非 jupyter-server 沙盒变体,请使用 pip install jupyter_mcp_sandboxes 安装该扩展。

引擎SANDBOX_VARIANT额外安装项关键变量文档
Jupyter Server(默认)jupyter-server—JUPYTER_URL、JUPYTER_TOKEN设置
JupyterHubjupyter-server—CODE_SANDBOX_URL、CODE_SANDBOX_TOKEN设置
Datalayerdatalayerjupyter-mcp-server[datalayer]CODE_SANDBOX_URL、CODE_SANDBOX_TOKEN、SANDBOX_ENVIRONMENT设置
Kagglekagglejupyter-mcp-server[kaggle]Kaggle 凭据,或交互模式下的 CODE_SANDBOX_URL设置
Google Colabgoogle-colabjupyter-mcp-serverCODE_SANDBOX_URL、CODE_SANDBOX_ID、CODE_SANDBOX_PROXY_TOKEN设置
Montymontyjupyter-mcp-server[monty]—设置
Modalmodaljupyter-mcp-server[modal]Modal 凭据设置
Daytonadaytonajupyter-mcp-server[daytona]DAYTONA_API_KEY,或 DAYTONA_JWT_TOKEN + DAYTONA_ORGANIZATION_ID设置
E2Be2bjupyter-mcp-server[e2b]E2B_API_KEY设置
CoreWeavecoreweavejupyter-mcp-server[coreweave]CWSANDBOX_API_KEY设置
Cloudflarecloudflarejupyter-mcp-server[cloudflare]CLOUDFLARE_SANDBOX_API_URL、CLOUDFLARE_SANDBOX_API_KEY设置

每种引擎都有专属页面,介绍所需凭据、支持的加速器选项以及配置示例客户端——请从 jupyter-mcp-server.datalayer.tech/code-sandboxes 开始。

🧪 测试

运行测试套件:

pytest tests/

测试所需的环境变量:

  • 默认本地测试套件无需设置。

可选环境变量:

  • TEST_MCP_SERVER:用于切换独立 MCP 服务模式测试的 true/false 开关(默认值为 true)。
  • TEST_JUPYTER_SERVER:用于切换 Jupyter 扩展模式测试的 true/false 开关(默认值为 true)。
  • DATALAYER_API_KEY:仅 Datalayer 云端冒烟测试/集成测试需要。
  • DATALAYER_RUN_URL:供 Datalayer 引擎测试使用的可选自定义 Datalayer 代码沙盒 URL。
  • SANDBOX_ENVIRONMENT:可选的云环境覆盖值(例如 ai-agents-env)。

✅ 最佳实践

  • 与支持多模态输入的大模型(如 Gemini 2.5 Pro)交互,以充分利用高级多模态理解能力。
  • 使用支持返回图像数据并能解析图像数据的 MCP 客户端(如 Cursor、Gemini CLI 等),因为有些客户端可能不支持此功能。
  • 将复杂任务(如完整的数据科学工作流)拆分为多个子任务(如数据清理、特征工程、模型训练、模型评估等),并逐步执行。
  • 提供结构清晰的提示词和规则(👉 访问我们的 提示词模板 开始使用)
  • 尽可能提供更多上下文(如已安装的软件包、现有数据集的字段说明、当前工作目录、详细的任务要求等)。

🤝 参与贡献

欢迎各种形式的贡献!以下是一些示例:

  • 🐛 修复 Bug
  • 📝 改进现有功能
  • 🔧 开发新功能
  • 📚 改进文档和提示词模板

关于如何开始开发并提交贡献的详细说明,请参阅我们的 贡献指南。

贡献者

贡献者

📚 资源

想查找有关 Jupyter MCP Server 的博客文章、视频或其他资料?

👉 请访问文档中的 资源部分,了解更多!


如果这个项目对你有帮助,请给我们一个 ⭐️

由 Datalayer 倾心打造 ❤️

Datalayer Logo

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。