Skip to main content
Glama

🪐 Jupyter MCP Server

专门为AI连接与管理Jupyter Notebook而开发的MCP服务

ChengJiale150 开发

Python License Version mcp-registry

English | 中文

📖 目录

Related MCP server: cursor-notebook-mcp

🎯 项目简介

Jupyter MCP Server 是一个基于 Model Context Protocol (MCP) 的服务,为目前最先进的的AI IDE(如 Cursor) 与CLI工具(如Gemini CLI)提供连接与管理Jupyter Notebook的能力。使得AI能够操作Notebook,进行数据分析、可视化、机器学习等任务。

🤔 为什么需要Jupyter MCP Server

Jupyter Notebook 是数据科学家最常用的工具之一,它提供了一个交互式的环境,使其可以方便地进行数据分析、可视化、机器学习等探索性任务。然而,由于Notebook自身的格式限制,使得其难以像纯文本文件(如Markdown、Python文件)一样被AI直接理解。

现有的提供操作Notebook的工具或MCP服务,要么仅能阅读与编辑Notebook,要么仅能操纵单个Notebook,难以满足同时操纵多个Notebook的复杂需求。此外,大多数工具也不支持多模态输出,无法充分利用目前最先进的多模态大模型(如Gemini 2.5)的强大图文理解能力。

Jupyter MCP Server 就是为了解决这个问题而开发的。它通过MCP协议,向AI提供了管理Jupyter Kernel与Notebook的工具,使其能够操纵多个Notebook进行交互式的任务执行,并输出多模态结果,助力数据科学家提高分析效率。

✨ 关键亮点

  • 🔌 MCP兼容: 能够在任何支持MCP协议的IDE或CLI工具中使用

  • 📚 多Notebook管理: 支持同时管理多个Notebook

  • 🔁 交互式执行: 能够根据Cell的输出自动调整执行策略

  • 📊 多模态输出: 支持输出多模态结果,如文本、图片、表格等

🔧 工具一览

Notebook管理模块

名称

描述

说明

connect_notebook

连接/创建指定路径的Notebook

因为需要启动Kernel,工具执行时间较长(10s~30s)

list_notebook

列出所有目前连接的Notebook

用于查看目前已经连接的Notebook,方便多Notebook任务执行

restart_notebook

重启指定名称的Notebook

清除所有导入包与变量

read_notebook

读取指定名称的Notebook的源内容(不包含输出)

用于查看Notebook的源内容,仅在明确要求时才使用

Cell基本功能模块

名称

描述

说明

list_cell

列出指定名称的Notebook的所有Cell的基本信息

用于定位Cell的索引与作用

read_cell

读取指定名称的Notebook指定索引的Cell内容

支持图像、表格、文本等多种输出

delete_cell

删除指定名称的Notebook指定索引的Cell

insert_cell

在指定名称的Notebook指定索引处上方/下方插入Cell

execute_cell

执行指定名称的Notebook指定索引的Cell

返回Cell的输出结果

overwrite_cell

覆盖指定名称的Notebook指定索引的Cell内容

用于修改Cell内容

Cell高级集成功能模块

名称

描述

说明

append_execute_code_cell

在Notebook末尾添加并执行Code Cell

insert+execute的组合为高频操作,将其组合减少工具的调用次数

execute_temporary_code

执行临时代码块(不存储到Notebook中)

用于进行魔法指令执行、代码片段调试、查看中间变量取值等临时操作

工具的具体内容详见工具文档

🛠️ 快速上手

环境准备

安装Jupyter MCP Server

在安装uv后,直接配置MCP的JSON格式即可,示例如下:

{
    "mcpServers":{
        "Jupyter-MCP-Server":{
            "command": "uvx",
            "args": [
                "better-jupyter-mcp-server"
            ],
            "env": {
                "ALLOW_IMG": "true"
            },
            "transport": "stdio"
        }
    }
}

具体客户端集成详见集成文档

  1. 克隆项目并安装依赖

git clone https://github.com/ChengJiale150/jupyter-mcp-server
cd jupyter-mcp-server
uv sync
  1. (可选)配置config.toml

进入src/config.toml文件,根据需要配置参数(如是否允许返回图片数据)

  1. 启动Jupyter MCP Server

uv run fastmcp run src/main.py

如果成功启动,会输出类似如下信息代表启动成功:

