ipynb-mcp
Provides tools for managing and executing local Jupyter notebooks, including reading, adding, editing, and running cells, as well as restarting the notebook kernel.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ipynb-mcpAdd a code cell to my notebook that prints 'hello' and run it."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ipynb-mcp
ローカルの Jupyter Notebook (.ipynb) にセルを追加・編集し、ノートブックで指定されたカーネル上で単一セルを実行する小さな stdio MCP サーバーです。
セットアップ
Python 3.10 以上と uv を使います。
uv syncipykernel は依存関係に含まれるため、通常はカーネルの追加インストールは不要です。
対象ノートブックの metadata.kernelspec.name が設定されていれば、そのカーネルを使います。未設定の場合は IPYNB_MCP_DEFAULT_KERNEL、次に python3、最後にインストール済みカーネルの名前順で先頭を選びます。
Related MCP server: mcp-server-jupyter
MCP クライアントへの登録
クライアントからこのコマンドを stdio MCP サーバーとして起動するよう設定します。
{
"mcpServers": {
"jupyter-notebook": {
"command": "uv",
"args": [
"--directory",
"C:\\programing\\ipynb-mcp",
"run",
"ipynb-mcp"
]
}
}
}ツール
notebook_info(path): セル一覧とカーネル情報を取得read_cell(path, index): セル内容を取得add_cell(path, source, cell_type="code", index=null): セルを追加。ファイルがなければ新規作成edit_cell(path, index, source, cell_type=null): セル内容と任意で種類を変更run_cell(path, index, timeout_seconds=120): コードセルを実行し、出力をノートブックへ保存restart_kernel(path): カーネルを再起動して変数などの状態を消去
セル番号はすべて 0 始まりです。カーネルはノートブックごとにサーバープロセス内で維持されるため、セル間で変数を引き継げます。サーバーを終了するとカーネルも終了します。
開発時の確認
uv run pytestAvailable Tools
6 toolsadd_cellA
Add a cell. Append when index is omitted. Creates a missing notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| index | No | ||
| source | Yes | ||
| cell_type | No | code |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It usefully discloses append-when-index-omitted behavior and automatic notebook creation. However, it omits other important behavior such as exact insertion semantics when index is provided and any side effects beyond notebook creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. 'Add a cell' immediately conveys the core action, followed by two high-value behavioral notes. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and four parameters, the description is too sparse to be fully actionable. It does not explain what path refers to, what source should contain, or how cell_type choices affect behavior. The output schema may cover return values, but parameter semantics remain incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It only clarifies the index parameter ('Append when index is omitted'). It does not explain path, source, or cell_type, leaving required parameters poorly specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Add a cell.' This clearly distinguishes it from sibling tools like read_cell, edit_cell, run_cell, and restart_kernel. It also adds scope by noting append behavior and notebook creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for adding cells to notebooks, and the mention of creating a missing notebook gives a use case. However, it does not explicitly state when to prefer this over edit_cell or other sibling tools, nor does it give exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_cellB
Replace a cell's source and optionally its type.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| index | Yes | ||
| source | Yes | ||
| cell_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of describing behavior. It communicates that source and optionally type are overwritten, but it does not disclose side effects such as whether execution state or outputs are affected, whether changes persist, or what happens if an invalid type is supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. Every one of its eight words adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a schema with types, enums, and defaults, the total definition is thin for a mutating tool with zero annotations: the path/index semantics and usage conditions are left implicit, and no behavioral context is added beyond the core action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It adds meaning for 'source' and 'cell_type' but leaves 'path' and 'index' entirely unexplained, and it never states how the target cell is identified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb/resource pair: 'Replace a cell's source and optionally its type.' This clearly differentiates edit_cell from siblings like add_cell, read_cell, and run_cell.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use edit_cell rather than add_cell, read_cell, or run_cell, nor any stated prerequisites. The intended usage is only implied by the verb 'Replace'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_infoA
Return notebook metadata and compact summaries of all cells.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. 'Return' signals a read-only operation and 'compact summaries' gives some idea of the response style, but side effects, access requirements, and summary truncation behavior are not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states exactly what the tool returns. There is no filler or repeated schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has one parameter, and an output schema exists, so the description does not need to enumerate return fields. It lacks only an explicit alternative-routing note, but for a low-complexity info tool this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate, but it does not explain the 'path' parameter. The word 'notebook' in the description implies path points to a notebook, but the meaning and expected format are left to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and names a clear resource ('notebook metadata and compact summaries of all cells'). This distinguishes it from the cell-level siblings (read_cell, add_cell, edit_cell) because it is the notebook-level overview tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool is useful: when an agent needs notebook-level metadata or a summary of all cells. However, it does not explicitly state when to prefer it over siblings such as read_cell or add_cell, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_cellA
Read one cell by its zero-based index, including outputs for code cells.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of signaling behavior. The word 'Read' indicates a non-destructive operation, and 'including outputs for code cells' tells the agent that stored code cell outputs are part of the result. It does not describe error behavior for invalid indexes, but this is acceptable for a simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action, the target resource, and the key behavioral detail about code cell outputs. There is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters and an output schema available, the description covers the essential call semantics and the notable output behavior. The main residual gap is the unstated role of `path`, which prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The phrase 'zero-based index' adds meaningful semantics to the `index` parameter, which is valuable given 0% schema description coverage. However, `path` is left unexplained, so an agent must infer whether it refers to a notebook path, a file path, or something else.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Read'), a specific resource ('one cell'), and a precise addressing scheme ('zero-based index'). It also notes that outputs are included for code cells, which helps distinguish it from mutation siblings like add_cell, edit_cell, and run_cell.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read verb plus sibling names implies this is the non-mutating lookup counterpart to add_cell/edit_cell/run_cell, but the description never explicitly says when to prefer read_cell over notebook_info or when not to use it. Usage context is implied rather than clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_kernelA
Restart the notebook's kernel, clearing all in-memory variables.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 explicitly discloses the key destructive side effect: clearing all in-memory variables. It does not mention potential interruption of running code, but the main behavioral trait is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence communicates the action and outcome immediately with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The required 'path' parameter is completely undocumented, which is a significant gap for a tool with only one parameter. The description also provides no prerequisites or exclusions, leaving the tool under-specified despite its apparent simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 explain the required 'path' parameter at all. An agent cannot tell whether 'path' refers to the notebook path, kernel identifier, or server endpoint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Restart') on a specific resource ('the notebook's kernel') and names the consequence ('clearing all in-memory variables'). This clearly distinguishes it from sibling tools that operate on cells.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the appropriate use case: reset the kernel state when in-memory variables need clearing. It does not explicitly mention when not to use it or name alternatives, but the context is clear enough given the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_cellB
Execute one code cell in the notebook's persistent default kernel and save outputs.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| index | Yes | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It does reveal an important behavioral trait—execution occurs in a persistent default kernel, implying state carries across calls—and mentions that outputs are saved. However, it omits side effects like arbitrary code execution risk, timeout behavior, or how failures affect kernel state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word earns its place: it names the action, the resource, the execution context, and the persistence side effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description still misses critical context: what path/index identify, timeout semantics, and the side effects of running code in a persistent kernel. It is too sparse to fully support correct invocation for a stateful execution tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description offers no explanation of path, index, or timeout_seconds. The agent must infer from parameter names alone, which is insufficient for a 3-parameter tool with no enums or detailed schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Execute') and resource ('one code cell'), and adds distinguishing qualifiers: the notebook's persistent default kernel and saving outputs. This clearly separates it from sibling tools like read_cell, edit_cell, and restart_kernel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by its action wording, but it gives no explicit conditions or alternatives. It does not say when to prefer restart_kernel, edit_cell, or read_cell, leaving usage guidance to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct operation: reading metadata, reading a cell, adding, editing, running, or restarting the kernel. There is minimal overlap and an agent can clearly select the right tool for the intended action.
Most tools follow a clear verb_noun pattern: read_cell, add_cell, edit_cell, run_cell, restart_kernel. notebook_info is the only slight deviation, being noun_noun rather than get_notebook_info, but it remains readable and consistent with the overall style.
Six tools is a well-scoped set for notebook manipulation. Each tool serves a clear and necessary purpose without unnecessary bloat.
The core lifecycle of reading, adding, editing, and executing cells is covered, and restart_kernel handles execution-state resets. However, a delete_cell operation is missing, which is a notable gap for editing workflows, and there is no way to reorder cells.
Maintenance
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
Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.
System-of-record notebook for AI coding agents: pages, datastores, tasks, skills over MCP.
Manage files and folders directly from your workspace. Read and write files, list directories, cre…
Interact with your HackMD notes and teams seamlessly. Manage your notes, view reading history, and…
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables inspection and editing of Jupyter notebook files (.ipynb) through tools for reading, adding, updating, deleting, moving, and converting cells while preserving metadata.1316MIT
- AlicenseAqualityCmaintenanceEnables programmatic interaction with Jupyter notebooks, allowing reading, editing, and executing cells via Claude.632MIT
- AlicenseAqualityCmaintenanceEnables AI agents to create, read, edit, and execute Jupyter notebook cells, manage kernels, and connect to remote Jupyter servers.21MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to execute Jupyter notebook cells with persistent kernel state, output persistence, and structured JSON control surface.2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/YmSaki/ipynb-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server