← 返回目录
J

Jupyter MCP Server

社区
面向 AI 的 Jupyter Notebook 实时连接与管理 MCP 服务器
GitHub 源仓库 ↗
★ 1.3k Stars 分类 · 开发工具 非常热门
65FMRS · C

Jupyter MCP Server 是一个成熟且文档完善的开源 MCP 服务器,由 Datalayer 维护,专注于让 AI 代理实时操作 Jupyter Notebook。其突出优势是多模态输出、多 Notebook 支持、按单元格输出反馈的执行调整,以及可扩展到十余种云沙箱后端的执行能力。主要需要注意的风险是:代理能够执行任意代码,因此令牌与网络暴露必须谨慎管理;同时 code-sandboxes 与 mcp SDK 的版本配对要求较严格,升级前应核对版本表。

可靠性
10/20
安全与权限
12/20
维护活跃度
13/20
文档质量
15/20
安装易用性
15/20
查看 FMRS 评分方法 →

Jupyter MCP Server 是由 Datalayer 开发并维护的 MCP 服务器(BSD 3-Clause 开源许可),用于让 AI 客户端实时连接并操作 Jupyter Notebook。它支持实时查看 Notebook 变化、根据单元格输出反馈智能调整执行、理解整个 Notebook 上下文、处理图像与图表等多模态输出,并可在多个 Notebook 之间切换。服务器兼容任何 MCP 客户端(如 Claude Desktop、Cursor、Windsurf 等),可与本地 Jupyter、JupyterHub 以及 Datalayer 托管 Notebook 配合使用。通过可选的 jupyter_mcp_sandboxes 扩展,代码执行还能切换到 Datalayer、Kaggle、Google Colab、Modal、Daytona、E2B、CoreWeave、Cloudflare 等多种沙箱后端。项目还提供 JupyterLab 集成(默认启用)、jupyter-cite 提示词、OAuth 2.1 登录以及基于 OpenTelemetry 的可观测性。

工具能力

launch_sandbox
启动一个代码沙箱(需安装可选的 jupyter_mcp_sandboxes 扩展)。
list_sandboxes
列出当前可用的代码沙箱(需安装可选的 jupyter_mcp_sandboxes 扩展)。
use_sandbox
选择并切换到指定的代码沙箱(需安装可选的 jupyter_mcp_sandboxes 扩展)。
terminate_sandbox
终止指定的代码沙箱(需安装可选的 jupyter_mcp_sandboxes 扩展)。
notebook_run-all-cells
运行 Notebook 中的全部单元格(JupyterLab 集成默认暴露的工具,来自 jupyter-mcp-tools)。
notebook_get-selected-cell
获取当前选中的单元格(JupyterLab 集成默认暴露的工具,来自 jupyter-mcp-tools)。

安装接入

  1. 准备环境:pip install jupyterlab jupyter-collaboration jupyter-mcp-tools ipykernel。
  2. 启动 JupyterLab,例如:jupyter lab --port 8888 --IdentityProvider.token MY_TOKEN --ip 0.0.0.0。
  3. 确认协作功能生效:在 JupyterLab 中打开 Notebook 并编辑任意单元格,观察标签页指示符由 “×” 自动变为 “●”。
  4. 配置 MCP 客户端。推荐快速方式使用 uvx(需 uv 0.6.14 或更高):在客户端配置中写入 command: uvx、args: ["jupyter-mcp-server@latest"],并设置环境变量 JUPYTER_URL、JUPYTER_TOKEN、ALLOW_IMG_OUTPUT。
  5. 生产环境推荐使用 Docker 镜像 datalayer/jupyter-mcp-server:latest,在 macOS/Windows 上使用 host.docker.internal,在 Linux 上使用 --network=host。
  6. 如需沙箱生命周期工具或非 jupyter-server 沙箱变体,安装扩展:pip install jupyter_mcp_sandboxes。
