Skip to main content
Glama
azharlabs
by azharlabs

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.

Related MCP server: mcp-server-jupyter

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:

npx -y mcp-jupyter

Installation (local checkout)

npm install

Example MCP client entry

Point your client at the built entrypoint (adjust the path to your checkout):

 {
  "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

Available Tools

13 tools
add_cellC

Add a new cell to the notebook

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
sourceNoInitial source code/content for the cell
cell_typeNoType of cell to createcode
positionNoPosition to insert the cell (defaults to end if not specified)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action. It doesn't mention whether this operation modifies the notebook file on disk, requires specific permissions, has side effects like saving changes, or what happens on failure (e.g., if the notebook path is invalid). This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that efficiently conveys the core purpose without any unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., success status, cell ID), error conditions, or behavioral nuances like file locking or concurrency issues, which are important for context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, providing detailed documentation for all parameters, including defaults and enums. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline score of 3 without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add') and resource ('a new cell to the notebook'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'insert_cell', which appears to serve a similar function, missing an opportunity for differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'insert_cell' or 'bulk_edit_cells'. It lacks context about prerequisites, such as whether the notebook must exist or be open, and offers no explicit when-to-use or when-not-to-use instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bulk_edit_cellsC

Perform bulk operations on multiple cells

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
operationsYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'bulk operations' but doesn't disclose critical behavioral traits: whether this modifies files in-place, requires write permissions, handles errors partially or atomically, or has rate limits. For a mutation tool with no annotations, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. However, it's too brief given the tool's complexity—it could benefit from more detail to justify its conciseness, as it under-specifies rather than being optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (bulk mutations on Jupyter notebooks), lack of annotations, no output schema, and incomplete parameter documentation, the description is inadequate. It doesn't cover mutation effects, error handling, or output expectations, leaving the agent with insufficient context to use the tool safely and effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (notebook_path has a description, operations does not). The description adds no parameter-specific semantics beyond implying 'bulk operations' relate to the operations array. It doesn't explain the structure or meaning of operation types (edit, delete, convert) or their fields, leaving gaps that the schema partially covers with enums but not descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Perform bulk operations on multiple cells' states the general action but is vague about what constitutes 'bulk operations' and doesn't specify the resource context (Jupyter notebook cells). It doesn't distinguish from siblings like edit_cell, delete_cell, or convert_cell_type, which handle single-cell operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description doesn't mention that this is for batch processing multiple cells at once, as opposed to using individual sibling tools like edit_cell or delete_cell for single operations. No prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_cell_typeC

Convert a cell from one type to another

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
cell_indexYesZero-based index of the cell
new_typeYesNew cell type

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention whether this is a destructive operation (e.g., overwriting cell content), permission requirements, error handling, or side effects like file modifications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It is front-loaded and appropriately sized for the tool's complexity, earning its place by stating the core purpose clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It lacks details on return values, error conditions, and behavioral context needed for a mutation tool in a notebook environment with multiple sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters. The description adds no additional meaning beyond implying 'cell' and 'type' concepts, which are already covered in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('convert') and resource ('a cell'), specifying the transformation from one type to another. It distinguishes from siblings like 'edit_cell' or 'edit_cell_source' by focusing on type conversion rather than content editing, though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'edit_cell' or 'bulk_edit_cells'. The description implies usage for type changes but lacks context on prerequisites, exclusions, or specific scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_cellC

Delete a cell by index

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
cell_indexYesZero-based index of the cell to delete

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Delete' implies a destructive mutation, the description doesn't specify whether this operation is reversible, what permissions are required, whether it affects notebook structure, or what happens to subsequent cell indices. This leaves significant behavioral gaps for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just four words, front-loading the essential action and target. There's zero wasted language or redundancy, making it highly efficient for an agent to parse while still conveying the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address critical context like what 'delete' entails (permanent removal? moves to trash?), whether indices shift after deletion, what permissions are needed, or what the response contains. The combination of destructive operation with minimal description creates significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, both parameters are already documented in the input schema. The description adds no additional semantic context about the parameters beyond what the schema provides. The baseline score of 3 reflects adequate but minimal value addition from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and target resource ('a cell by index'), providing specific verb+resource pairing. However, it doesn't differentiate from sibling tools like 'bulk_edit_cells' or 'move_cell' which might also involve cell removal operations, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'bulk_edit_cells' (for multiple deletions), 'move_cell' (for repositioning instead of deletion), and 'edit_cell' (for modification rather than removal), there's no indication of when this specific deletion tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_cellC

Edit the source code of a specific cell by ID or index

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
cell_idYesCell ID or zero-based index of the cell to edit
new_sourceYesNew source code for the cell

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the tool edits source code but doesn't disclose behavioral traits such as whether it overwrites existing content, requires write permissions, handles errors (e.g., invalid cell ID), or affects notebook state. This is a significant gap for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Edit the source code') and specifies the target ('specific cell by ID or index'). There is zero waste, and every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with 3 required parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like side effects, error handling, or return values, leaving gaps that could hinder an AI agent's correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all three parameters. The description adds no additional meaning beyond what the schema provides, such as explaining 'cell_id' as 'ID or index' (already in schema) or clarifying parameter interactions. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Edit') and resource ('source code of a specific cell'), specifying it targets cells by 'ID or index'. It distinguishes from siblings like 'edit_cell_source' (which might be similar) by explicitly mentioning source code editing, though the distinction could be more explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives is provided. For example, it doesn't clarify when to choose 'edit_cell' over 'edit_cell_source' or 'bulk_edit_cells', or mention prerequisites like needing an existing notebook. The description implies usage but lacks explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_cell_sourceC

