jupyter_mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANTHROPIC_API_KEY | No | API key for Anthropic to enable cell summaries. If not provided, summaries degrade to deterministic fallbacks. | |
| JUPYTER_MCP_DISABLE_SUMMARIES | No | Set to '1' to disable all summaries. Everything else works unchanged. | 0 |
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 |
|---|---|
| create_notebookA | Create a new empty notebook at |
| notebook_overviewA | Index of the notebook: one line per cell (index, name, revision, staleness, one-line summary) plus dependency edges and lint findings. Start here when opening a notebook. Summaries marked with * are deterministic fallbacks, not LLM-generated. |
| read_cellsA | Read cells with code and condensed outputs (charts attached as images).
Select by |
| add_cellA | Add a cell. |
| update_cellA | Replace a cell's source and/or rename it. |
| remove_cellA | Delete a cell (requires its current rev; undo with undo_last). |
| move_cellB | Move a cell: |
| runA | Execute cells on the notebook's persistent kernel. |
| interruptA | Interrupt the currently running cell (KeyboardInterrupt in the kernel) and cancel queued cells. Kernel state (variables) survives; interrupted cells read as stale until a successful re-run. |
| restart_kernelA | Restart the notebook's kernel (all in-memory state is lost; every code cell becomes stale). |
| inspect_variableA | Inspect a live kernel variable without adding a cell: type, shape, schema/columns, length, plus its richest Jupyter repr — dataframes condense to a CSV table, figures come back as images, everything else falls back to a (pretty) repr. |
| undo_lastB | Restore the notebook to its state before the most recent mutation. |
| summarize_cellsC | Detailed summaries (LLM): per-cell description plus, optionally, a summary of each cell's current output. Cheaper than reading full cells when orienting in a large notebook. |
| search_cellsB | Search cell sources, names, summaries, and condensed outputs. Returns matching cells with the matching lines. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Each tool has a clear, distinct purpose with minimal overlap. The only potential ambiguity is between add_cell's run option and the run tool, but their primary functions are sufficiently different.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., add_cell, create_notebook, inspect_variable). The only minor deviation is undo_last (verb_adverb), but it remains consistent with the overall style.
With 14 tools, the set is well-scoped for a Jupyter notebook server. It covers creation, editing, execution, inspection, and undo operations without being excessive or insufficient.
The tool surface covers the core notebook lifecycle (CRUD, execution, inspection, undo). However, there is no explicit save or export tool, which is a minor gap assuming automatic persistence.