universal-notebook-mcp
Provides tools for reading, editing, and executing Jupyter notebook cells, managing kernels, and running pipelines, enabling AI assistants to interact with Jupyter notebooks live.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@universal-notebook-mcplist the cells in my analysis notebook"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
universal-notebook-mcp
Run Jupyter notebooks from any AI editor. Gives your AI assistant full access to read, edit, and execute .ipynb files with live kernel output — without needing to open JupyterLab.
Works in Antigravity, Cursor, Windsurf, Claude Desktop, Claude Code, and any MCP-compatible tool. Works on Windows, macOS, and Linux.
Quick start
1. Install Python 3.10+
Skip this step if you already have Python 3.10 or later (python --version to check).
Download from python.org and run the installer. Make sure to check "Add Python to PATH" during setup.
Or with winget:
winget install Python.Python.3.11brew install python@3.11Or download from python.org.
# Debian / Ubuntu
sudo apt install python3.11 python3.11-pip
# Fedora / RHEL
sudo dnf install python3.11
# Arch
sudo pacman -S python2. Install the package
pip install universal-notebook-mcpOn macOS/Linux, if
pipmaps to Python 3.9, usepip3.11instead. On Windows,pipfrom the Python 3.11 installer works directly.
Verify it installed:
nb-mcp --help3. Add to your editor
Pick your editor below and paste the config. Replace the path with the folder that contains your notebooks.
⚠️ Use the real absolute path — MCP clients pass arguments as literal strings and do not expand editor variables like
${workspaceFolder}.Windows paths: use forward slashes or escape backslashes:
C:/Users/you/notebooksorC:\\Users\\you\\notebooks
Create .antigravity/mcp.json in your project folder:
{
"mcpServers": {
"notebook": {
"command": "nb-mcp",
"args": ["--workspace-root", "/absolute/path/to/notebooks"]
}
}
}Or go to Settings → MCP Servers and add the same block.
~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project):
{
"mcpServers": {
"notebook": {
"command": "nb-mcp",
"args": ["--workspace-root", "/absolute/path/to/notebooks"]
}
}
}~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"notebook": {
"command": "nb-mcp",
"args": ["--workspace-root", "/absolute/path/to/notebooks"]
}
}
}Config file location:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"notebook": {
"command": "nb-mcp",
"args": ["--workspace-root", "/absolute/path/to/notebooks"]
}
}
}claude mcp add notebook -- nb-mcp --workspace-root /absolute/path/to/notebooks4. Reload your editor and go
Your AI can now work with notebooks. Try:
"List the cells in my notebook" "Run cell 3 and show me the output" "Fix the error in cell 5 and re-run it"
Related MCP server: mcp-server-jupyter
What it can do
Tool | What it does | |
📖 |
| See all cells (type, tags, first line) |
📖 |
| Read full source + saved outputs of a cell |
📖 |
| Read just the outputs (stream, result, error) |
📖 |
| Read notebook metadata (kernel, language, etc.) |
📖 |
| List all pipeline stage tags in the notebook |
✏️ |
| Edit a cell's source |
✏️ |
| Insert a new cell at any position |
✏️ |
| Delete a cell |
✏️ |
| Add or update cell tags and metadata |
✏️ |
| Update notebook-level metadata |
▶️ |
| Execute one cell and get its output |
▶️ |
| Execute a range of cells |
▶️ |
| Execute all cells |
▶️ |
| Execute all cells tagged with a stage name |
🔧 |
| Clear kernel state (variables, imports) |
🔧 |
| List all installed kernel environments |
🔧 |
| See which notebooks have a live kernel |
Kernel state persists across calls — variables and imports from one cell are available in the next, just like a normal Jupyter session.
Edits are checkpointed — every edit creates a timestamped backup (.checkpoint_<timestamp>.ipynb) before writing, so you can always roll back.
Troubleshooting
nb-mcp: command not found (or 'nb-mcp' is not recognized on Windows)
The install directory isn't on your PATH. Find where pip installed it:
# macOS / Linux
python3 -m site --user-scripts # or: which nb-mcp after activating your venv
# Windows (PowerShell)
python -c "import sys; print(sys.prefix + r'\Scripts')"Then either use the full path in your MCP config:
"command": "C:\\Users\\you\\AppData\\Local\\Programs\\Python\\Python311\\Scripts\\nb-mcp.exe"Or add the Scripts/bin directory to your PATH permanently.
ModuleNotFoundError when running a cell
The kernel doesn't have your packages installed. Register your environment:
pip install ipykernel
python -m ipykernel install --user --name myenv --display-name "My Env"Then restart the kernel via notebook_restart_kernel or ask your AI to switch kernels.
List available kernels:
jupyter kernelspec listWindows: path format in MCP config
Both of these work:
"C:/Users/you/notebooks" ✓ forward slashes
"C:\\Users\\you\\notebooks" ✓ escaped backslashesAvoid raw backslashes — they break JSON:
"C:\Users\you\notebooks" ✗ invalid JSONgit clone https://github.com/your-org/universal-notebook-mcp.git
cd universal-notebook-mcp
# macOS / Linux
pip3.11 install -e ".[dev]"
# Windows (PowerShell)
python -m pip install -e ".[dev]"Run the tests:
python -m pytest # all tests
python -m pytest -m "not integration" # unit tests only (no kernel needed)
python -m pytest -m integration -v # integration tests (needs ipykernel)Or use make targets on macOS/Linux:
make test # unit only
make test-all # unit + integration
make coverage # coverage report
make lint # ruff linterProject layout:
src/universal_notebook_mcp/
server.py ← MCP tool surface (17 tools, FastMCP, stdio)
notebook_adapter.py ← nbformat cell CRUD + checkpoint backups
kernel_session.py ← jupyter_client async kernel lifecycle
notebook_runner.py ← cell execution + output capture
tests/
conftest.py ← shared fixtures (mocked kernel, workspace)
fixtures/ ← simple.ipynb, pipeline.ipynb, error.ipynb
test_*.py ← 125 tests (116 unit + 9 integration)Security
All notebook paths are sandboxed to --workspace-root. Paths that escape it (e.g. ../secret.ipynb) or that aren't .ipynb files are rejected with an error.
License
MIT
Available Tools
17 toolsnotebook_delete_cellA
Delete the cell at the given index.
A timestamped backup is written first unless checkpoint=false.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. cell_index: Zero-based index of the cell to delete. checkpoint: Write a backup before deleting (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| cell_index | Yes | ||
| checkpoint | No | ||
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully relies on itself to disclose behavior. It explicitly mentions that a timestamped backup is written before deletion unless checkpoint=false, which is key behavioral detail. However, it does not mention error handling or side effects like file modification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and well-structured: a one-sentence purpose, a key behavioral note about backups, then a clean parameter list. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, no annotations, output schema exists), the description adequately covers the main action, backup behavior, and parameter meanings. It lacks information about return values (though output schema exists) and potential errors, but is fairly complete for a simple deletion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description compensates for 0% schema coverage by providing clear, complete explanations for all three parameters: notebook_path (relative path), cell_index (zero-based), and checkpoint (default true with backup behavior). This adds significant value over the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a cell from a notebook, specifying the action and resource. It distinguishes itself from siblings like notebook_edit_cell or notebook_insert_cell, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for deletion but does not explicitly differentiate from alternatives (e.g., editing or clearing a cell) or state when not to use the tool. No guidance on prerequisites or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_edit_cellA
Replace the source of a cell.
A timestamped .checkpoint_*.ipynb backup is written before the change unless checkpoint=false.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. cell_index: Zero-based index of the cell to edit. source: New source code or markdown text. checkpoint: Write a backup before editing (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| cell_index | Yes | ||
| checkpoint | No | ||
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the backup behavior (timestamped .checkpoint_*.ipynb) and the checkpoint parameter to disable it. However, it does not mention potential side effects like kernel state changes, file locking, or error scenarios, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences plus bullet-pointed args. Every sentence adds value. The action is front-loaded, and the args are clearly listed with context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown) which likely documents return values, reducing the burden on the description. The description covers the main behavioral aspect (backup) and parameter semantics. It lacks details on error handling, permission requirements, or cell existence checks, but overall provides sufficient context for a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the tool description adds valuable semantics for all parameters: notebook_path is relative to workspace root, cell_index is zero-based, source is new text, checkpoint defaults to true and controls backup. This compensates fully for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Replace the source of a cell', a clear verb-resource action. The verb 'replace' and resource 'source of a cell' accurately describe the core function, and it distinguishes from sibling tools like notebook_delete_cell or notebook_edit_cell_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. For instance, it does not mention that notebook_edit_cell_metadata should be used for metadata edits, or that notebook_read_cell is for reading. The absence of when-not or alternative recommendations reduces agent decision quality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_edit_cell_metadataA
Merge a JSON object into a cell's metadata.
Useful for adding or removing pipeline stage tags: updates = '{"tags": ["preprocess"]}'
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. cell_index: Zero-based index of the target cell. updates: JSON string with metadata keys to merge in. checkpoint: Write a backup before editing (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | ||
| cell_index | Yes | ||
| checkpoint | No | ||
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions the 'checkpoint' parameter for backups and describes merge behavior, but does not cover error handling, permissions, or whether the merge is deep or shallow. Some behavioral aspects are disclosed but not comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with an introductory line, an example, and an Args section. Every sentence provides value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description covers core functionality and parameters well. However, it lacks details on edge cases like invalid cell_index or notebook_path, and does not explain the return behavior beyond the output schema's presumed role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates. Each parameter (notebook_path, cell_index, updates, checkpoint) has a clear, descriptive explanation that adds meaning beyond type and name, including examples and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool merges a JSON object into a cell's metadata, with an example for pipeline tags. The name 'notebook_edit_cell_metadata' combined with the description makes the purpose clear, but it does not explicitly distinguish from sibling tools like 'notebook_edit_metadata' which edits notebook-level metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an example use case for pipeline stage tags, implying when to use it, but lacks explicit guidance on when not to use it or mentions of alternative tools. The sibling list is provided but no direct comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_edit_metadataA
Merge a JSON object into the top-level notebook metadata.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. updates: JSON string with top-level metadata keys to merge in. checkpoint: Write a backup before editing (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | ||
| checkpoint | No | ||
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the backup behavior ('Write a backup before editing') and implies a shallow merge of top-level keys. However, it lacks details on validation, error handling, or file modification behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one line of purpose, then three lines for parameter details. Every sentence is necessary and front-loaded for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters, no annotations, but an output schema exists. The description covers parameters and side effects (backup). It is mostly complete, though missing error handling and path validation details. Return values are handled by the output schema, so no deduction needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are missing (0% coverage), so the description compensates well. It explains notebook_path (relative path), updates (JSON string for top-level keys), and checkpoint (boolean for backup). Could be more precise on updates structure, but it adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Merge a JSON object into the top-level notebook metadata.' This clearly identifies the action (merge) and resource (notebook metadata), distinguishing it from sibling tools that operate on cells or read metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus siblings like notebook_edit_cell_metadata or notebook_read_metadata. Usage is implied but not clarified with when-not or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_insert_cellA
Insert a new cell at the given position.
Cells at index and above are shifted down. To append after the last cell, pass index equal to the total number of cells.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. index: Position to insert at (0 = before first cell). source: Source code or text for the new cell. cell_type: 'code', 'markdown', or 'raw' (default: 'code'). checkpoint: Write a backup before editing (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| source | Yes | ||
| cell_type | No | code | |
| checkpoint | No | ||
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description fully carries the burden. It discloses cell shifting, append behavior, and checkpoint backup. It does not mention error conditions or permissions, but this is sufficient for a simple insertion tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loading the main action and behavioral note, then listing parameters in a clear block. Every sentence serves a purpose, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5 parameters and existence of an output schema, the description covers behavior and parameter semantics well. However, it does not describe the return value or error conditions, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides meaningful explanations for all parameters (notebook_path, index, source, cell_type, checkpoint), including defaults and options, adding significant value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Insert a new cell at the given position,' which is a specific verb and resource. It also explains the shifting behavior and append trick, distinguishing it from sibling tools like notebook_edit_cell or notebook_delete_cell.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by detailing the operation (insert) and behavioral notes (shifting, appending), but it does not explicitly mention when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_list_active_kernelsA
List notebooks that currently have a running kernel in this session.
Returns the absolute resolved paths of notebooks with live kernels.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions the output (absolute paths) but does not disclose any behavioral traits like side effects, performance, or whether it is read-only. For a 0-parameter list operation, this is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise, front-loaded sentences. Every sentence adds value: the first explains the purpose, the second details the return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters and an output schema exists, the description is sufficiently complete. It clearly defines what the tool does and what it returns, leaving no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 0 parameters, so baseline is 4. The description does not need to add parameter information; it correctly focuses on the tool's behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'notebooks with running kernels', and the scope 'in this session'. It also specifies the return value (absolute resolved paths), which distinguishes it from siblings like notebook_list_kernels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to find notebooks with active kernels, but does not explicitly state when to use this tool versus alternatives such as notebook_list_kernels. No guidance on when-not-to-use is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_list_cellsA
List every cell in a notebook with its index, type, tags, and first line.
Call this first to understand the structure before reading or editing specific cells.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. While it implies a read-only list operation, it does not explicitly state that no side effects occur or that it is safe to call multiple times. More explicit safety disclosure would improve score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences plus an argument description. Front-loaded with key result details. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one parameter) and presence of an output schema (not shown but assumed), the description sufficiently explains what is returned (index, type, tags, first line) and how to use it. No missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no parameter descriptions (0% coverage), but description adds meaning beyond schema (type string, title) by specifying 'Path to the .ipynb file, relative to the workspace root,' which clarifies format and location. Could be improved with example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'list every cell' and identifies the resource as a notebook, detailing what is returned (index, type, tags, first line). This clearly distinguishes it from sibling tools that modify or read individual cells.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Call this first to understand the structure before reading or editing specific cells,' providing clear when-to-use guidance and implied exclusion of direct cell manipulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_list_kernelsA
List every Jupyter kernel spec installed on this machine.
Returns a dict of {kernel_name: display_name}. Use the kernel_name value as the kernel_name argument to execution tools.
If you get ModuleNotFoundError when running a cell, the kernel may not have your packages installed. Install the current virtualenv as a kernel: python -m ipykernel install --user --name myenv
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses return format (dict of name to display name) and potential module issues with solution. However, it doesn't mention any permissions or failure modes beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with only essential sentences and a code example. Every sentence adds value, well-structured with clear sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0 parameters and output schema present, the description fully explains the return structure, usage, and provides troubleshooting, making it complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, so baseline is 4 per instructions. No parameter info needed, but the description adds no semantics beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List every Jupyter kernel spec installed on this machine' with a specific verb and resource. It distinguishes from siblings like notebook_list_active_kernels which lists active kernels rather than all specs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on using the kernel_name from the output as an argument to execution tools, and includes troubleshooting advice for ModuleNotFoundError. It could mention not using it when you need active kernel info, but context from sibling names mitigates this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_list_stagesA
List every pipeline stage tag present across the notebook's cells.
Pipeline stages are cell tags set in JupyterLab via View → Cell Toolbar → Tags (e.g. 'preprocess', 'train', 'evaluate'). Use notebook_run_pipeline to execute all cells in a named stage.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It describes the read-only nature of listing stages and explains how stages are assigned. It does not mention edge cases (e.g., no stages found) but given the simplicity, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the action. It includes only essential information: purpose, context on how stages are set, and a pointer to a related tool. No redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and an output schema (presence indicated), the description covers all necessary context: what the tool does, how input is formatted, and how stages are integrated with the JupyterLab workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds critical meaning: it specifies that notebook_path is 'relative to the workspace root.' This clarifies the parameter format, which the schema alone does not provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'List every pipeline stage tag present across the notebook's cells.' The verb 'List' and resource 'pipeline stage tags' are clear and specific. It distinguishes itself from sibling tools like notebook_list_cells by focusing on stages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on how pipeline stages are set (via JupyterLab cell toolbar) and mentions a related sibling tool (notebook_run_pipeline) for executing stages. However, it does not explicitly state when to use this tool versus other list tools like notebook_list_cells or notebook_list_kernels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_read_cellA
Read the full source, type, tags, and saved outputs of a single cell.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. cell_index: Zero-based index of the cell (use notebook_list_cells to find it).
| Name | Required | Description | Default |
|---|---|---|---|
| cell_index | Yes | ||
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the tool reads cell contents but does not explicitly declare it as read-only or safe, nor mentions side effects. For a read operation, this is adequate but not exemplary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences plus an Args list with no fluff. The purpose is front-loaded and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (implied), the description adequately covers what the tool returns. It could mention error handling (e.g., invalid index) but remains complete for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no descriptions in schema), but the description adds full semantics for both parameters: notebook_path is 'relative to workspace root' and cell_index is 'zero-based index' with hint to use notebook_list_cells. This fully compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read') and the resource ('a single cell'), listing specific attributes (source, type, tags, saved outputs). It distinguishes from siblings like notebook_read_cell_output and notebook_list_cells.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning notebook_list_cells to find cell_index, but does not explicitly state when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_read_cell_outputA
Read the saved outputs of a code cell from the last time it was run.
Returns stream text, execute_result data, display_data, or error tracebacks. Note: outputs are empty until the cell has been executed at least once.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. cell_index: Zero-based index of a code cell.
| Name | Required | Description | Default |
|---|---|---|---|
| cell_index | Yes | ||
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the transparency burden. It discloses that outputs are saved from the last execution and lists possible output types. It correctly implies a read-only, non-destructive operation. Missing explicit mention that no execution is triggered, but still adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise paragraphs: first states purpose and return types, second details parameters. Every sentence adds value; no fluff. Front-loaded with the most critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema likely defining return structure, the description doesn't need exhaustive details. It covers the essential: what outputs contain, when they are available, and how to specify the cell. Tool is fully described given its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's 'Args' section fully describes both parameters: notebook_path (relative path) and cell_index (zero-based index). This adds meaning beyond the schema titles and compensates for the lack of schema-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'read' and resource 'saved outputs of a code cell'. It distinguishes from siblings like notebook_read_cell and notebook_read_metadata by explicitly stating it reads outputs, not cell content or metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: outputs are saved from the last run and are empty until execution. However, it does not explicitly compare to alternatives or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_read_metadataA
Read the top-level notebook metadata (kernelspec, language_info, etc.).
Args: notebook_path: Path to the .ipynb file, relative to the workspace root.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates read-only behavior, which is transparent, but lacks details on error handling, idempotency, or return value structure. Given no annotations, it provides basic but not comprehensive behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence plus an Args list), front-loaded, and every part adds value. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and parameter semantics, but does not address error conditions (e.g., file not found, invalid notebook) or result structure. An output schema exists, mitigating return format concerns, but error handling is missing. For a simple read tool, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only type and required for the single parameter. The description adds clear meaning: 'Path to the .ipynb file, relative to the workspace root.' This compensates fully for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'top-level notebook metadata' with examples (kernelspec, language_info). This distinguishes it from sibling tools like notebook_edit_metadata (write) and notebook_read_cell (read cell content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus its siblings, nor does it mention prerequisites or context. Usage is implicitly clear from the name, but no direct advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_restart_kernelA
Restart the kernel for a notebook, clearing all variables and imports.
The kernel process stays alive — only its state is reset, so subsequent run_cell calls start from a clean slate without the startup overhead of a fresh kernel.
Args: notebook_path: Path to the .ipynb file whose kernel should be restarted.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure. It details that the kernel process stays alive and only state resets, which is crucial for understanding side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences efficiently cover purpose, behavior, usage context, and parameter. No superfluous words; well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and an output schema, the description fully explains the action, behavioral nuance, and parameter meaning. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It defines the parameter 'notebook_path' as path to the .ipynb file, which adds clarity beyond the schema's title 'Notebook Path'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Restart the kernel for a notebook, clearing all variables and imports.' This is specific and distinct from sibling tools like cell editing or pipeline runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the kernel stays alive and state is reset, avoiding startup overhead. This guides when to use it (clean slate without new kernel overhead) but does not explicitly mention when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_run_allA
Execute every cell in the notebook in order and return all outputs.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. kernel_name: Kernel to use (default: 'python3'). timeout: Per-cell timeout in seconds (default: 60). stop_on_error: Stop at first failing cell (default: true). save_outputs: Write outputs back to the .ipynb file (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| kernel_name | No | ||
| save_outputs | No | ||
| notebook_path | Yes | ||
| stop_on_error | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: it saves outputs back to the notebook file (save_outputs), stops on error by default (stop_on_error), and has per-cell timeout. Since no annotations are provided, the description carries the full burden and covers important side effects (writing to file) and execution semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: a single sentence defining the tool's purpose followed by a bullet list of all five parameters with defaults and explanations. No redundant text; every sentence adds value. Information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no annotations, and an output schema (assumed to cover return values), the description adequately explains all parameters and core behavior. However, it lacks details on output format, error handling beyond stop_on_error, and any performance or state implications (e.g., kernel reset).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the description attempts to explain each parameter, it inaccurately states the default for kernel_name as 'python3' when the input schema specifies default null. This contradiction misleads the agent about the tool's actual default behavior. Schema description coverage is 0%, so accurate parameter documentation is critical.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute every cell in the notebook in order and return all outputs,' which specifies the verb (execute), resource (every cell in the notebook), and scope (in order, all outputs). This distinguishes it from sibling tools like notebook_run_cell (single cell) and notebook_run_range (range of cells).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It lacks explicit 'when-to-use' or 'when-not-to-use' conditions, and does not mention any prerequisites or context for preferring full notebook execution over running individual cells or ranges.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_run_cellA
Execute a single code cell and return its outputs.
Kernel state (variables, imports) is preserved between calls on the same notebook, so cells can depend on earlier ones.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. cell_index: Zero-based index of the cell to run. kernel_name: Kernel to use (e.g. 'python3', 'myenv'). Defaults to 'python3'. Run notebook_list_kernels to see options. timeout: Seconds to wait for the cell to finish (default: 60). save_outputs: Write outputs back to the .ipynb file (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| cell_index | Yes | ||
| kernel_name | No | ||
| save_outputs | No | ||
| notebook_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that kernel state is preserved, outputs are returned, and save_outputs controls writing back to file. It does not explicitly state if the operation is destructive, but the nature of executing code implies mutation. The description adequately covers behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with one main sentence followed by a structured Args list. Every sentence adds value, and the most important information (purpose) is front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the many sibling tools, the description clearly identifies this tool's role. It covers key aspects: execution behavior, parameter details, and output. The presence of an output schema means return values need not be explained. The description is sufficiently complete for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully explains each parameter in the Args section, adding meaning beyond the schema. It clarifies paths, indices, kernel options, timeout, and save behavior, which is excellent compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a single code cell and returns outputs, which is a specific verb+resource. It distinguishes from siblings like notebook_run_all or notebook_run_range.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that kernel state is preserved and cells can depend on earlier ones, providing context for when to use. It also suggests using notebook_list_kernels for kernel options. However, it does not explicitly mention when not to use this tool compared to alternatives like run_range.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_run_pipelineA
Run all cells tagged with a pipeline stage, in notebook order.
Pipeline stage tags are set per-cell in JupyterLab: View → Cell Toolbar → Tags (add e.g. 'preprocess', 'train', 'evaluate')
Use notebook_list_stages to see what stages exist in a notebook.
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. stage: Tag name of the stage to run (e.g. 'preprocess'). kernel_name: Kernel to use (default: 'python3'). timeout: Per-cell timeout in seconds (default: 60). stop_on_error: Stop at first failing cell (default: true). save_outputs: Write outputs back to the .ipynb file (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| stage | Yes | ||
| timeout | No | ||
| kernel_name | No | ||
| save_outputs | No | ||
| notebook_path | Yes | ||
| stop_on_error | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool runs cells in notebook order, optionally saves outputs back to the file (save_outputs), stops on error (stop_on_error), and uses a specified kernel. It does not mention any destructive actions beyond saving outputs, which is explicitly controlled by a parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief introductory sentence, a note on setting tags, a sibling tool reference, and a clear 'Args:' section. It is efficient, but could be slightly more condensed without losing clarity. Still, it earns its sentences and is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, 2 required) and the presence of an output schema, the description is fairly complete. It explains all parameters, the execution order, and provides a pointer to a related tool. It does not cover return values, but that is acceptable since an output schema exists. Minor gaps like error handling beyond stop_on_error are covered by the parameter description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the tool description compensates fully. It provides clear, meaningful explanations for all six parameters, including defaults (e.g., 'Kernel to use (default: 'python3')') and behavior ('Stop at first failing cell (default: true)'). This adds essential context beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run all cells tagged with a pipeline stage, in notebook order.' It specifies the verb (run), resource (cells tagged with a stage), and behavior (order). It also explains how to set tags and distinguishes itself from siblings like notebook_run_all and notebook_run_cell.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance to 'Use notebook_list_stages to see what stages exist in a notebook,' indicating when to use this tool versus that alternative. It does not explicitly state when not to use the tool, but the sibling context and the detailed parameter explanations imply appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_run_rangeA
Execute cells from start to end (inclusive) and return all outputs.
Execution stops at the first error by default (stop_on_error=true).
Args: notebook_path: Path to the .ipynb file, relative to the workspace root. start: First cell index to run (inclusive). end: Last cell index to run (inclusive). kernel_name: Kernel to use (default: 'python3'). timeout: Per-cell timeout in seconds (default: 60). stop_on_error: Stop at first failing cell (default: true). save_outputs: Write outputs back to the .ipynb file (default: true).
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| timeout | No | ||
| kernel_name | No | ||
| save_outputs | No | ||
| notebook_path | Yes | ||
| stop_on_error | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes default stop_on_error, timeout, and save_outputs behavior. Lacks details on kernel instantiation, side effects (e.g., kernel state), and output format. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two lead sentences plus a clear bulleted arg list. Every sentence adds value; no redundancy. Well-structured for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core functionality and all parameters. Does not describe output schema or kernel prerequisites, but output schema exists externally. Slightly incomplete for a parameter-rich tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description explains all 7 parameters with defaults and semantics (e.g., 'relative to workspace root,' 'per-cell timeout'). Adds value but lacks some format constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute cells from start to end (inclusive) and return all outputs,' specifying verb, object, and range. This distinguishes it from siblings like notebook_run_all and notebook_run_cell.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., notebook_run_all, notebook_run_cell). Does not explain trade-offs or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
17 tool updates
v0.1.0- First observed
notebook_delete_cell - First observed
notebook_edit_cell - First observed
notebook_edit_cell_metadata - First observed
notebook_edit_metadata - First observed
notebook_insert_cell - First observed
notebook_list_active_kernels - First observed
notebook_list_cells - First observed
notebook_list_kernels - First observed
notebook_list_stages - First observed
notebook_read_cell - First observed
notebook_read_cell_output - First observed
notebook_read_metadata - First observed
notebook_restart_kernel - First observed
notebook_run_all - First observed
notebook_run_cell - First observed
notebook_run_pipeline - First observed
notebook_run_range
TDQS
Each tool targets a distinct operation on notebooks, cells, metadata, or kernels. There is no overlap, and descriptions clearly differentiate purposes (e.g., list_cells vs read_cell, run_all vs run_pipeline).
All tools follow the `notebook_verb_noun` pattern consistently. Verbs like delete, edit, insert, list, read, restart, run are used uniformly, making it easy to predict tool behavior from its name.
With 17 tools, the set covers cell manipulation, metadata editing, execution modes, and kernel management without being excessive. Each tool serves a clear purpose, and the count is well-suited to the domain.
Core workflows like CRUD for cells, multiple execution modes, and kernel management are covered. However, missing notebook creation (e.g., `notebook_create`) and explicit save/export operations are minor gaps that agents may need to work around.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
System-of-record notebook for AI coding agents: pages, datastores, tasks, skills over MCP.
AI access to Quadratic spreadsheets: open files, run Python/SQL, query connected databases.
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides AI assistants with deep semantic and runtime understanding of Jupyter notebooks.13MIT
- AlicenseAqualityCmaintenanceEnables programmatic interaction with Jupyter notebooks, allowing reading, editing, and executing cells via Claude.632MIT
- AlicenseAqualityCmaintenanceEnables AI agents to create, read, edit, and execute Jupyter notebook cells, manage kernels, and connect to remote Jupyter servers.21MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to execute Jupyter notebook cells with persistent kernel state, output persistence, and structured JSON control surface.2-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/am-3/jupyter-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server