Jupyter MCP服务器

一个用于AI连接和管理Jupyter Notebooks的实时MCP服务器,支持多模态输出和多笔记本管理。

  • by ATEMMETA
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ATEMMETA/Jupyter-MCP-Server-New

使用说明

🪐🔧 Jupyter MCP服务器

一 主控程序 为人工智能开发的服务器,用于实时连接和管理Jupyter笔记本

由...开发 数据层

[!注意] 我们需要您的反馈!

我们正在积极发展对 JupyterHub 和 谷歌Colab 部署。如果您正在使用或计划在这些平台上使用Jupyter MCP Server,我们很乐意收到您的来信!

  • 🏢 JupyterHub用户:分享您的部署设置和要求
  • 🌐 谷歌Colab用户:帮助我们了解您的用例和工作流程

加入我们的对话 社区页面 -您的反馈将帮助我们确定功能的优先级,并确保这些集成无缝地满足您的需求。

📖 目录

🚀 主要特点

  • ⚡ 实时控制: 即时查看发生的笔记本更改。
  • 🔁 智能执行: 由于电池输出反馈,电池运行失败时会自动调整。
  • 🧠 上下文感知: 了解整个笔记本上下文,以进行更相关的交互。
  • 📊 多模式支持: 支持不同的输出类型,包括图像、绘图和文本。
  • 📚 多笔记本电脑支持: 在多个笔记本电脑之间无缝切换。
  • 🎨 JupyterLab集成: 增强的UI集成,如自动打开笔记本。
  • 🤝 MCP兼容: 适用于任何MCP客户端,如Claude Desktop、Cursor、Windsurf等。

与任何Jupyter部署(本地、JupyterHub等)兼容,并与 数据层 托管笔记本。

🔧 MCP概述

🔧 工具概述

服务器提供了一套丰富的工具用于与Jupyter笔记本交互,分类如下。 有关每个工具、其参数和返回值的更多详细信息,请参阅 官方工具文档.

服务器管理工具

名称 描述
list_files 列出Jupyter服务器文件系统中的文件和目录。
list_kernels 列出Jupyter服务器上所有可用和正在运行的内核会话。
connect_to_jupyter 动态连接到Jupyter服务器,而无需重新启动MCP服务器。 作为Jupyter扩展运行时不可用。可用于动态切换服务器或避免硬编码配置。 阅读更多

多笔记本管理工具

名称 描述
use_notebook 连接到笔记本文件、创建新文件或在笔记本之间切换。
list_notebooks 列出Jupyter服务器上可用的所有笔记本及其状态
restart_notebook 重新启动特定托管笔记本的内核。
unuse_notebook 断开与特定笔记本的连接并释放其资源。
read_notebook 使用简短或详细的格式选项阅读笔记本单元格源内容。

单元操作和执行工具

名称 描述
read_cell 读取单个单元格的完整内容(元数据、源和输出)。
insert_cell 在指定位置插入新代码或标记单元格。
delete_cell 删除指定索引处的单元格。
overwrite_cell_source 覆盖现有单元格的源代码。
execute_cell 执行带有超时的单元格,支持包括图像在内的多模式输出。
insert_execute_code_cell 插入一个新的代码单元格,并在一个步骤中执行它。
execute_code 直接在内核中执行代码,支持magic命令和shell命令。

JupyterLab集成

仅在启用JupyterLab模式时可用。默认情况下,它处于启用状态。

在JupyterLab模式下运行时,Jupyter MCP Server与 jupyter mcp工具 将其他JupyterLab命令作为MCP工具公开。默认情况下,启用以下工具:

名称 描述
notebook_run-all-cells 按顺序执行当前笔记本中的所有单元格
notebook_get-selected-cell 获取当前所选单元格的信息
📚 Learn how to customize additional tools

现在,您可以自定义来自的工具 jupyter-mcp-tools 可使用 allowed_jupyter_mcp_tools 配置参数。这允许您启用其他笔记本操作、控制台命令、文件管理工具等。

# Example: Enable additional tools via command-line
jupyter lab --port 4040 --IdentityProvider.token MY_TOKEN --JupyterMCPServerExtensionApp.allowed_jupyter_mcp_tools="notebook_run-all-cells,notebook_get-selected-cell,notebook_append-execute,console_create"

有关可用工具的完整列表和详细的配置说明,请参阅 附加工具文档.

📝 提示概述

服务器还支持 提示功能 MCP,为用户提供了一种与Jupyter笔记本交互的简单方法。

名称 描述
jupyter-cite 从指定笔记本中引用特定单元格(如 @ 在编码IDE或CLI中)

有关每个提示、其输入参数和返回内容的更多详细信息,请参阅 官方即时文件.

🏁 入门指南

有关全面的设置说明,包括 Streamable HTTP 传输,作为Jupyter Server扩展和高级配置运行——查看 我们的文档。或者,快速开始 JupyterLab 和 STDIO 运输在下面。

1.设置您的环境

pip install jupyterlab==4.4.1 jupyter-collaboration==4.0.2 jupyter-mcp-tools>=0.1.4 ipykernel
pip uninstall -y pycrdt datalayer_pycrdt
pip install datalayer_pycrdt==0.12.17

[!提示] 要确认您的环境配置正确:

  1. 在JupyterLab中打开笔记本
  2. 在任何单元格中键入一些内容(代码或标记)
  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 (推荐用于生产): 一种容器化的方法,可确保一致和隔离的环境,非常适合生产或复杂的设置。
📦 Using uvx (Quick Start)

首先,安装 uv:

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

查看更多详细信息 紫外线装置.

然后,配置您的客户端:

{
  "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)

在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. 端口配置:确保 port Jupyter URL中的URL与 jupyter lab 命令。为了简化配置,请在 JUPYTER_URL.
  2. 服务器分离:使用 JUPYTER_URL 当两个服务都在同一台服务器上时,或者为高级部署设置单独的变量。存在不同的URL变量,因为某些部署将笔记本存储分开(DOCUMENT_URL)从内核执行开始(RUNTIME_URL).
  3. 认证:在大多数情况下,文档和运行时服务使用相同的身份验证令牌。使用 JUPYTER_TOKEN 用于简化配置或设置 DOCUMENT_TOKEN 和 RUNTIME_TOKEN 分别用于不同的凭据。
  4. 笔记本路径:The DOCUMENT_ID 参数指定MCP客户端默认连接的笔记本的路径。它应该与启动JupyterLab的目录相关。如果你忽略了 DOCUMENT_ID,MCP客户端可以自动列出Jupyter服务器上所有可用的笔记本,允许您通过提示交互式地选择一个。
  5. 图像输出:设置 ALLOW_IMG_OUTPUT 到 false 如果你的法学硕士不支持多模型理解。

有关配置各种MCP客户端的详细说明,包括 克劳德桌面, VS Code, 光标, 克莱恩,以及 帆板运动 --看看 客户文件.

✅ 最佳实践

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

🤝 贡献

我们欢迎各种各样的贡献!以下是一些示例:

  • 🐛 错误修复
  • 📝 对现有功能的改进
  • 🔧 新功能开发
  • 📚 文档改进和提示模板

有关如何开始开发和提交您的贡献的详细说明,请参阅我们的 贡献指南.

我们的贡献者

📚 资源

您在寻找关于Jupyter MCP Server的博客文章、视频或其他资料吗?

👉 访问 资源科 在我们的文档中了解更多!


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

制作❤️ 通过 数据层