Skip to content

Commit 25281c6

Browse files
ianhiclaude
andcommitted
Update dev and user-facing docs for tool consolidation
- TESTING.md: move_cells → copy_cells(delete_source=true), get_kernel_variables → kernel_variables - COMPARISON.md: reflect kernel management tools, remove outdated "more kernel tools" advantage - CHANGELOG.md: add [Unreleased] section documenting 55→41 consolidation - docs changelog: same unreleased section for user-facing docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent cd725f6 commit 25281c6

File tree

4 files changed

+53
-8
lines changed

4 files changed

+53
-8
lines changed

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,32 @@
22

33
All notable changes to the jupyterlab-collab-mcp.
44

5+
## [Unreleased]
6+
7+
### Changed
8+
- **Consolidated 55 tools down to 41** — reduced schema token overhead by merging related tools:
9+
- `insert_and_execute`/`update_and_execute``insert_cell(execute=true)`/`update_cell(execute=true)`
10+
- `delete_cells``delete_cell` (now accepts `indices`, `cell_ids`, `start_index`/`end_index`)
11+
- `move_cells``copy_cells(delete_source=true)`
12+
- `get_cell_metadata`/`set_cell_metadata``cell_metadata` (omit `metadata` to GET, provide to SET)
13+
- `get_notebook_metadata`/`set_notebook_metadata``notebook_metadata` (same pattern)
14+
- `add_cell_tags`/`remove_cell_tags``cell_tags(action="add"/"remove")`
15+
- `lock_cells`/`unlock_cells`/`list_locks``cell_locks(action="acquire"/"release"/"list")`
16+
- `snapshot_notebook`/`restore_snapshot`/`list_snapshots`/`diff_snapshot``snapshot(action="save"/"restore"/"list"/"diff")`
17+
- `get_kernel_status`/`interrupt_kernel`/`restart_kernel``kernel(action="status"/"interrupt"/"restart")`
18+
- `get_kernel_variables`/`inspect_variable``kernel_variables` (provide `names` to inspect)
19+
- Removed `insertCell` parameter from `execute_code` — use `insert_cell(execute=true)` instead
20+
- Removed `max_output_lines`, `output_tail`, `output_grep` from execute tools — use `filter_output` instead
21+
22+
### Added
23+
- `filter_output` tool — post-process cached execution results with grep, head, tail, max_lines
24+
- `show_diff` parameter on `update_cell` for inline diff display
25+
- Execution result caching for `filter_output` access to full unfiltered output
26+
27+
### Fixed
28+
- Batch delete (`delete_cell` with indices/range) now records change history for `recover_cell`
29+
- Cross-notebook `copy_cells` response clarifies that returned IDs are new destination cell IDs
30+
531
## [0.8.0] - 2025-02-11
632

733
### Added