[09/14/25 20:14:59] INFO     Starting MCP server 'Jupyter-MCP-Server' with transport 'stdio'  
  1. 配置标准JSON格式

{
    "mcpServers":{
        "Jupyter-MCP-Server":{
            "command": "uv",
            "args": [
                "run",
                "--directory",
                "your/path/to/jupyter-mcp-server",
                "src/main.py"
            ],
            "env": {},
            "transport": "stdio"
        }
    }
}

具体客户端集成详见集成文档

使用Jupyter MCP Server

在正式使用前,需要连接Jupyter Server,这里介绍如何在本地手动启动Jupyter Server:

  1. 打开终端并激活环境:

打开计算机终端命令行,并激活环境

对于使用conda(Anaconda)的用户,可以使用以下命令激活环境:

conda activate your_environment_name

这里为了方便起见,这里可以直接使用base环境(conda activate base)

然后切换到你当前的项目目录,方便后续的文件操作

cd your/path/to/your/project
  1. 安装必要依赖:

pip uninstall -y pycrdt datalayer_pycrdt
pip install jupyter nbformat datalayer_pycrdt jupyter-collaboration
  1. 启动Jupyter Server:

使用下述命令启动Jupyter Server

jupyter lab

成功启动后会弹出浏览器窗口,你可以在此查看根路径是否为工程目录

  1. 获取认证Token:

使用下述命令获取认证Token

jupyter server list

运行后会输出类似如下信息:

http://localhost:8888/?token=YOUR_TOKEN :: YOUR_PROJECT_PATH

其中YOUR_TOKEN为认证Token

  1. 添加提示词与规则

在正式使用前,你必须添加如下提示词于规则文件中以提供Jupyter MCP Server的必要连接信息:

以下是Jupyter服务器连接参数:
URL = http://localhost:8888
Token = YOUR_TOKEN

此外,推荐在提示词中添加关键Notebook路径信息,方便AI快速定位目标Notebook提高connect_notebook工具的执行效率,可以在Jupyter Lab网页中右键点击目标Notebook文件,选择Copy Path获取相对路径

在提供上述内容后,你就可以开始使用Jupyter MCP Server了!

  1. 安装必要依赖:

pip uninstall -y pycrdt datalayer_pycrdt
pip install jupyter nbformat datalayer_pycrdt jupyter-collaboration
  1. 提供提示词与规则文档:

## Jupyter MCP Server 使用指南

在正式使用Jupyter MCP Server前,你**必须**完成如下步骤:

1. **启动Jupyter Server**:

在当前项目目录中以不阻塞当前终端的方式在命令行终端中输入启动Jupyter Server,例如:
- `Window`: `start jupyter lab`
- `MacOS/Linux`: `nohup jupyter lab &`

2. **获取URL与认证Token**:

使用`jupyter server list`获取URL与认证Token

仅当完成上述步骤后,你才可以使用Jupyter MCP Server

✅ 最佳实践

  • 使用支持多模态输入的大模型(如Gemini 2.5 Pro)进行交互,以充分利用最先进的多模态理解能力

  • 使用支持MCP协议返回图像数据并支持解析的客户端(如Cursor、Gemini CLI等),部分客户端可能不支持该功能

  • 将复杂任务(如数据科学建模)拆分为多个子任务(如数据清洗、特征工程、模型训练、模型评估等),并逐步执行

  • 给出结构清晰的提示词与规则,这里可以参考提示词与规则文档

  • 在提示词中融入专家经验与智慧(如数据清洗、特征工程的技巧),这是AI最缺乏的,也是最需要补充的

  • 尽可能提供丰富的上下文信息(如现有数据集的字段解释,文件路径,详细的任务要求等)

  • 提供Few Shot案例,提供Baseline或已有Workflow作为参考

示例

🤝 贡献指南

我们欢迎社区贡献!如果您想为Jupyter MCP Server项目做出贡献,请:

  1. Fork 本仓库

  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)

  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')

  4. 推送到分支 (git push origin feature/AmazingFeature)

  5. 开启一个 Pull Request

贡献类型

  • 🐛 Bug修复

  • 📝 旧功能完善

  • ✨ 新功能开发

  • 📚 文档改进

  • 🌍 国际化支持

开发帮助文档

🤗 致谢

本项目受到以下项目的帮助,在此表示感谢:

此外,本项目还参考了以下已有Jupyter MCP服务的实现,在此也一并表示感谢:


如果这个项目对您有帮助,请给我们一个 ⭐️

