MCP Jupyter Server
# MCP JUPYTER Server
Model Context Protocol server that exposes basic tooling for inspecting and editing Jupyter notebooks (`.ipynb`) from any MCP-compatible client.
## Features
- Read notebook cells with optional filtering by cell type.
- Add, update, or delete cells while preserving notebook metadata.
- Get quick notebook stats (cell counts, execution metadata, format version).
- Runs over stdio so it can be wired directly into MCP clients such as Claude Desktop.
## Requirements
- Node.js 18 or newer.
- Access to the `.ipynb` files you want to work with (local file paths).
## Quick start (npx)
Run directly from the repo/package without cloning:
```sh
npx -y mcp-jupyter
```
## Installation (local checkout)
```sh
npm install
```
### Example MCP client entry
Point your client at the built entrypoint (adjust the path to your checkout):
```json
{
"mcpServers": {
"jupyter": {
"command": "npx",
"args": [
"-y",
"mcp-jupyter"
],
"cmd": ""
}
},
"$version": 2
}
```
## Available tools
### Position-Based Operations
- **`list_cells`** - List all cells with indices and type information
- **`get_cell_source`** - Get source code of specific cells by index
- **`edit_cell_source`** - Edit cell content by index
- **`insert_cell`** - Insert new cells at specific positions
- **`delete_cell`** - Delete cells by index with automatic reindexing
### Enhanced Operations
- **`move_cell`** - Move cells between positions
- **`convert_cell_type`** - Convert between code/markdown/raw cells
- **`bulk_edit_cells`** - Perform multiple operations in a single call
TDQS
Scored across 13 tools
Most tools have distinct purposes for cell operations, but there is notable overlap between 'edit_cell' and 'edit_cell_source' which both edit cell source code, and between 'add_cell' and 'insert_cell' which both add cells. This could cause confusion for an agent trying to select the right tool.
Tool names follow a consistent verb_noun pattern (e.g., add_cell, delete_cell, execute_cell) with clear actions and targets. The only deviation is 'read_notebook_with_outputs' which is longer but still follows the pattern, and 'trigger_vscode_reload' which uses a verb_noun_noun structure but remains readable.
With 13 tools, this server is well-scoped for managing Jupyter notebooks, covering a comprehensive set of operations like adding, editing, executing, and listing cells. Each tool appears to serve a specific function without unnecessary bloat.
The toolset provides strong coverage for cell-level operations (CRUD, execution, type conversion) and notebook reading, but lacks tools for higher-level notebook management such as saving, creating new notebooks, or kernel control. Minor gaps exist, but agents can likely work around them.