Skip to main content
Glama
linzk-bit

notebook-editor

by linzk-bit

Jupyter Notebook Editor MCP Server

A local MCP server for reading, writing, and executing Jupyter notebooks. Uses jupyter_client via ZMQ to communicate directly with kernels — no Jupyter server required.

Features

Notebook File Tools

Tool

Description

read_notebook

Read notebook structure and summary

get_cell_content

Get content of a specific cell by index

create_notebook

Create a new empty notebook

add_cell

Add a cell (code/markdown/raw)

edit_cell

Edit an existing cell's content

delete_cell

Delete a cell by index

Kernel Execution Tools

Tool

Description

start_kernel

Start a new Jupyter kernel

list_kernels

List all running kernels

shutdown_kernel

Shutdown a running kernel

execute_code

Execute code in a kernel

execute_cell

Execute a notebook cell and save outputs back to the file

Related MCP server: cursor-notebook-mcp

Architecture

MCP Server (TypeScript)
    │
    ├── notebook-file.ts   — read/write .ipynb files
    │
    └── kernel-exec.ts     — kernel lifecycle & execution
            │
            └── kernel_helper.py  — Python long-running process
                    │
                    └── jupyter_client (ZMQ)  — direct kernel communication

The MCP server spawns a Python helper process that manages kernels via jupyter_client. Commands are sent over stdin/stdout as JSON, avoiding HTTP/CSRF issues entirely.

Setup

Prerequisites

  • Node.js 18+

  • Python 3.8+ with jupyter_client installed

pip install jupyter_client

Install & Run

npm install
npm run dev       # development (tsx)
npm run build     # compile TypeScript
npm start         # production (node dist/index.js)

MCP Client Configuration

{
  "mcpServers": {
    "notebook-editor": {
      "command": "npx",
      "args": ["tsx", "/path/to/mcp-servers/notebook-editor/src/index.ts"]
    }
  }
}

Usage

Execute a single cell

start_kernel(name="python3")           → kernel_id
execute_cell(file_path="demo.ipynb", cell_index=0, kernel_id="<id>")
shutdown_kernel(kernel_id="<id>")

Execute multiple cells with shared state

start_kernel(name="python3")           → kernel_id
execute_cell(file_path="demo.ipynb", cell_index=0, kernel_id="<id>")
execute_cell(file_path="demo.ipynb", cell_index=1, kernel_id="<id>")
execute_cell(file_path="demo.ipynb", cell_index=2, kernel_id="<id>")
shutdown_kernel(kernel_id="<id>")

Auto-start kernel (single cell)

execute_cell(file_path="demo.ipynb", cell_index=0)
# Kernel auto-starts and shuts down after execution

Development

npm install
npm run dev

License

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Control Protocol (MCP) server that enables remote programmatic control of Jupyter notebooks, allowing AI assistants and applications to create, edit, and execute notebook cells via SSE protocol.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI agents to create, read, edit, and manage Jupyter Notebook files programmatically, overcoming limitations in Cursor's native notebook support.
    223 PyPI
    161
    -