Made with ❤️ by ChengJiale150

Available Tools

12 tools
append_execute_code_cellA

Add a new code cell to the end of a Notebook and immediately execute it. It is highly recommended for replacing the combination of insert_cell and execute_cell for a code cell at the end of the Notebook. It will return the output of the cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoseconds
cell_contentYes
notebook_nameYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that a new cell is added, immediately executed, and the output returned. It does not cover error conditions or asynchronous behavior, but the core behavior is clear.

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?

Three concise sentences, front-loaded with purpose. Every sentence adds value: action, recommendation, return value. No wasted words.

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

Completeness4/5

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

Given moderate complexity and no output schema, the description covers main behavior and return value. It lacks mention of prerequisites (e.g., notebook must exist) but that may be inferred from context. Parameter documentation is weak, but not critically incomplete.

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 only 33% (timeout described as 'seconds'). Description adds no extra meaning to parameters; 'cell_content' and 'notebook_name' rely solely on their names, which are somewhat self-explanatory but lack detail on format or constraints.

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?

Description clearly states it adds a new code cell to the end and immediately executes it. It uses specific verbs ('Add', 'execute') and resource ('code cell'), and distinguishes from siblings like 'insert_cell' and 'execute_cell'.

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

Usage Guidelines5/5

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

Explicitly recommends using this tool instead of combining 'insert_cell' and 'execute_cell' for adding a code cell at the end of a notebook. This provides clear when-to-use guidance and compares to alternatives.

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

connect_notebookA

