Trae agent之 jupyter notebook

1,894 阅读4分钟

对,你没听错,AI IDE是可以玩jupyter notebook的。装了插件就可以。

image.png

但是呢,因为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

image.png

image.png

image.png

"notebook_mcp": {
      "command": "C:\\Users\\admin\\AppData\\Roaming\\Python\\Python310\\Scripts\\cursor-notebook-mcp.exe",
          "args": [
            "--allow-root", "/absolute/path/to/your/notebooks"
          ]
    }

填进这里。

image.png

注意

  1. 替换command里的filepath
  2. "/absolute/path/to/your/notebooks"也要替换成你想要修改的ipynb所在的文件夹地址。可以设的很宽,主要是为了避免可能得不必要的文件修改,是处于安全原因。

image.png

第三步

配置Trae agent,并勾选上刚才配置的mcp

image.png

以下是prompt:

  1. 工具使用:

    • 始终使用 notebook_mcp 服务器提供的工具对 Jupyter Notebook(.ipynb)文件进行操作。
    • 避免使用标准的 edit_file 工具编辑 .ipynb 文件,因为这可能会破坏 notebook 的结构。
  2. 调查策略:

    • 提供了一整套工具来检查 notebooks。如果用户提到一个问题、特定单元格或要求修改,首先尝试独立收集上下文。
    • 使用可用的工具(notebook_readnotebook_read_cellnotebook_get_infonotebook_read_metadatanotebook_read_cell_outputnotebook_validate)检查 notebook 的结构、内容、元数据和输出,以定位相关上下文或识别问题。
    • 仅在使用调查工具后无法确定必要信息时,才向用户询问进一步的澄清。
  3. 可用工具:

    • 注意不同类别的工具:文件操作(createdeleterename)、Notebook/Cell 读取(readread_cellget_cell_countget_info)、单元格操作(add_celledit_celldelete_cellmove_cellchange_cell_typeduplicate_cellsplit_cellmerge_cells)、元数据(read/edit_metadataread/edit_cell_metadata)、输出(read_cell_outputclear_cell_outputsclear_all_outputs)、实用工具(validateexportdiagnose_imports)。
  4. 数学符号: 在 Markdown 单元格中的 LaTeX,使用 $ ... $ 进行行内数学,使用 $$ ... $$ 进行展示数学。避免使用 ( ... )[ ... ]

  5. 单元格魔法:

    • 避免使用不支持的单元格魔法,如 %%bash%%timeit%%writefile
    • 使用 !command 执行 shell 命令,而不是 %%bash
    • 对于单行语句计时,使用 %timeit(行魔法)。
    • %%html 用于渲染 HTML 输出。
    • %%javascript 可以执行(例如 alert),但避免依赖它来操作单元格输出的显示。
  6. 富输出: Matplotlib、Pandas DataFrame、Plotly、ipywidgets(tqdm.notebook)和 Markdown 中嵌入的 HTML 通常能正确渲染。

  7. Mermaid: 默认情况下,```mermaid ``` 块中的图表不会被渲染。

  8. source 参数中的字符转义:

    • 在提供 add_celledit_cellsource 字符串时,确保正确处理反斜杠(``)。换行符 必须\n 表示(而不是 \n),LaTeX 命令 必须 使用单个反斜杠(例如 \Sigma,而不是 \Sigma)。
    • 工具或其解释的转义不正确可能会破坏 Markdown 格式(例如,本应通过 \n\n 分隔的段落)和 LaTeX 渲染。
    • 在添加或编辑包含复杂字符串的单元格(特别是涉及换行或 LaTeX 的字符串)后,考虑使用 read_cell 来验证内容是否按预期保存,并在必要时进行修正。

效果

一把生成,没有错误。

image.png

image.png

不仅add cell,其他操作也没问题。

image.png

image.png

image.png

几轮之后,这个ipynb已经到了1000+行,而且几乎可以无限扩充。如果不用notebook mcp,是完全不可能正确生成和修改的。

image.png

Cursor 配置

Cursor用起来会没有这么顺手。因为只能配置在项目里。我不想污染User Rules,不是所有的chat都需要一个这么长的prompt,以及这么长的mcp tools。

cursor对于mcp tools的建议是不要超过40个。基本上这么一个mcp就占满了。

只有在编辑ipynb文件的时候,我才想要用这个prompt+mcp的组合。

在cursor里可以配置一个按照文件后缀正则的mdc。使用时可以在每个项目里把这个rules复制一遍。

image.png