

🪐✨ Jupyter MCP工具
](https://pypi.org/project/jupyter-mcp-tools)
](https://github.com/datalayer/jupyter-mcp-tools/actions/workflows/build.yml)
此扩展由一个名为的Python包组成 jupyter_mcp_tools 对于服务器扩展和名为的NPM包 @datalayer/jupyter-mcp-tools 用于前端扩展。
它允许将JupyterLab命令用作MCP工具。

此扩展名由以下人员使用 jupyter mcp服务器 启用JupyterLab命令,例如通过MCP工具打开笔记本电脑。
执行模式
该扩展支持JupyterLab命令的两种执行模式:
本地模式
- 直接执行:命令直接在JupyterLab前端使用内置的命令注册表执行
- 无需网络:无需WebSocket通信即可立即执行
- 用例:在JupyterLab内部测试命令和直接UI交互
- 实施:通话
app.commands.execute()直接在浏览器中
远程模式
- WebSocket通信:命令通过WebSocket发送到后端服务器扩展
- 外部访问:使外部MCP客户端能够远程执行JupyterLab命令
- 用例:与AI代理和MCP客户端集成,如 jupyter mcp服务器
- 实施:消息通过WebSocket协议传输到后端处理程序
远程模式使此扩展对MCP集成很有价值,它允许AI代理通过标准化协议从JupyterLab环境外部触发Jupyter实验室命令(如打开笔记本电脑、执行单元格等)。
可用工具
这 jupyter-mcp-tools 扩展动态注册 所有可用的JupyterLab命令 作为MCP工具。可用工具的确切列表取决于安装的JupyterLab扩展和当前上下文,但以下是一些常用的工具:
备注:此扩展会自动发现所有JupyterLab命令并将其作为MCP工具提供。命令ID转换自namespace:command格式化为namespace_command为了MCP兼容性。下面的列表代表了常用的命令,但并不详尽。
核心笔记本命令
| 工具ID | 描述 | 参数 |
|---|---|---|
notebook_run-all-cells | 按顺序执行当前笔记本中的所有单元格 | 无 |
notebook_get-selected-cell | 获取当前选定单元格的信息 | 无 |
notebook_append-execute | 在笔记本末尾添加一个新单元格,并执行源代码 | source (字符串), type (代码/标记/原始) |
notebook_insert-cell-below | 在当前单元格下方插入一个新单元格 | activate (布尔值) |
notebook_insert-cell-above | 在当前单元格上方插入一个新单元格 | activate (布尔值) |
notebook_delete-cell | 删除当前选定的单元格 | 无 |
notebook_cut-cell | 剪切当前选定的单元格 | 无 |
notebook_copy-cell | 复制当前选定的单元格 | 无 |
notebook_paste-cell-below | 将单元格粘贴到当前单元格下方 | 无 |
notebook_paste-cell-above | 将单元格粘贴到当前单元格上方 | 无 |
notebook_select-next | 选择下一个单元格 | 无 |
notebook_select-previous | 选择上一个单元格 | 无 |
notebook_extend-selection-below | 将选择范围扩展到下面的单元格 | 无 |
notebook_extend-selection-above | 将选择范围扩展到上面的单元格 | 无 |
notebook_move-cell-up | 向上移动当前单元格 | 无 |
notebook_move-cell-down | 向下移动当前单元格 | 无 |
notebook_split-cell | 在光标位置拆分当前单元格 | 无 |
notebook_merge-cell-above | 将当前单元格与上面的单元格合并 | 无 |
notebook_merge-cell-below | 将当前单元格与下面的单元格合并 | 无 |
notebook_run-cell | 执行当前选定的单元格 | 无 |
notebook_run-cell-and-select-next | 执行单元格并移动到下一个 | 无 |
notebook_run-cell-and-insert-below | 执行单元格并在下面插入新单元格 | 无 |
控制台命令
| 工具ID | 描述 | 参数 |
|---|---|---|
console_create | 创建新控制台 | activate (布尔值), insertMode (字符串), path (字符串) |
console_clear | 清除控制台输出 | 无 |
console_restart-kernel | 重新启动控制台内核 | 无 |
console_interrupt-kernel | 中断控制台内核 | 无 |
console_inject | 将代码注入控制台 | code (字符串), activate (布尔值) |
文件/文档管理
| 工具ID | 描述 | 参数 |
|---|---|---|
docmanager_open | 按路径打开文档 | path (字符串), factory (字符串), kernel (对象) |
docmanager_new-untitled | 创建新的无标题文档 | type (字符串), path (字符串) |
docmanager_save | 保存当前文档 | 无 |
docmanager_save-as | 用新名称保存文档 | 无 |
docmanager_rename | 重命名当前文档 | newName (字符串) |
docmanager_delete | 删除文档 | path (字符串) |
docmanager_duplicate | 复制文档 | path (字符串) |
文件浏览器命令
| 工具ID | 描述 | 参数 |
|---|---|---|
filebrowser_go-to-path | 导航到特定路径 | path (字符串) |
filebrowser_refresh | 刷新文件浏览器 | 无 |
filebrowser_toggle-hidden-files | 切换显示隐藏文件 | 无 |
filebrowser_create-new-directory | 创建新目录 | path (字符串) |
filebrowser_upload | 上传文件 | path (字符串) |
filebrowser_download | 下载文件 | path (字符串) |
内核管理
| 工具ID | 描述 | 参数 |
|---|---|---|
kernel_restart | 重新启动当前内核 | 无 |
kernel_interrupt | 中断当前内核 | 无 |
kernel_shutdown | 关闭当前内核 | 无 |
kernel_reconnect | 重新连接到内核 | 无 |
kernel_change | 更改为其他内核 | kernel (对象) |
UI/布局命令
| 工具ID | 描述 | 参数 |
|---|---|---|
application_toggle-left-area | 切换左侧边栏 | 无 |
application_toggle-right-area | 切换右侧边栏 | 无 |
application_toggle-presentation-mode | 切换演示模式 | 无 |
application_set-theme | 更改UI主题 | theme (字符串) |
mainmenu_open-edit | 打开“编辑”菜单 | 无 |
mainmenu_open-file | 打开“文件”菜单 | 无 |
mainmenu_open-help | 打开“帮助”菜单 | 无 |
细胞类型转换
| 工具ID | 描述 | 参数 |
|---|---|---|
notebook_change-cell-to-code | 将单元格转换为代码单元格 | 无 |
notebook_change-cell-to-markdown | 将单元格转换为标记单元格 | 无 |
notebook_change-cell-to-raw | 将单元格转换为原始单元格 | 无 |
搜索和替换
| 工具ID | 描述 | 参数 |
|---|---|---|
documentsearch_start | 开始文档搜索 | query (字符串), caseSensitive (布尔值), wholeWord (布尔值), regex (布尔值) |
documentsearch_highlightNext | 突出显示下一个搜索结果 | 无 |
documentsearch_highlightPrevious | 突出显示以前的搜索结果 | 无 |
终端命令
| 工具ID | 描述 | 参数 |
|---|---|---|
terminal_create-new | 创建新终端 | cwd (字符串) |
terminal_refresh | 刷新终端 | 无 |
要查看特定JupyterLab安装中的所有可用工具,您可以打开左侧边栏中的MCP工具面板浏览可用工具。
附加命令
此扩展提供专门为MCP集成设计的自定义JupyterLab命令:
notebook:append-execute
在当前笔记本的末尾添加一个新单元格,其中包含给定的源代码,并可选择执行它。
参数:
source(string,必填):要插入单元格的源代码type(字符串,可选):单元格类型-'code','markdown',或'raw'(默认值:'code')
退货:
{
success: true,
cellType: 'code',
cellIndex: 5 // 0-based index of the new cell
}示例用法:
app.commands.execute('notebook:append-execute', {
source: 'print("Hello from MCP!")',
type: 'code'
});notebook:get-selected-cell
获取笔记本中当前选定/活动单元格的信息,而不执行它。
参数: 无
退货:
{
success: true,
cellType: 'code', // 'code', 'markdown', or 'raw'
cellIndex: 3, // 0-based index
source: 'print("hello")', // cell content
metadata: {...}, // cell metadata
executionCount: 5 // execution count (code cells only, null otherwise)
}示例用法:
const cellInfo = await app.commands.execute('notebook:get-selected-cell');
console.log(`Cell ${cellInfo.cellIndex}: ${cellInfo.source}`);注: 该命令仅在笔记本打开时启用,如果未选择单元格,则返回错误对象:
{
success: false,
error: 'No active cell'
}可视化单元格索引
需求
- JupyterLab>=4.0.0
安装
要安装扩展,请执行:
pip install jupyter_mcp_tools使用
make start卸载
要删除扩展名,请执行:
pip uninstall jupyter_mcp_tools故障排除
如果您看到前端扩展,但它不起作用,请检查 服务器扩展已启用:
jupyter server extension list如果服务器扩展已安装并启用,但您没有看到 前端扩展,检查前端扩展是否已安装:
jupyter labextension list贡献
开发安装
注意:您需要NodeJS来构建扩展包。
这 jlpm 命令是JupyterLab的固定版本 纱线 它是随JupyterLab一起安装的。您可以使用 yarn 或 npm 代替 jlpm 在......下面
# Clone the repo to your local environment
# Change directory to the jupyter_mcp_tools directory
# Install package in development mode
pip install -e ".[test]"
# Link your development version of the extension with JupyterLab
jupyter labextension develop . --overwrite
# Server extension must be manually installed in develop mode
jupyter server extension enable jupyter_mcp_tools
# Rebuild extension Typescript source after making changes
jlpm build您可以在不同的终端上同时查看源目录和运行JupyterLab,以查看扩展源代码的更改并自动重建扩展。
# Watch the source directory in one terminal, automatically rebuilding when needed
jlpm watch
# Run JupyterLab in another terminal
jupyter lab运行watch命令后,每个保存的更改都将立即在本地构建,并在您正在运行的JupyterLab中可用。刷新JupyterLabs以在浏览器中加载更改(您可能需要等待几秒钟才能重建扩展)。
默认情况下 jlpm build 命令为该扩展生成源映射,以便使用浏览器开发工具更容易进行调试。要为JupyterLab核心扩展生成源映射,您可以运行以下命令:
jupyter lab build --minimize=False开发卸载
# Server extension must be manually disabled in develop mode
jupyter server extension disable jupyter_mcp_tools
pip uninstall jupyter_mcp_tools在开发模式下,您还需要删除由创建的符号链接 jupyter labextension develop 命令。要找到它的位置,你可以运行 jupyter labextension list 找出在哪里 labextensions 文件夹已找到。然后,您可以删除名为的符号链接 @datalayer/jupyter-mcp-tools 在该文件夹中。
测试扩展
服务器测试
此扩展正在使用 Pytest 用于Python代码测试。
安装测试依赖项(只需要一次):
pip install -e ".[test]"
# Each time you install the Python package, you need to restore the front-end extension link
jupyter labextension develop . --overwrite要执行它们,请运行:
pytest -vv -r ap --cov jupyter_mcp_tools前端测试
此扩展正在使用 玩笑 用于JavaScript代码测试。
要执行它们,请执行:
jlpm
jlpm test集成测试
此扩展使用 剧作家 用于集成测试(也称为用户级测试)。 更确切地说,JupyterLab助手 加拉塔 用于在JupyterLab中处理扩展测试。
更多信息请参见 ui测试 README。
打包扩展
看 发布