Connect to a notebook and corresponding kernel. It is the FIRST STEP before ANY subsequent operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo`connect`: connect to an existing notebook; `create`: create a new notebook (not exist) and connect; `reconnect`: reconnect to an existing notebookconnect
tokenYesJupyter authentication token
server_urlYesJupyter server URL (e.g., http://localhost:8888)
notebook_nameYesUnique identifier, used to reference this notebook in subsequent operations
notebook_pathYesPath to the notebook file relative to Jupyter server root (e.g., './analysis.ipynb')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must bear the full burden. It states the tool connects to a notebook and kernel but does not disclose behavioral details such as whether it establishes a session, overwrites previous connections, requires authentication (beyond token in schema), or what happens on failure. With no annotations, a score of 3 is appropriate as the description provides basic purpose but lacks deeper behavioral context.

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 with two sentences. The first sentence states the action, and the second emphasizes its importance as a prerequisite. No extraneous words or repetition. Every sentence earns its place.

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

Completeness4/5

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

Given the tool has 5 parameters, an output schema, and 11 sibling tools, the description adequately covers the core purpose and usage sequence. However, it could be more complete by explaining the lifecycle of connections (e.g., can only one notebook be connected at a time?) and the semantics of the three modes (connect/create/reconnect) beyond what is in the schema. The output schema exists, so return values need not be described. Score 4 because it is mostly complete but misses some behavioral 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 input schema has 100% description coverage, so each parameter is already clearly documented. The description adds no additional semantic information beyond what the schema provides. The baseline of 3 is appropriate as the description does not need to repeat schema information.

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 connects to a notebook and kernel. It also distinguishes itself from siblings by explicitly labeling this as the 'FIRST STEP' before any subsequent operations, which are all listed as sibling tools (e.g., execute_cell, delete_cell). This provides clear differentiation.

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

Usage Guidelines4/5

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

The description explicitly states this is the first step before any subsequent operations, providing clear usage context. However, it does not specify when NOT to use this tool or what alternatives exist (though siblings are all after-connection steps). The input schema details mode options (connect/create/reconnect) but the description could be more explicit about when each mode is appropriate.

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

delete_cellA

Delete a specific cell. When deleting many cells, MUST delete them in descending order of their index.

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_indexYesCell index(0-based)
notebook_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It correctly indicates the tool performs deletion (a mutation) and provides a crucial order constraint for bulk deletions. However, it lacks details about error handling (e.g., when cell_index is invalid), reversibility, or index shifting after deletion.

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, consisting of two sentences with no redundant information. It front-loads the primary action and adds a critical usage rule in the second sentence.

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?

Given the absence of annotations, the description covers the main action and a key usage rule. However, it omits details like prerequisites (notebook must exist, cell must exist), return value (output schema exists but not described), and error behavior. For a simple deletion tool, it is adequate but not thorough.

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 coverage is 50% (only cell_index has a description). The description adds no additional meaning for parameters; it does not clarify notebook_name or further explain cell_index beyond what the schema provides. The mention of 'descending order' relates to usage, not parameter semantics.

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 'Delete a specific cell,' which is a specific verb+resource combination. It also distinguishes itself from sibling tools like list_cell, read_cell, and insert_cell by focusing solely on deletion.

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

Usage Guidelines4/5

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

The description provides an explicit guideline: 'When deleting many cells, MUST delete them in descending order of their index.' This is helpful for correct usage. However, it does not explicitly state when to use this tool versus alternatives (e.g., overwrite_cell), but the purpose itself implies deletion is the primary use case.

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 with a timeout. It will return the output of the cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoseconds
cell_indexYesCell index(0-based)
notebook_nameYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, description carries full burden. It mentions timeout and output but fails to disclose behavior on timeout (e.g., error handling), whether execution is blocking, or any side effects on notebook state.

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?

Two concise sentences with clear front-loading. No verbose or redundant content; 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?

Despite simple tool, missing details on return format, error behavior, and prerequisites. No output schema exists, so description should compensate but does not.

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 coverage is 67%; description adds no extra explanation for 'notebook_name' and 'cell_index' beyond what schema provides. The timeout parameter is only noted as 'seconds' in schema, and description does not enrich that.

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?

Description clearly states action (execute) and resource (specific cell) with timeout and output return. However, it does not differentiate from sibling tools like 'append_execute_code_cell' or 'execute_temporary_code', which have similar purposes.

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 explicit guidance on when to use this tool versus alternatives. The description implies use for executing a cell and obtaining output, but lacks when-not or prerequisite context.

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

execute_temporary_codeA

Execute a temporary code block (not saved to the Notebook) and will return the output.

It will recommend to use in following cases:

  1. Execute Jupyter magic commands(e.g., %timeit, %pip install xxx)

  2. Debug code

  3. View intermediate variable values(e.g., print(xxx), df.head())

  4. Perform temporary statistical calculations(e.g., np.mean(df['xxx']))

DO NOT USE IN THE FOLLOWING CASES:

  1. Import new modules and perform variable assignments that affect subsequent Notebook execution

  2. Run code that requires a long time to run

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_contentYes
notebook_nameYes

TDQS

A3.9/5.0
Behavior4/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 discloses that code is temporary (not saved) and returns output. The prohibitions imply that side effects like variable assignments do not persist, but this could be more explicit. Overall, the behavior is well communicated despite minor ambiguity.

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 well-structured with a clear opening sentence, a list of use cases, and a separate 'DO NOT USE' section. It is fairly concise, though slightly verbose with bullet lists. Front-loads the key behavior.

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?

Given no annotations, no output schema, and 0% parameter coverage, the description provides adequate purpose and usage guidance. However, it lacks parameter details and does not describe the output format beyond 'return the output'. It sufficiently differentiates from siblings but misses some contextual details.

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%, and the description does not add any parameter-level information beyond field names. It does not explain what 'notebook_name' refers to or what format 'cell_content' expects. The description fails to compensate for the lack of schema descriptions.

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 'Execute a temporary code block (not saved to the Notebook)' with verb 'execute' and resource 'temporary code block'. It explicitly differentiates from siblings like 'execute_cell' which saves to the notebook, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use cases (Jupyter magic, debugging, intermediate values, temporary stats) and when-not-to-use cases (imports affecting notebook, long-running code). This guides the agent effectively on appropriate use versus alternatives.

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

insert_cellB

Insert a cell at the specified index. When inserting many cells, MUST insert them in ascending order of their index.

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_typeYes
cell_indexYesCell index to insert at (0-based)
cell_contentYes
notebook_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It discloses the ordering constraint but omits details like permissions, error handling, or idempotence.

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?

Two sentences with no fluff. Purpose stated first, then additional constraint. Highly efficient.

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?

Output schema exists, but description does not explain insertion behavior (e.g., index shifting) or return value. Adequate but not comprehensive for a mutation tool.

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 coverage is low (25%) and description adds no parameter details beyond the schema. The ordering constraint is not parameter-specific.

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?

Clearly states 'Insert a cell at the specified index' with a specific verb and resource. While it does not explicitly differentiate from siblings, the action is unambiguous.

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?

Provides explicit guidance when inserting many cells (ascending order). However, lacks when-to-use vs alternatives or when not to use this tool.

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

list_cellA

List the basic information of cells. It will return Index, Type, Execution Count and First Line of the Cell. It will be used to quickly overview the structure and current status of the Notebook or locate the index of specific cells for following operations(e.g. delete, insert).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of cells to return (0 means no limit)
start_indexNoStarting cell index (0-based) for pagination
notebook_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/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 discloses the tool returns specific fields and is used for listing, which reasonably implies a read-only operation. No contradiction or missing safety context for a listing 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 concise with two sentences, front-loading the purpose and then detailing use cases. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given the tool has an output schema (not shown but mentioned), the description covers the purpose, return fields, and use cases. Parameters are adequately addressed, and the simplicity of the operation means minimal extra context is needed. It is complete for a listing tool.

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 67%, with only limit and start_index having descriptions; notebook_name lacks description. The tool description adds general context but does not elaborate on parameter meanings or usage beyond the schema, so it does not significantly compensate for the missing schema coverage.

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 lists basic information of cells and specifies the return fields (Index, Type, Execution Count, First Line). It distinguishes itself from siblings like read_cell and delete_cell by focusing on overview and indexing.

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

Usage Guidelines4/5

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

The description provides context for when to use the tool: to overview structure or locate cell indices for operations like delete or insert. It implies use for navigation but does not explicitly exclude alternatives or state when not to use.

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

list_notebookA

List all currently connected Notebooks. It will return unique name, Jupyter URL and Path of all connected Notebooks

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are present, so the description must carry the burden of behavioral disclosure. It states the action and return fields but does not mention side effects, required permissions, or performance traits such as caching or real-time data retrieval.

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 two sentences long, front-loading the action and output. Every word adds value, with no redundancy or unnecessary detail.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, output schema exists), the description covers the essential purpose and return values. It lacks details on whether the list is real-time or cached, but this is a minor gap for a basic list operation.

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?