COMPARISON.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ This document compares our implementation with the existing [datalayer/jupyter-m
1515
| Multi-notebook | Implicit (by path) | Explicit `use_notebook`/`unuse_notebook` |
1616
| File browser | `list_files` | `list_files` |
1717
| Open/create notebooks | `open_notebook`, `create_notebook` | Similar |
18-
| Kernel management | No | `list_kernels`, `restart_notebook` |
18+
| Kernel management | `kernel` (status/interrupt/restart), `kernel_variables` | `list_kernels`, `restart_notebook` |
1919
| Output filtering | `output_format`, `cell_type` | `response_format` (brief/detailed) |
2020
| Streaming execution | No | Yes (`stream` flag) |
2121
| JupyterLab commands | No | `run-all-cells`, `get-selected-cell` |
@@ -86,11 +86,7 @@ They have `response_format` (brief/detailed) but less granular control.
8686
- Better for team/production deployments
8787
- Survives client disconnects
8888

89-
### 2. More Kernel Tools
90-
- `list_kernels` - See available kernels
91-
- `restart_notebook` - Restart kernel without reconnecting
92-
93-
### 3. Streaming Execution
89+
### 2. Streaming Execution
9490
```python
9591
execute_cell(cell_index, stream=True, progress_interval=1.0)
9692
```

TESTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
When testing multi-agent collaboration on notebooks, use a team of 4+ agents working simultaneously. The test should exercise:
44

55
1. **Cell ID stability**: Agents use `cell_id` (not indices) for all operations. One agent inserting cells mid-notebook must not break another agent's references.
6-
2. **Cross-notebook operations**: Agents work across multiple notebooks using `copy_cells` and `move_cells`. E.g., one agent builds a data pipeline notebook while another builds a visualization notebook, and they share cells between them.
6+
2. **Cross-notebook operations**: Agents work across multiple notebooks using `copy_cells` (and `copy_cells` with `delete_source=true` for moves). E.g., one agent builds a data pipeline notebook while another builds a visualization notebook, and they share cells between them.
77
3. **Execute range**: Agents use `execute_range` to run multi-cell sections, not just single cells.
88
4. **Multi-plot cells**: Include cells that produce multiple matplotlib figures (subplots, figure galleries) to stress-test `max_images`/`include_images` context management. Agents should use `max_images=2` or `include_images=false` for plot-heavy cells to conserve context.
99
5. **Concurrent inserts**: Multiple agents inserting cells in the same notebook simultaneously — cell IDs prevent index collisions.
@@ -16,7 +16,7 @@ The team lead acts as a **scientist/observer**, not a manager:
1616
- **Observe**: Monitor the change log and notebook state for high-level issues
1717
- **Don't micromanage**: Let agents coordinate organically through messaging and kernel variable polling. Don't direct traffic, assign work to idle agents, or prevent conflicts — conflicts are valuable for stress testing
1818
- **Intervene only for systemic issues**: e.g., a shared kernel crash, a tool bug blocking all agents, or a fundamental misunderstanding of the task
19-
- **Avoid rigid dependency graphs**: Use `blockedBy` sparingly or not at all. Let agents discover data availability themselves via `get_kernel_variables` and communicate through messages. Organic coordination surfaces real collaboration pain points that artificial sequencing hides.
19+
- **Avoid rigid dependency graphs**: Use `blockedBy` sparingly or not at all. Let agents discover data availability themselves via `kernel_variables` and communicate through messages. Organic coordination surfaces real collaboration pain points that artificial sequencing hides.
2020

2121
## Test Phases
2222

docs/src/content/docs/changelog.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,29 @@ description: Version history for jupyterlab-collab-mcp.
55

66
All notable changes to the jupyterlab-collab-mcp.
77

8+
## [Unreleased]
9+
10+
### Changed
11+
- **Consolidated 55 tools down to 41** — reduced schema token overhead by merging related tools:
12+
- `insert_and_execute`/`update_and_execute``insert_cell(execute=true)`/`update_cell(execute=true)`
13+
- `delete_cells``delete_cell` (now accepts `indices`, `cell_ids`, `start_index`/`end_index`)
14+
- `move_cells``copy_cells(delete_source=true)`
15+
- `get/set_cell_metadata``cell_metadata`, `get/set_notebook_metadata``notebook_metadata`
16+
- `add/remove_cell_tags``cell_tags(action="add"/"remove")`
17+
- `lock/unlock/list_locks``cell_locks(action="acquire"/"release"/"list")`
18+
- 4 snapshot tools → `snapshot(action="save"/"restore"/"list"/"diff")`
19+
- 3 kernel tools → `kernel(action="status"/"interrupt"/"restart")`
20+
- `get_kernel_variables`/`inspect_variable``kernel_variables`
21+
22+
### Added
23+
- `filter_output` tool — post-process cached execution results with grep, head, tail
24+
- `show_diff` parameter on `update_cell`
25+
- Execution result caching
26+
27+
### Fixed
28+
- Batch delete now records change history for `recover_cell`
29+
- Cross-notebook `copy_cells` clarifies destination cell IDs
30+
831
## [0.8.0] - 2025-02-11
932

1033
### Added

0 commit comments

Comments
 (0)