Skip to main content
Glama

Notebook MCP

AI-Native Intelligence for Jupyter Notebooks

Notebook MCP is a Model Context Protocol (MCP) server that gives AI assistants deep semantic and runtime understanding of .ipynb notebooks.


๐Ÿš€ Motivation

AI coding assistants struggle with notebooks because notebooks rely heavily on execution order and hidden runtime state.

Notebook MCP bridges this gap by converting notebooks into structured, analyzable execution graphs.


Related MCP server: mcp-server-jupyter

โœจ Features

๐Ÿ“Š Static Notebook Intelligence

  • Dependency graph generation

  • Variable lineage tracking

  • Focused context slicing for LLM reasoning

  • Deterministic notebook-to-script export

โšก Execution State Awareness

  • Detects stale cells

  • Detects unexecuted cells

  • Generates rerun plans

๐Ÿ”ฌ Runtime Jupyter Integration

  • Execute code inside kernels

  • Inspect variables

  • Access kernel metadata

  • Stream execution results


๐Ÿ—๏ธ Architecture

Notebook โ†’ MCP Server โ†’ AI Assistant

Core Components:

  • AST Analysis Engine

  • Dependency Graph Builder

  • Execution State Engine

  • Jupyter Kernel WebSocket Client

  • Context Builder for LLMs


๐Ÿ“ฆ Installation

npm install -g @akram1110/notebook-mcp

Python Backend

pip install notebook-mcp

โš™๏ธ Running Server

notebook-mcp

๐Ÿงน Uninstallation

Notebook MCP installs components via both npm and pip.

Follow the steps below to fully remove the tool.


Step 1 โ€” Remove npm Wrapper

npm uninstall -g @akram1110/notebook-mcp

Step 2 โ€” Remove Python Backend

pip uninstall notebook-mcp

or

python -m pip uninstall notebook-mcp

Step 3 โ€” Confirm Removal

notebook-mcp

Expected output:

command not found

Step 4 โ€” Windows Only: Remove Leftover Executables

Python sometimes leaves launcher files behind.

Check:

where notebook-mcp

If found, delete from:

<python_install_dir>\Scripts\

Example:

C:\Users\<username>\AppData\Local\Programs\Python\Python311\Scripts\

Step 5 โ€” Clean Corrupted pip Distribution Warnings

If pip shows:

WARNING: Ignoring invalid distribution ~

Delete folders beginning with ~ inside:

<python_install_dir>\Lib\site-packages\

Then verify:

pip check

Step 6 โ€” Optional Cache Cleanup

pip cache purge

After completing these steps, Notebook MCP will be fully removed from your system.

๐Ÿ”Œ Cursor Integration

{
  "mcpServers": {
    "notebook": {
      "command": "notebook-mcp"
    }
  }
}

๐Ÿงช Example MCP Tools

Tool

Description

notebook_analyze

Builds dependency graph

notebook_context

Generates focused context

notebook_state

Detects execution state

notebook_rerun_plan

Suggests rerun order

jupyter_execute

Executes kernel code

jupyter_inspect

Inspects runtime variables


๐Ÿ”ง Jupyter Integration

Set environment variables:

JUPYTER_BASE_URL=http://localhost:8888
JUPYTER_TOKEN=<token>

๐Ÿ“š Tech Stack

  • Python

  • Model Context Protocol (MCP)

  • AST Analysis

  • NetworkX Graphs

  • Jupyter Kernel Protocol

  • Node.js CLI Distribution


๐Ÿ›ฃ๏ธ Roadmap

  • Output semantic analysis

  • Notebook replay engine

  • Incremental notebook graph caching

  • Binary distribution support


๐Ÿค Contributing

Issues and PRs welcome.


๐Ÿ“„ License

MIT License

Available Tools

13 tools
jupyter_executeC

Execute code on a Jupyter kernel via Jupyter Server websocket channels.

