Summary
The notebook edits itself while you talk about it.
Reading a notebook to a model usually means pasting cells and losing the structure. Addressing cells by index and type keeps the file as the source of truth, and executing in place means the output you discuss is the output that is saved.
What it is
Notebook file operations over MCP: read cells with a type filter, add cells at any position, execute one cell or every code cell, and read a notebook's metadata and statistics.
What you get
- Cells read from an .ipynb file, filterable to code, markdown or raw
- A new cell inserted at a chosen position or appended, with its own metadata
- One cell executed by index, against a named kernel, with a timeout
- Every code cell executed in order, with a stop-on-error option and a per-cell timeout
- Notebook metadata and statistics
- Progress reporting on the long runs, so a whole-notebook execution is not silent
Requirements
Uv, and a current fastmcp, launched against main.py by absolute path. Cell execution runs Python directly through a subprocess, so run only notebooks you trust or put the server in a sandbox.
Setup effort
One command — uvx jupyter-mcp-server
