Jupyter MCP服务器

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

作者 By datalayer
本地部署 JupyterNotebook管理 实时协作
GitHub

🪐🔧 Jupyter MCP服务器

主控程序 为人工智能连接和管理而开发的服务器 朱庇特 实时笔记本

由…开发 数据层

[!重要] v1.0.0中的重大更改: 您必须配置 MCP_TOKEN 在您的MCP客户端设置中。

有关设置的详细信息,请参阅:https://jupyter-mcp-server.datalayer.tech/providers/jupyter-streamable-http-standalone/#3-配置您的mcp客户端

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

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

  • 🏢 JupyterHub用户:分享您的部署设置和要求

  • 🌐 谷歌Colab用户:帮助我们了解您的用例和工作流程

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

📖 目录

  • 主要特点
  • MCP概述
  • 入门指南
  • 最佳实践
  • 贡献
  • 资源

🚀 主要特点

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

与任何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 配置参数。这允许您启用其他笔记本操作、控制台命令、文件管理工具等。

BASH``` 1 2# 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”


有关可用工具的完整列表和详细的配置说明,请参阅 [附加工具文档](https://jupyter-mcp-server.datalayer.tech/reference/tools-additional).



### 📝 提示概述


服务器还支持 [提示功能](https://modelcontextprotocol.io/specification/2025-06-18/server/prompts) MCP,为用户提供了一种与Jupyter笔记本交互的简单方法。


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


有关每个提示、其输入参数和返回内容的更多详细信息,请参阅 [官方即时文件](https://jupyter-mcp-server.datalayer.tech/reference/prompts).


## 🏁 入门指南


有关全面的设置说明,包括 `Streamable HTTP` 传输,作为Jupyter Server扩展和高级配置运行——查看 [我们的文档](https://jupyter-mcp-server.datalayer.tech/)。或者,快速开始 `JupyterLab` 和 `STDIO` 运输在下面。


### 1.设置您的环境


BASH```
1
2
3pip 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

BASH``` 1 2# 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安装指南](https://jupyter-mcp-server.datalayer.tech//providers/jupyterhub-streamable-http/).


### 3.配置您的首选MCP客户端


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


- **📦 使用 `uvx` (建议用于快速入门):** 一种轻量级且快速的方法,使用 `uv`非常适合本地开发和首次用户。
- **🐳 使用 `Docker` (推荐用于生产):** 一种容器化的方法,可确保一致和隔离的环境,非常适合生产或复杂的设置。



📦 Using uvx (Quick Start)
首先,安装 `uv`:


BASH```
1
2
3pip install uv
uv --version
# should be 0.6.14 or higher

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

然后,配置您的客户端:

JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13{ “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上:**


JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19{
  "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上:

JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20{ “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客户端的详细说明,包括 [克劳德桌面](https://jupyter-mcp-server.datalayer.tech/clients/claude_desktop), [VS Code](https://jupyter-mcp-server.datalayer.tech/clients/vscode), [光标](https://jupyter-mcp-server.datalayer.tech/clients/cursor), [克莱恩](https://jupyter-mcp-server.datalayer.tech/clients/cline),以及 [帆板运动](https://jupyter-mcp-server.datalayer.tech/clients/windsurf) --看看 [客户文件](https://jupyter-mcp-server.datalayer.tech/clients).


## ✅ 最佳实践


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


## 🤝 贡献


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


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


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


### 我们的贡献者


[![](https://contrib.rocks/image?repo=datalayer/jupyter-mcp-server)](https://github.com/datalayer/jupyter-mcp-server/graphs/contributors)


## 📚 资源


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


👉 访问 [**资源科**](https://jupyter-mcp-server.datalayer.tech/resources) 在我们的文档中了解更多!


[![](https://api.star-history.com/svg?repos=datalayer/jupyter-mcp-server&type=Date)](https://star-history.com/#datalayer/jupyter-mcp-server&type=Date)



---



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


制作❤️ 通过 [数据层](https://github.com/datalayer)



## 托管部署


托管部署可在 [Frontier AI](https://fronteir.ai/mcp/datalayer-jupyter-mcp-server).