Requires:

  • JUPYTER_BASE_URL

  • JUPYTER_TOKEN (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
kernel_idYes
codeYes
timeout_sNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions execution via websocket channels but fails to describe side effects, error handling, timeout behavior, or what happens upon successful execution. This leaves significant gaps for an agent.

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

Conciseness3/5

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

The description is concise at two sentences, but it lacks structure. Important details like parameter semantics or usage examples could be added without sacrificing conciseness. It is front-loaded with the action, which is good.

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 has 3 parameters (2 required), no output schema, and siblings that likely share similar functionality, the description is incomplete. It does not explain return values, error states, or how this tool differs from the many related tools in the sibling list.

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

Parameters1/5

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

The input schema has zero description coverage for its parameters. The description does not add any meaning to kernel_id, code, or timeout_s beyond their names and types. For example, it does not explain what code format is expected or how timeout_s is applied.

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 'Execute' and the resource 'code on a Jupyter kernel', making the basic purpose obvious. However, it does not explicitly differentiate this tool from siblings like jupyter_execution_submit, which may have overlapping functionality.

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 lists required environment variables (JUPYTER_BASE_URL, JUPYTER_TOKEN) but provides no guidance on when to use this tool versus alternatives such as jupyter_execution_submit or jupyter_execution_status. No conditions or exclusions are mentioned.

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

jupyter_execution_cancelD
ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYes

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

jupyter_execution_outputD
ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYes

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

jupyter_execution_statusD
ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYes

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

jupyter_execution_submitD
ParametersJSON Schema
NameRequiredDescriptionDefault
kernel_idYes
codeYes
timeout_sNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

jupyter_get_kernelC

Get kernel metadata from Jupyter Server.

ParametersJSON Schema
NameRequiredDescriptionDefault
kernel_idYes

TDQS

C2.4/5.0
Behavior1/5

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

With no annotations, the description carries full burden for behavioral traits. It fails to mention whether the operation is read-only, requires permissions, or how it handles missing kernels. This is a significant gap for a tool that likely performs a safe query.

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 no wasted words. It is front-loaded and to the point.

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 a single parameter, no output schema, and no annotations, the description should have provided more context about the return value, expected behavior, or error conditions. The current description is too sparse to fully inform an agent.

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

Parameters1/5

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

The input schema has one parameter (kernel_id) with 0% description coverage, and the description does not mention or explain the parameter. The agent must infer its purpose from the tool name alone, which is insufficient.

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 (get) and the resource (kernel metadata from Jupyter Server). It is distinct from sibling tools that involve execution or notebook analysis, though it could be more specific about what constitutes kernel 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?

No guidance is provided on when to use this tool versus alternatives like jupyter_inspect or jupyter_list_sessions. The agent has no basis to choose this tool over others for related queries.

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

jupyter_inspectC

Inspect an expression on a kernel using user_expressions (repr + type).

Requires:

  • JUPYTER_BASE_URL

  • JUPYTER_TOKEN (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
kernel_idYes
expressionYes
timeout_sNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It mentions returning 'repr + type' but does not state whether the call is read-only, non-blocking, or idempotent. No side effects or safety cues are provided.

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 two sentences plus a bullet list. The first sentence carries the core purpose and is front-loaded. The requirements list is relevant but adds little value to tool selection. Overall, it is efficient with no wasted words.

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 absence of an output schema and parameter descriptions, the description falls short. It does not explain what the tool returns (repr, type, or other data), error handling, or any constraints. The user must rely on external knowledge to use it correctly.

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

Parameters1/5

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

The description adds no meaning beyond the input schema. Schema coverage is 0%, and the description does not explain kernel_id, expression, or timeout_s. The parameter names and required status are insufficient for correct usage without further context.

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 tool's purpose: 'Inspect an expression on a kernel using user_expressions (repr + type).' This is specific about the verb (inspect), resource (kernel), and method (user_expressions). It distinguishes from sibling tools like jupyter_execute or jupyter_get_kernel, which have different actions.

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 lists environment variable requirements (JUPYTER_BASE_URL, JUPYTER_TOKEN) but provides no guidance on when to use this tool versus alternatives like jupyter_execute or notebook_analyze. There is no explicit statement about use cases or exclusions.

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

jupyter_list_sessionsB

List Jupyter Server sessions (requires JUPYTER_BASE_URL and optional JUPYTER_TOKEN).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully describe behavior. It only notes authentication requirements but not that the operation is read-only, what the output contains (likely a list), or side effects. For a zero-annotation tool, more detail is needed.

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 sentence with no redundant words. It is very concise. However, it could include more information without becoming verbose, so it is efficient but not maximally informative.

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 tool with no parameters and an output schema, the description is minimally adequate. It gives the resource and prerequisites. But it lacks details about when to use it (e.g., session management workflow) and what the output format is. Given the output schema exists, the return type is covered, but overall completeness is average.

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 input schema has no parameters (100% coverage). The description adds value by specifying that the tool requires JUPYTER_BASE_URL and optionally JUPYTER_TOKEN, which are external configuration details. This context is not in the schema, so it helps an agent understand prerequisites.

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 tool's function: 'List Jupyter Server sessions'. The verb 'list' and resource 'sessions' are specific, and the tool clearly differs from siblings like jupyter_execute (execution) or jupyter_get_kernel (kernel inspection). No ambiguity.

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. It mentions requirements (JUPYTER_BASE_URL) but does not specify context (e.g., 'Use when you need to see active sessions' or comparisons to sibling tools).

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

notebook_analyzeC

Analyze a notebook and return structured cell info and dependency edges.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
strip_outputsNo
include_markdownNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only states the output but not whether the tool is read-only, safe, or has side effects. The name implies analysis, but explicit safety info is missing.

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 one concise sentence, front-loading the purpose. Though brief, it avoids fluff. Could benefit from more structure but remains efficient.

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?

The description is insufficient for a tool with 3 parameters and no output schema or annotations. It does not explain input expectations, output format, or edge cases, leaving significant gaps.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not mention any parameters or explain how they affect behavior. For instance, 'strip_outputs' and 'include_markdown' are not described, leaving the agent to guess.

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 tool analyzes a notebook and returns structured cell info and dependency edges. This is a specific verb+resource and distinguishes it from sibling tools like notebook_state or notebook_rerun_plan.

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 the many sibling tools. It does not mention prerequisites, 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_contextC

Return a focused, dependency-aware context slice for a given cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
focus_cell_idYes
max_cellsNo
include_markdownNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'dependency-aware' but does not explain what that entails, any side effects, permissions, or return behavior. The description is too vague to inform safe invocation.

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, front-loaded sentence that efficiently conveys the core purpose. However, it is overly terse, sacrificing useful detail. Still, 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 the tool has 4 parameters, no output schema, no annotations, and a complex sibling set, the description is insufficient. It does not explain what constitutes a 'context slice', how dependency-awareness works, or what the output looks like.

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

Parameters1/5

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, but it does not mention any of the four parameters (path, focus_cell_id, max_cells, include_markdown). It adds no meaning beyond the schema field titles.

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 it returns a 'focused, dependency-aware context slice for a given cell,' which is a specific verb and resource. It implies differentiation from sibling tools like notebook_state (which likely returns full state) and notebook_analyze (analysis), though not explicitly naming 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 such as notebook_state or notebook_analyze. There is no mention of context, prerequisites, or exclusions.

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

notebook_export_scriptC

Export notebook code to a best-effort deterministic Python script.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
include_markdown_as_commentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description must fully disclose behavioral traits. It only mentions 'best-effort deterministic', hinting at unreliability, but omits details like file output behavior, idempotency, or potential 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.

Conciseness4/5

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

The description is a single, concise sentence without redundancy. However, it may be too terse, sacrificing completeness for brevity.

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 simplicity and an output schema, the description covers core purpose but fails to provide sufficient context for an agent to understand its role among siblings or usage nuances.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should explain parameters. It does not describe 'path' (despite being inferable from name) or 'include_markdown_as_comments' (though self-explanatory), leaving the agent without explicit semantic guidance.

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 tool exports notebook code to a Python script with the qualifier 'best-effort deterministic', making its primary purpose distinct from sibling tools like notebook_analyze or notebook_rerun_plan.

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 other sibling tools (e.g., notebook_analyze, notebook_context). The description lacks context for appropriate use cases or alternatives.

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

notebook_rerun_planC

Recommend a rerun plan (best-effort offline) for a focus cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
focus_cell_idYes
strip_outputsNo
include_markdownNo

TDQS

C2.3/5.0
Behavior2/5

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

No annotations provided. The description mentions 'best-effort offline' but does not disclose side effects, authorization needs, or what the plan entails. For a recommendation tool, read-only behavior is implied but not explicit.

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

Conciseness2/5

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

The description is a single sentence but lacks structure. It is too terse, leaving out critical information that could be included without verbosity.

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

Completeness1/5

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

With 4 parameters, no output schema, and no annotations, the description is severely incomplete. It fails to explain what the rerun plan contains, how to interpret results, or any constraints.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not explain any of the four parameters. The agent must rely solely on parameter names and types, which is insufficient for correct invocation.

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 tool recommends a rerun plan for a focus cell, and mentions 'best-effort offline' which adds nuance. However, it does not distinguish from sibling tools like notebook_state or jupyter_execute.

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 implies usage for planning reruns but does not specify prerequisites or contexts.

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

notebook_stateC

Compute best-effort execution state for each cell using execution_count + dependency edges.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
strip_outputsNo
include_markdownNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, so description must cover behavioral traits. It mentions 'best-effort' but does not explain limitations, side effects, or resource usage. Mutation or read-only status is unclear.

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

Conciseness3/5

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

The single sentence is concise and front-loaded. However, it may be too brief for a tool with three parameters and no additional context.

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?

Lacking output schema and parameter details, the description fails to convey what the tool returns or how parameters affect results. Incomplete for effective use.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not explain the purpose or effect of any of the three parameters (path, strip_outputs, include_markdown).

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 tool computes execution state for each cell using execution_count and dependency edges. It distinguishes itself from sibling tools like notebook_analyze or jupyter_execute.

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 such as notebook_analyze or notebook_context. The description does not mention prerequisites or scenarios.

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.

  1. 13 tool updatesv1.5.5
    • First observedjupyter_execute
    • First observedjupyter_execution_cancel
    • First observedjupyter_execution_output
    • First observedjupyter_execution_status
    • First observedjupyter_execution_submit
    • First observedjupyter_get_kernel
    • First observedjupyter_inspect
    • First observedjupyter_list_sessions
    • First observednotebook_analyze
    • First observednotebook_context
    • First observednotebook_export_script
    • First observednotebook_rerun_plan
    • First observednotebook_state

TDQS

C2.4/5.0
Disambiguation4/5

Most tools have distinct purposes (e.g., execute vs. inspect vs. analyze), but jupyter_execute and jupyter_execution_submit could be confused, and jupyter_execution_output overlaps somewhat with jupyter_inspect.

Naming Consistency3/5

Uses two prefixes (jupyter_, notebook_) inconsistently; within jupyter_ group, some are verbs (execute, get_kernel) and others are noun phrases (execution_cancel, execution_output), breaking the pattern.

Tool Count5/5

13 tools is well-scoped for a Jupyter notebook server, covering execution, kernel inspection, session management, and notebook analysis without being overwhelming.

Completeness4/5

Covers core notebook interactions (execute, analyze, export, state) but lacks tools for creating or deleting notebooks/kernels, and no direct session shutdown.

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/akram-side-projects/notebook-mcp'

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