claude_desktop_config.json
{
  "mcpServers": {
    "jupyter": {
      "command": "uvx",
      "args": ["jupyter-mcp-server@latest"],
      "env": {
        "JUPYTER_URL": "http://localhost:8888",
        "JUPYTER_TOKEN": "MY_TOKEN",
        "ALLOW_IMG_OUTPUT": "true"
      }
    }
  }
}

选型与风险

适合谁

  • 已经运行本地 JupyterLab 或 JupyterHub 并希望接入 AI 代理的用户
  • 需要多模态输出(图像、图表、文本)的数据科学与机器学习工作流
  • 希望把代码执行从本地扩展到 Datalayer、Kaggle、Google Colab 等云沙箱的团队
  • 希望保持 Notebook 会话在代理断开后继续运行的用户

不适合谁

  • 不运行任何 Jupyter Server、也不需要 Jupyter Notebook 的用户
  • 使用不支持多模态图像输出的 LLM 或客户端且不希望关闭 ALLOW_IMG_OUTPUT 的用户
  • 希望在无网络或无凭据环境下直接使用云端沙箱变体的用户

所需权限

  • 访问 Jupyter Server 的 URL(JUPYTER_URL / DOCUMENT_URL / CODE_SANDBOX_URL)
  • Jupyter 访问令牌(JUPYTER_TOKEN,或分别使用 DOCUMENT_TOKEN 与 CODE_SANDBOX_TOKEN)
  • 读写 Notebook 文档与执行代码的权限
  • 使用云端沙箱时需相应厂商的凭据(如 DAYTONA_API_KEY、E2B_API_KEY、CWSANDBOX_API_KEY、CLOUDFLARE_SANDBOX_API_URL / CLOUDFLARE_SANDBOX_API_KEY、Kaggle 凭据、Modal 凭据等)
  • 使用 Datalayer 托管服务时可选 OAuth 2.1 授权范围:notebooks:read、notebooks:write、code:execute、data:read

风险与副作用

  • AI 代理可在 Notebook 中执行任意代码,可能导致数据泄露、数据损坏或资源滥用
  • 令牌泄露会让持有者获得与令牌同等的 Jupyter 访问权限
  • JupyterLab 默认以 --ip 0.0.0.0 启动时会扩大网络暴露面
  • 云端沙箱会产生厂商侧的费用,且执行可能超出本地资源限制
  • jupyter-mcp-server 与 code-sandboxes 版本不匹配时,首次执行会报 Unknown sandbox variant: jupyter

常见排障

  1. 确认 JupyterLab 端口的 JUPYTER_URL 与启动命令中的端口一致
  2. 检查 JUPYTER_TOKEN 是否正确,必要时分别设置 DOCUMENT_TOKEN 与 CODE_SANDBOX_TOKEN
  3. 确认 jupyter-collaboration 已安装且 Notebook 的未保存指示符会自动变为 “●”
  4. 若 LLM 不支持多模态,将 ALLOW_IMG_OUTPUT 设为 false
  5. 使用 Docker 时,macOS/Windows 用 host.docker.internal,Linux 用 --network=host
  6. 运行 pytest tests/ 验证服务,必要时通过 TEST_MCP_SERVER、TEST_JUPYTER_SERVER 控制测试范围
  7. 版本不匹配时按表格配对:jupyter-mcp-server >= 1.5.0 配 code-sandboxes >= 1.1.1,jupyter-mcp-server < 1.5.0 配 code-sandboxes <= 1.0.9
  8. jupyter-mcp-server >= 2.0.0 需要 mcp >= 2,旧版本需要 mcp < 2;环境中有其他包仍锁定 mcp<2 时需留在 jupyter-mcp-server<2

使用场景

让 AI 助手实时读取并修改正在运行的 Jupyter Notebook
让 AI 逐步执行数据分析工作流(数据清洗、特征工程、模型训练、模型评估)
在多个 Notebook 之间切换并管理其内核
生成并查看包含图像和图表的可视化输出
通过沙箱变体把代码执行扩展到云端 GPU 环境

支持客户端

Claude Desktop完整支持
Cursor完整支持
Windsurf完整支持
VS Code完整支持
Cline完整支持
Claude Code完整支持