Edit the source code of a specific cell by index

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
cell_indexYesZero-based index of the cell
new_sourceYesNew source code for the cell

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It doesn't disclose whether this is a destructive mutation (likely yes, but unconfirmed), whether it requires specific permissions, what happens on error (e.g., invalid index), or if changes are saved automatically. For a write operation with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks critical context: behavioral traits (e.g., destructiveness, error handling), usage guidelines relative to siblings, and expected outcomes. For a 3-parameter tool that modifies data, more guidance is needed to help the agent use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear parameter documentation in the input schema. The description adds no additional meaning beyond implying 'cell_index' is used to target a cell and 'new_source' replaces existing content. Since the schema already fully describes parameters, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Edit') and target resource ('source code of a specific cell by index'), making the purpose understandable. However, it doesn't distinguish this tool from sibling 'edit_cell' (which might edit metadata or other properties) or 'bulk_edit_cells' (which handles multiple cells), leaving some ambiguity about when to choose this specific tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'edit_cell' or 'bulk_edit_cells'. It doesn't mention prerequisites (e.g., whether the notebook must be open or saved) or exclusions (e.g., not for editing cell outputs). Without such context, the agent must infer usage from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_cellC

Execute a specific cell in the notebook using a Jupyter kernel

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
cell_idYesCell ID or zero-based index of the cell to execute

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool executes a cell but doesn't describe what happens during execution (e.g., kernel state changes, output generation, error handling, or side effects like file modifications). For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior and impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary details. It is front-loaded with the main action and resource, making it easy to parse. Every word earns its place, with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of executing a notebook cell (a mutation operation with potential side effects), no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., what execution entails), error conditions, or return values. For a tool that interacts with a Jupyter kernel, more context is needed to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters (notebook_path and cell_id) well-documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, such as examples of cell_id formats or path requirements. The baseline score of 3 reflects adequate coverage by the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('execute') and resource ('a specific cell in the notebook'), and mentions the mechanism ('using a Jupyter kernel'). It distinguishes from siblings like edit_cell or get_cell_source by focusing on execution rather than modification or retrieval. However, it doesn't explicitly differentiate from potential execution-related siblings that might exist in other contexts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., kernel availability), when not to use it (e.g., for read-only operations), or how it relates to siblings like bulk_edit_cells or trigger_vscode_reload. Usage is implied by the action but not explicitly contextualized.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cell_sourceC

Get the source code of a specific cell by index

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
cell_indexYesZero-based index of the cell

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Get') but doesn't describe traits like whether it's read-only (implied but not explicit), error handling (e.g., if cell_index is out of bounds), performance, or return format. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core action ('Get the source code'), making it easy to parse. There is no wasted verbiage, and every part of the sentence contributes to understanding the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a read operation with specific indexing) and lack of annotations and output schema, the description is incomplete. It doesn't explain what 'source code' includes (e.g., code only or with metadata), how errors are handled, or the return format. For a tool that retrieves data, more context is needed to use it effectively without trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for both parameters (notebook_path and cell_index). The description adds no additional meaning beyond the schema, such as examples or constraints (e.g., valid index ranges). Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'source code of a specific cell by index', making the purpose understandable. It distinguishes from siblings like 'edit_cell_source' (which modifies) and 'list_cells' (which lists metadata), though it doesn't explicitly name alternatives. The description is specific but could be more precise about what 'source code' entails (e.g., code content vs. metadata).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., the notebook must exist), compare to 'list_cells' for browsing or 'read_notebook_with_outputs' for full content, or specify use cases like debugging or analysis. Without such context, the agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_cellC

Insert a new cell at a specific position

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
positionYesPosition to insert the cell (0-based)
cell_typeNoType of cell to createcode
sourceNoInitial source code/content for the cell

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the basic action without disclosing behavioral traits like permissions needed, whether it modifies the file in place, error handling, or effects on existing cells. It's minimal and lacks crucial context for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that is front-loaded with the core purpose. There is no wasted wording, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It fails to address key aspects like what the tool returns, error conditions, or how it interacts with the notebook file, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning beyond what's in the schema, such as examples or edge cases, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('insert') and resource ('a new cell') with specificity about the location ('at a specific position'). It distinguishes from siblings like 'add_cell' by emphasizing positional insertion, though it doesn't explicitly compare to all alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'add_cell' or 'bulk_edit_cells'. The description implies usage for inserting a single cell at a position but lacks explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_cellsA