There are zero parameters in the input schema, so no parameter documentation is needed. The description correctly avoids any parameter-related information, achieving a baseline of 4 for no-parameter tools.

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 lists all currently connected notebooks and specifies the returned fields (name, Jupyter URL, Path). This distinguishes it from sibling tools like 'connect_notebook' or 'read_notebook'.

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 obtaining the list of connected notebooks but provides no explicit guidance on when to use versus alternatives like 'connect_notebook' or 'read_notebook'. 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.

overwrite_cellB

Overwrite the content of a specific cell It will return a comparison (diff style, + for new lines, - for deleted lines) of the cell's content.

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_indexYesCell index(0-based)
cell_contentYes
notebook_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description partly compensates by disclosing the diff return format, but lacks details on error scenarios, side effects, or the tool's destructive nature.

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?

Two sentences, front-loaded with the core action; concise and to the point, though the second sentence could be integrated for even tighter structure.

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?

The description covers the basic action and return format, but omits prerequisites (cell must exist), error handling, and does not leverage the output schema for further completeness.

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?

The description mentions notebook_name and cell_index in passing but adds no semantic detail beyond the input schema; schema coverage is low (33%), and the description does not compensate adequately.

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 overwrites cell content and returns a diff, but does not explicitly distinguish from sibling tools like insert_cell or delete_cell, leaving some ambiguity for selection.

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 (e.g., insert_cell, execute_cell) is provided; the description only states the action without usage context.

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

read_cellB

Read the detailed content of a specific cell. It will return the source code, execution count and output of the cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
cell_indexYesCell index(0-based)
notebook_nameYes
return_outputNoWhether to return output

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description must cover behavior. It mentions return fields but does not disclose side effects (likely none), prerequisites (e.g., notebook must exist), or whether operation is idempotent. Lacks details on behavior beyond outputs.

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?

Two sentences, front-loaded with purpose, no unnecessary words. Efficiently communicates key information.

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

Completeness4/5

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

For a read tool with no output schema and no annotations, description adequately states what is returned. Could mention error conditions (invalid cell_index, missing notebook) but overall sufficient for typical 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?

Schema has 67% description coverage. Description adds 'source code, execution count and output' which relates to return_output parameter but does not elaborate on notebook_name or cell_index beyond schema. Baseline score appropriate as description adds minimal extra meaning.

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 reads a specific cell and returns source code, execution count, and output. It differentiates from sibling tools like execute_cell or delete_cell by focusing on non-modifying read operation.

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 vs alternatives. With 11 sibling tools, explicit context about when to choose read_cell over list_cell or execute_cell would be helpful.

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

