Jupyter MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TOKEN | Yes | The token used for authentication with the JupyterLab server. | |
| SERVER_URL | Yes | The URL of the server where JupyterLab is running. | http://localhost:8888 |
| NOTEBOOK_PATH | Yes | The path to the notebook file, relative to the directory where JupyterLab was started. | notebook.ipynb |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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 |
|---|---|
| list_filesA | List all files and directories recursively in the Jupyter server's file system. Used to explore the file system structure of the Jupyter server or to find specific files or directories. |
| list_kernelsA | List all available kernels in the Jupyter server. This tool shows all running and available kernel sessions on the Jupyter server, including their IDs, names, states, connection information, and kernel specifications. Useful for monitoring kernel resources and identifying specific kernels for connection. |
| use_notebookA | Use a notebook and activate it for following cell operations. All cell operations will be performed on the currently activated notebook. Activate new notebook will deactivate the previously activated notebook. Reactivate previously activated notebook using same notebook_name and notebook_path. |
| list_notebooksA | List all notebooks that have been used via use_notebook tool |
| restart_notebookB | Restart the kernel for a specific notebook. |
| unuse_notebookC | Unuse from a specific notebook and release its resources. |
| read_notebookA | Read a notebook and return index, source content, type, execution count of each cell. Using brief format to get a quick overview of the notebook structure and it's useful for locating specific cells for operations like delete or insert. Using detailed format to get detailed information of the notebook and it's useful for debugging and analysis. It is recommended to use brief format with larger limit to get a overview of the notebook structure, then use detailed format with exact index and limit to get the detailed information of some specific cells. |
| insert_cellB | Insert a cell to specified position from the currently activated notebook. |
| overwrite_cell_sourceA | Replace the entire source of a cell in the currently activated notebook. Returns a diff showing the changes made. |
| edit_cell_sourceA | Perform a surgical find-and-replace within a cell's source (like an editor's Edit tool).
Finds |
| execute_cellC | Execute a cell from the currently activated notebook with timeout and return it's outputs |
| insert_execute_code_cellA | Insert a cell at specified index from the currently activated notebook and then execute it with timeout and return it's outputs It is a shortcut tool for insert_cell and execute_cell tools, recommended to use if you want to insert a cell and execute it at the same time |
| read_cellA | Read a specific cell from the currently activated notebook and return it's metadata (index, type, execution count), source and outputs (for code cells) |
| delete_cellA | Delete specific cells from the currently activated notebook and return the cell source of deleted cells (if include_source=True). |
| clear_cell_outputA | Clear the outputs and execution count of a single code cell in the currently activated notebook, without deleting the cell itself. |
| move_cellA | Move a cell from source_index to target_index within the currently activated notebook. |
| execute_codeA | Execute code directly in a kernel (not saved to notebook). |
| connect_to_jupyterA | Connect to a Jupyter server dynamically with URL and token. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| jupyter_cite | Like @ or # in Coding IDE or CLI, cite specific cells from specified notebook and insert them into the prompt. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools have clear, distinct purposes, especially with explicit guidance distinguishing edit_cell_source from overwrite_cell_source. The three execution-related tools (execute_cell, insert_execute_code_cell, execute_code) could be confused at first glance, but their descriptions clarify the differences.
The set largely follows a verb_noun pattern (read_cell, delete_cell, move_cell, restart_notebook). Minor inconsistencies like insert_execute_code_cell and unuse_notebook break the rhythm slightly, but the pattern remains predictable overall.
18 tools is on the heavier side but reasonable for a Jupyter notebook server covering connection, notebook lifecycle, cell operations, execution, and file/kernel browsing. The count is justified by the breadth of operations rather than redundancy.
The set covers notebook activation, cell reading/writing/execution/movement/deletion, kernel restarts, and dynamic connection. Missing operations like creating/saving notebooks or managing kernels beyond restarting are notable but do not severely undermine the core workflow.