universal-notebook-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WORKSPACE_ROOT | Yes | The absolute path to the directory containing notebooks (passed via --workspace-root) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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. |
| 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). |
| 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. |
| 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. |
| 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. |
| 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). |
| 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). |
| notebook_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). |
| 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). |
| 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). |
| 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). |
| 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). |
| 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). |
| 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). |
| 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. |
| 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 |
| 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- 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