read_notebookA

Read the source content (without output) of a connected Notebook. It will return the formatted content of the Notebook (including Index, Cell Type, Execution Count and Full Source Content). ONLY used when the user explicitly instructs to read the full content of the Notebook.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of cells to return (0 means no limit)
start_indexNoStarting cell index (0-based) for pagination
notebook_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the tool reads source content without output (implying no side effects), and describes the return format. It does not mention prerequisites like the notebook needing to be connected, which is partially addressed by the phrase 'connected Notebook'.

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 consists of two short sentences: one stating the purpose and output, and one giving the usage condition. It is front-loaded and concisely provides essential information with no unnecessary text.

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?

An output schema exists, so return values are covered. However, the description omits the prerequisite that the notebook must be connected via a sibling tool (e.g., connect_notebook). For a tool with pagination parameters, it does not explain how limit and start_index interact, though these are documented in the schema. The description is adequate but not fully comprehensive.

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 67% (limit and start_index have descriptions, notebook_name only has title). The tool description does not add extra meaning to parameters beyond the schema. Given coverage above 50%, baseline score of 3 is appropriate.

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 'Read the source content (without output) of a connected Notebook' and specifies the returned content, including Index, Cell Type, Execution Count, and Full Source Content. This verb+resource combination effectively distinguishes it from the sibling 'read_cell' which reads a single cell.

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

Usage Guidelines4/5

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

The phrase 'ONLY used when the user explicitly instructs to read the full content of the Notebook' provides a clear condition for use. It does not explicitly mention when not to use it or alternatives, but the conditional statement is sufficient context for an agent to select the tool appropriately.

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

restart_notebookA

Restart the kernel of a specified Notebook, clear all imported packages and variables

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description must disclose behavior. It mentions clearing packages and variables, but omits potential side effects like unsaved data loss, impact on running executions, or authentication requirements. The presence of an output schema is not leveraged.

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?

A single, clear sentence that gets straight to the point with no extraneous words. Front-loaded with the primary action.

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?

Given the low parameter count and presence of output schema, the description is adequate but lacks details on prerequisites (e.g., notebook must be connected), return value, and when to use. Leaves some gaps for an agent.

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?

With 0% schema description coverage, the description should compensate. It only says 'specified Notebook' without adding format, example, or context for the single required parameter 'notebook_name'. No value beyond the schema.

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 action: 'Restart the kernel' and the resource: 'a specified Notebook', and specifies what it does: 'clear all imported packages and variables'. It effectively distinguishes from sibling tools like connect_notebook or execute_cell.

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 clearing state but does not explicitly state when to use this tool versus alternatives (e.g., execute_temporary_code for isolated code, or read_notebook for inspection). No when-not-to-use guidance.

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.

  1. 12 tool updatesv0.1.0
    • First observedappend_execute_code_cell
    • First observedconnect_notebook
    • First observeddelete_cell
    • First observedexecute_cell
    • First observedexecute_temporary_code
    • First observedinsert_cell
    • First observedlist_cell
    • First observedlist_notebook
    • First observedoverwrite_cell
    • First observedread_cell
    • First observedread_notebook
    • First observedrestart_notebook

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a clearly distinct purpose. For example, append_execute_code_cell versus execute_cell differ in that one creates a new cell before executing, while execute_cell runs an existing one. execute_temporary_code is separate for temporary code. All other tools operate on different aspects (connect, list, read, write, delete, etc.), leaving no ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case, such as connect_notebook, list_cell, overwrite_cell, restart_notebook. The compound verb in append_execute_code_cell is still systematic and matches the pattern.

Tool Count5/5

With 12 tools, the set is well-scoped for a Jupyter notebook interaction server. Each tool serves a distinct operation (connect, list, read, write, execute, etc.) without unnecessary duplication or excessive granularity.

Completeness4/5

The tools cover core workflows: connecting, listing, reading, executing, inserting, deleting, overwriting cells, and restarting kernels. Minor gaps exist, such as no explicit save tool or ability to create a new notebook, but these are non-critical for typical agent interactions.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Control Protocol (MCP) server that enables remote programmatic control of Jupyter notebooks, allowing AI assistants and applications to create, edit, and execute notebook cells via SSE protocol.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI agents to create, read, edit, and manage Jupyter Notebook files programmatically, overcoming limitations in Cursor's native notebook support.
    223 PyPI
    161
    -