List all cells in a Jupyter notebook with their indices and types

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the tool's read-only nature implicitly through 'List' and specifies the output format (indices and types). However, it lacks details on error handling (e.g., invalid file paths), performance (e.g., large notebook handling), or authentication needs, leaving behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('List all cells in a Jupyter notebook') and appends valuable output details ('with their indices and types'). Every word contributes meaning without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with one parameter and no output schema, the description adequately covers the basic purpose and output. However, without annotations or output schema, it misses opportunities to detail error conditions, return format specifics, or limitations, leaving the agent to infer these from context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, fully documenting the single required parameter. The description adds no parameter-specific information beyond what the schema provides, but with only one parameter and high schema coverage, the baseline is appropriately met without needing compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('List all cells') with the target resource ('in a Jupyter notebook') and output details ('with their indices and types'). It distinguishes this read operation from sibling tools like add_cell, delete_cell, or edit_cell by focusing on enumeration rather than modification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving cell metadata from a notebook file, but provides no explicit guidance on when to choose this tool versus alternatives like read_notebook_with_outputs (which might include execution outputs) or get_cell_source (which retrieves content rather than metadata). No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_cellC

Move a cell from one position to another

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file
from_indexYesCurrent index of the cell
to_indexYesTarget index for the cell

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Move a cell') but does not cover critical aspects such as whether this modifies the notebook file permanently, requires specific permissions, handles errors (e.g., invalid indices), or has side effects like affecting other cells. This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no wasted words, efficiently conveying the core action. It is front-loaded and appropriately sized for the tool's complexity, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool involves mutation (moving cells in a notebook) with no annotations and no output schema, the description is incomplete. It does not address behavioral traits like file modification, error handling, or return values, which are crucial for safe and effective use. The high schema coverage helps with parameters but does not fill these contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting all three parameters. The description adds no additional meaning beyond the schema, such as explaining index ranges or interactions between parameters. Since schema coverage is high, the baseline score of 3 is appropriate as the description does not compensate but also does not detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Move') and resource ('a cell'), specifying the operation involves changing positions. It distinguishes from siblings like 'add_cell' or 'delete_cell' by focusing on relocation, but does not explicitly differentiate from similar tools like 'bulk_edit_cells' or 'edit_cell' in terms of scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it does not mention if this is for single-cell moves versus bulk operations (compared to 'bulk_edit_cells') or if it should be used over 'edit_cell' for positional changes. The description lacks context on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_notebook_with_outputsC

Read a Jupyter notebook including cell outputs

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file

TDQS

C2.9/5.0
Behavior2/5

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 mentions reading 'including cell outputs,' which implies it returns more than just source code, but it doesn't disclose critical behaviors: whether it's read-only (implied but not stated), what format the output is in (e.g., JSON, raw text), error handling, or performance considerations. For a tool with no annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function. It's front-loaded with the core action and includes the key detail about cell outputs. There's no wasted verbiage or redundancy, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'read' entails (e.g., returns notebook content as structured data), how outputs are handled, or potential errors. For a tool that likely returns complex notebook data, more context is needed to guide an agent effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with 'notebook_path' clearly documented as an absolute path. The description adds no additional parameter semantics beyond what the schema provides. Since schema coverage is high, the baseline score is 3, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 ('a Jupyter notebook'), specifying that it includes cell outputs. However, it doesn't explicitly differentiate from siblings like 'get_cell_source' (which might read only source code) or 'list_cells' (which might list metadata). The purpose is clear but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_cell_source' (which might read only source) and 'list_cells' (which might list metadata), there's no indication of when this tool is preferred or what its specific use cases are. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trigger_vscode_reloadC

Trigger VS Code to reload the notebook file

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_pathYesAbsolute path to the Jupyter notebook file

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'trigger' implies an action that initiates something, the description doesn't specify what 'reload' entails (e.g., whether it refreshes the UI, reloads from disk, clears outputs, or requires specific permissions). It also omits details like error handling, side effects, or whether this is a read-only vs. mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple tool and front-loaded with the core action, making it easy to understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of triggering an external application action, the lack of annotations, and no output schema, the description is incomplete. It doesn't explain what happens after triggering (e.g., success/failure indicators, expected behavior in VS Code, or potential errors), leaving gaps for an AI agent to understand the full context of use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the single parameter 'notebook_path' clearly documented in the schema as 'Absolute path to the Jupyter notebook file'. The description doesn't add any additional meaning beyond this, such as path format examples or constraints, but the schema provides adequate documentation, meeting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('trigger VS Code to reload') and the target resource ('the notebook file'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate this tool from sibling tools like 'read_notebook_with_outputs' or 'edit_cell_source', which might also involve notebook file operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether VS Code must be running), when this operation is appropriate (e.g., after external file changes), or what sibling tools might be better for related tasks (like 'read_notebook_with_outputs' for viewing content).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.2/5.0
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
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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/azharlabs/mcp-jupyter-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server