Jupyter MCP Server
🪐🔧 Jupyter MCP 服务器
一个为 AI 连接和管理 Jupyter Notebook 而开发的 MCP 服务器
由 Datalayer 开发

v1.0.0 中的重大变更: 您必须在 MCP 客户端设置中配置 MCP_TOKEN。
我们需要您的反馈!
我们正在积极开发对 JupyterHub 和 Google Colab 部署的支持。如果您正在使用或计划在这些平台上使用 Jupyter MCP 服务器,我们非常希望能听到您的声音!
🏢 JupyterHub 用户:分享您的部署设置和需求
🌐 Google Colab 用户:帮助我们了解您的用例和工作流程
加入我们的 社区页面 进行交流 - 您的反馈将帮助我们确定功能优先级,并确保这些集成能无缝满足您的需求。
📖 目录
Related MCP server: Code Summarizer MCP
🚀 主要功能
⚡ 实时控制: 即时查看 Notebook 的变化。
🔁 智能执行: 得益于单元格输出反馈,在单元格运行失败时自动调整。
🧠 上下文感知: 理解整个 Notebook 的上下文,以实现更相关的交互。
📊 多模态支持: 支持多种输出类型,包括图像、图表和文本。
📚 多 Notebook 支持: 在多个 Notebook 之间无缝切换。
🎨 JupyterLab 集成: 增强的 UI 集成,如自动打开 Notebook。
🤝 MCP 兼容: 可与任何 MCP 客户端配合使用,例如 Claude Desktop、Cursor、Windsurf 等。
🔍 可观测性: 内置钩子系统,集成 OpenTelemetry 以追踪工具调用和内核执行。
兼容任何 Jupyter 部署(本地、JupyterHub 等)以及 Datalayer 托管的 Notebook。
🔧 MCP 概述
🔧 工具概述
该服务器提供了一套丰富的工具来与 Jupyter Notebook 进行交互,分类如下。 有关每个工具、其参数和返回值的更多详细信息,请参阅 官方工具文档。
服务器管理工具
名称 | 描述 |
| 列出 Jupyter 服务器文件系统中的文件和目录。 |
| 列出 Jupyter 服务器上所有可用和正在运行的内核会话。 |
| 动态连接到 Jupyter 服务器,无需重启 MCP 服务器。在作为 Jupyter 扩展运行时不可用。适用于动态切换服务器或避免硬编码配置。 阅读更多 |
多 Notebook 管理工具
名称 | 描述 |
| 连接到 Notebook 文件、创建新文件或在 Notebook 之间切换。 |
| 列出 Jupyter 服务器上所有可用的 Notebook 及其状态 |
| 重启特定受管 Notebook 的内核。 |
| 断开与特定 Notebook 的连接并释放其资源。 |
| 以简要或详细的格式读取 Notebook 单元格的源代码内容。 |
单元格操作和执行工具
名称 | 描述 |
| 读取单个单元格的完整内容(元数据、源代码和输出)。 |
| 在指定位置插入新的代码或 Markdown 单元格。 |
| 删除指定索引处的单元格。 |
| 覆盖现有单元格的源代码。 |
| 执行带有超时的单元格,支持包括图像在内的多模态输出。 |
| 一步插入并执行新的代码单元格。 |
| 直接在内核中执行代码,支持魔法命令和 Shell 命令。 |
JupyterLab 集成
仅在启用 JupyterLab 模式时可用。默认情况下已启用。
在 JupyterLab 模式下运行时,Jupyter MCP 服务器与 jupyter-mcp-tools 集成,将额外的 JupyterLab 命令公开为 MCP 工具。默认情况下,启用以下工具:
名称 | 描述 |
| 按顺序执行当前 Notebook 中的所有单元格 |
| 获取当前选中单元格的信息 |
您现在可以使用 allowed_jupyter_mcp_tools 配置参数自定义 jupyter-mcp-tools 中的哪些工具可用。这使您能够启用额外的 Notebook 操作、控制台命令、文件管理工具等。
# 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"有关可用工具的完整列表和详细配置说明,请参阅 额外工具文档。
📝 Prompt 概述
该服务器还支持 MCP 的 Prompt 功能,为用户与 Jupyter Notebook 交互提供了一种简便方式。
名称 | 描述 |
| 引用指定 Notebook 中的特定单元格(类似于编码 IDE 或 CLI 中的 |
有关每个 Prompt、其输入参数和返回内容的更多详细信息,请参阅 官方 Prompt 文档。
🏁 入门指南
有关全面的设置说明(包括 Streamable HTTP 传输、作为 Jupyter 服务器扩展运行以及高级配置),请查看 我们的文档。或者,通过下方的 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要确认您的环境配置正确:
在 JupyterLab 中打开一个 Notebook
在任何单元格中输入一些内容(代码或 Markdown)
观察标签指示器:您应该会在 Notebook 名称旁边看到一个 "×",表示有未保存的更改
等待几秒钟——"×" 应该会自动变为 "●",无需手动保存
这种自动保存行为确认了实时协作功能正在正常工作,这对 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 运行 Notebook,请参阅我们的JupyterHub 设置指南。
3. 配置您首选的 MCP 客户端
接下来,配置您的 MCP 客户端以连接到服务器。我们提供两种主要方法——选择最适合您需求的一种:
📦 使用
uvx(推荐用于快速入门): 一种使用uv的轻量级且快速的方法。非常适合本地开发和初次使用的用户。🐳 使用
Docker(推荐用于生产环境): 一种容器化方法,可确保环境一致且隔离,非常适合生产环境或复杂设置。
首先,安装 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"
}
}
}
}在 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"
}
}
}
}端口配置:确保 Jupyter URL 中的
port与jupyter lab命令中使用的端口匹配。为了简化配置,请在JUPYTER_URL中设置此项。服务器分离:当两个服务位于同一服务器上时使用
JUPYTER_URL,或者为高级部署设置单独的变量。存在不同的 URL 变量是因为某些部署将 Notebook 存储 (DOCUMENT_URL) 与内核执行 (RUNTIME_URL) 分开。身份验证:在大多数情况下,文档和运行时服务使用相同的身份验证令牌。使用
JUPYTER_TOKEN进行简化配置,或分别为不同的凭据设置DOCUMENT_TOKEN和RUNTIME_TOKEN。Notebook 路径:
DOCUMENT_ID参数指定 MCP 客户端默认连接的 Notebook 路径。它应该是相对于启动 JupyterLab 的目录的路径。如果您省略DOCUMENT_ID,MCP 客户端可以自动列出 Jupyter 服务器上所有可用的 Notebook,允许您通过 Prompt 交互式地选择一个。图像输出:如果您的 LLM 不支持多模态理解,请将
ALLOW_IMG_OUTPUT设置为false。
有关配置各种 MCP 客户端(包括 Claude Desktop、VS Code、Cursor、Cline 和 Windsurf)的详细说明,请参阅 客户端文档。
✅ 最佳实践
与支持多模态输入的 LLM(如 Gemini 2.5 Pro)交互,以充分利用高级多模态理解能力。
使用支持返回图像数据并能解析它的 MCP 客户端(如 Cursor、Gemini CLI 等),因为某些客户端可能不支持此功能。
将复杂任务(如整个数据科学工作流程)分解为多个子任务(如数据清洗、特征工程、模型训练、模型评估等),并逐步执行。
提供结构清晰的 Prompt 和规则(👉 访问我们的 Prompt 模板 以开始)。
提供尽可能多的上下文(如已安装的包、现有数据集的字段说明、当前工作目录、详细的任务要求等)。
🤝 贡献
我们欢迎各种形式的贡献!以下是一些示例:
🐛 Bug 修复
📝 对现有功能的改进
🔧 新功能开发
📚 文档改进和 Prompt 模板
有关如何开始开发并提交贡献的详细说明,请参阅我们的 贡献指南。
我们的贡献者
📚 资源
正在寻找关于 Jupyter MCP 服务器的博客文章、视频或其他材料?
👉 访问我们文档中的 资源部分 以获取更多信息!
如果本项目对您有帮助,请给我们一个 ⭐️
由 Datalayer 用 ❤️ 制作
托管部署
托管部署可在 Fronteir AI 上使用。
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/datalayer/jupyter-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server