[!注意] 我们需要您的反馈!
我们正在积极开发对JupyterHub和Google Colab部署的支持。如果您正在使用或计划在这些平台上使用Jupyter MCP服务器,我们非常希望听到您的声音!
- 🏢 JupyterHub用户:分享您的部署设置和需求
- 🌐 Google Colab用户:帮助我们了解您的用例和工作流程
加入我们的社区页面讨论 - 您的反馈将帮助我们优先考虑功能,并确保这些集成能满足您的需求。
兼容任何Jupyter部署(本地、JupyterHub等)以及Datalayer托管的Notebook。
服务器提供了一套丰富的工具用于与Jupyter笔记本交互,分类如下。有关每个工具的详细信息、参数和返回值,请参阅官方工具文档。
| 名称 | 描述 |
|---|---|
list_files |
列出Jupyter服务器文件系统中的文件和目录。 |
list_kernels |
列出Jupyter服务器上所有可用和运行中的内核会话。 |
| 名称 | 描述 |
|---|---|
use_notebook |
连接到笔记本文件,创建新文件或切换笔记本。 |
list_notebooks |
列出Jupyter服务器上所有可用的笔记本及其状态 |
restart_notebook |
重启指定托管笔记本的内核。 |
unuse_notebook |
断开与指定笔记本的连接并释放其资源。 |
read_notebook |
以简洁或详细格式读取笔记本单元格的源代码内容。 |
| 名称 | 描述 |
|---|---|
read_cell |
读取单个单元格的完整内容(元数据、源代码和输出)。 |
insert_cell |
在指定位置插入新的代码或Markdown单元格。 |
delete_cell |
删除指定索引的单元格。 |
overwrite_cell_source |
覆盖现有单元格的源代码。 |
execute_cell |
执行带超时的单元格,支持包括图像在内的多模态输出。 |
insert_execute_code_cell |
一步插入并执行新的代码单元格。 |
execute_code |
直接在内核中执行代码,支持魔术命令和shell命令。 |
仅在启用JupyterLab模式时可用。默认启用。
在JupyterLab模式下运行时,Jupyter MCP服务器与jupyter-mcp-tools集成,将额外的JupyterLab命令作为MCP工具公开。默认启用以下工具:
| 名称 | 描述 |
|---|---|
notebook_run-all-cells |
顺序执行当前笔记本中的所有单元格 |
notebook_get-selected-cell |
获取当前选中单元格的信息 |
您现在可以使用allowed_jupyter_mcp_tools配置参数来自定义jupyter-mcp-tools中哪些工具可用。这允许您启用额外的笔记本操作、控制台命令、文件管理工具等。
# 示例:通过命令行启用额外工具
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中的@) |
有关每个提示的更多详情、输入参数和返回内容,请参阅官方提示文档。
有关全面设置说明——包括可流式HTTP传输、作为Jupyter服务器扩展运行和高级配置——请查看我们的文档。或者,使用以下JupyterLab和STDIO传输快速开始。
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中打开一个笔记本
- 在任何单元格(代码或Markdown)中输入一些内容
- 观察标签指示器:您应该会在笔记本名称旁边看到一个"×",表示未保存的更改
- 等待几秒钟 - "×"应自动变为"●",无需手动保存
这种自动保存行为确认了实时协作功能正常工作,这对MCP服务器集成至关重要。
# 在8888端口启动JupyterLab,允许任何IP访问并设置令牌
jupyter lab --port 8888 --IdentityProvider.token MY_TOKEN --ip 0.0.0.0

[!注意] 如果您通过JupyterHub而非上述JupyterLab运行笔记本,请参考我们的JupyterHub设置指南。
接下来,配置您的MCP客户端以连接到服务器。我们提供两种主要方法——选择最适合您需求的一种:
uvx(快速开始推荐):使用uv的轻量级快速方法。适合本地开发和首次用户。Docker(生产推荐):确保一致和隔离环境的容器化方法,非常适合生产或复杂设置。首先安装uv:
pip install uv
uv --version
# 版本需为0.6.14或更高

更多安装细节请参阅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"
}
}
}
}

[!TIP]
- 端口配置:确保Jupyter URL中的
port与jupyter lab命令使用的端口一致。为简化配置,可在JUPYTER_URL中设置。- 服务分离:当两个服务位于同一服务器时使用
JUPYTER_URL,高级部署可设置独立变量。不同URL变量的存在是因为某些部署会将笔记本存储(DOCUMENT_URL)与内核执行(RUNTIME_URL)分离。- 认证:多数情况下文档和运行时服务使用相同认证令牌。简化配置使用
JUPYTER_TOKEN,不同凭证可分别设置DOCUMENT_TOKEN和RUNTIME_TOKEN。- 笔记本路径:
DOCUMENT_ID参数指定MCP客户端默认连接的笔记本路径,应相对于JupyterLab启动目录。若省略DOCUMENT_ID,MCP客户端会自动列出Jupyter服务器上所有可用笔记本,您可通过提示交互选择。- 图像输出:若您的LLM不支持多模态理解,请将
ALLOW_IMG_OUTPUT设为false。
关于配置各种MCP客户端的详细说明——包括Claude桌面版、VS Code、Cursor、Cline和Windsurf——请参阅客户端文档。
我们欢迎各类贡献!包括但不限于:
关于如何开始开发和提交贡献的详细说明,请参阅我们的贡献指南。
寻找关于Jupyter MCP Server的博客文章、视频或其他资料?
👉 访问文档中的资源专区获取更多内容!
如果本项目对您有帮助,请给我们一颗⭐️
由Datalayer用❤️打造