Skip to main content
Glama
azharlabs
by azharlabs
README.md
# 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

B3.2/5.0

Scored across 13 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues