对,你没听错,AI IDE是可以玩jupyter notebook的。装了插件就可以。
但是呢,因为ipynb是一个json结构,Cursor、Trae这些工具高概率无法正确直接编辑Jupyter Notebook文件,你经常会看到“No changes made”的错误提示,因为格式错误,代码合不进去。
经常需要手动将AI生成的代码复制粘贴到ipynb文件中,非常繁琐。
于是找到了这么一个mcp工具。是给cursor做的,不过所有工具都能用。于是我用Trae包装了一个agent,方便在生成、编辑ipynb时能切换到这个agent。(这个mcp的tools实在是太多了,基本上只能单独用,否则超限。)
MCP介绍
cursor-notebook-mcp 利用 Python 的 nbformat 和 nbconvert 库来安全地操作Jupyter Notebook文件结构。
核心功能:
- 笔记本操作: 创建、删除、重命名、读取笔记本文件。
- 单元格操作: 添加、编辑、删除、分割、复制单元格。
- 导出功能: 使用 nbconvert 将笔记本导出为 Python 脚本、HTML 等格式。
- 安全机制: 通过 --allow-root 参数限制操作范围到用户指定的目录,防止未经授权的文件访问。
Trae 配置
第一步
安装mcp包
pip install cursor-notebook-mcp
第二步
配置Trae mcp
"notebook_mcp": {
"command": "C:\\Users\\admin\\AppData\\Roaming\\Python\\Python310\\Scripts\\cursor-notebook-mcp.exe",
"args": [
"--allow-root", "/absolute/path/to/your/notebooks"
]
}
填进这里。
注意
- 替换command里的filepath
- "/absolute/path/to/your/notebooks"也要替换成你想要修改的ipynb所在的文件夹地址。可以设的很宽,主要是为了避免可能得不必要的文件修改,是处于安全原因。
第三步
配置Trae agent,并勾选上刚才配置的mcp
以下是prompt:
-
工具使用:
- 始终使用
notebook_mcp服务器提供的工具对 Jupyter Notebook(.ipynb)文件进行操作。 - 避免使用标准的
edit_file工具编辑.ipynb文件,因为这可能会破坏 notebook 的结构。
- 始终使用
-
调查策略:
- 提供了一整套工具来检查 notebooks。如果用户提到一个问题、特定单元格或要求修改,首先尝试独立收集上下文。
- 使用可用的工具(
notebook_read、notebook_read_cell、notebook_get_info、notebook_read_metadata、notebook_read_cell_output、notebook_validate)检查 notebook 的结构、内容、元数据和输出,以定位相关上下文或识别问题。 - 仅在使用调查工具后无法确定必要信息时,才向用户询问进一步的澄清。
-
可用工具:
- 注意不同类别的工具:文件操作(
create、delete、rename)、Notebook/Cell 读取(read、read_cell、get_cell_count、get_info)、单元格操作(add_cell、edit_cell、delete_cell、move_cell、change_cell_type、duplicate_cell、split_cell、merge_cells)、元数据(read/edit_metadata、read/edit_cell_metadata)、输出(read_cell_output、clear_cell_outputs、clear_all_outputs)、实用工具(validate、export、diagnose_imports)。
- 注意不同类别的工具:文件操作(
-
数学符号: 在 Markdown 单元格中的 LaTeX,使用
$ ... $进行行内数学,使用$$ ... $$进行展示数学。避免使用( ... )和[ ... ]。 -
单元格魔法:
- 避免使用不支持的单元格魔法,如
%%bash、%%timeit和%%writefile。 - 使用
!command执行 shell 命令,而不是%%bash。 - 对于单行语句计时,使用
%timeit(行魔法)。 %%html用于渲染 HTML 输出。%%javascript可以执行(例如alert),但避免依赖它来操作单元格输出的显示。
- 避免使用不支持的单元格魔法,如
-
富输出: Matplotlib、Pandas DataFrame、Plotly、ipywidgets(
tqdm.notebook)和 Markdown 中嵌入的 HTML 通常能正确渲染。 -
Mermaid: 默认情况下,
```mermaid ```块中的图表不会被渲染。 -
source参数中的字符转义:- 在提供
add_cell或edit_cell的source字符串时,确保正确处理反斜杠(``)。换行符 必须 以\n表示(而不是\n),LaTeX 命令 必须 使用单个反斜杠(例如\Sigma,而不是\Sigma)。 - 工具或其解释的转义不正确可能会破坏 Markdown 格式(例如,本应通过
\n\n分隔的段落)和 LaTeX 渲染。 - 在添加或编辑包含复杂字符串的单元格(特别是涉及换行或 LaTeX 的字符串)后,考虑使用
read_cell来验证内容是否按预期保存,并在必要时进行修正。
- 在提供
效果
一把生成,没有错误。
不仅add cell,其他操作也没问题。
几轮之后,这个ipynb已经到了1000+行,而且几乎可以无限扩充。如果不用notebook mcp,是完全不可能正确生成和修改的。
Cursor 配置
Cursor用起来会没有这么顺手。因为只能配置在项目里。我不想污染User Rules,不是所有的chat都需要一个这么长的prompt,以及这么长的mcp tools。
cursor对于mcp tools的建议是不要超过40个。基本上这么一个mcp就占满了。
只有在编辑ipynb文件的时候,我才想要用这个prompt+mcp的组合。
在cursor里可以配置一个按照文件后缀正则的mdc。使用时可以在每个项目里把这个rules复制一遍。