You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor: drop jupyter-compute from the Jupyter MCP integration
`aexp install --with-jupyter` wired two near-duplicate Jupyter MCP
servers into a consumer's `.mcp.json`: `jupyter` (uvx jupyter-mcp-server,
MCP_SERVER mode, runtime-retargetable via `connect_to_jupyter`) and
`jupyter-compute` (an npx mcp-remote proxy to a fixed cluster `/mcp`
endpoint, JUPYTER_SERVER mode).
`jupyter-compute` could not retarget to a different node without a
config edit + MCP restart, which breaks the multi-node workflow the
slash commands are built around. It was otherwise a near-duplicate of
`jupyter` and a standing "which server do I use?" confusion surface.
Reduce the integration to a single server, `jupyter`:
- install.py: `_jupyter_mcp_entries()` emits only the `jupyter` entry;
the additive merge no longer special-cases `jupyter-compute`.
- Slash commands `/aexp-jupyter-iterate` and `/aexp-promote-nb`,
`AGENTS.md`, and `docs/setup/jupyter-mcp.md` retargeted to the
single-server `mcp__jupyter__*` tool family.
- The two `jupyter-mcp-tools` UI tools are lost: `notebook_run-all-cells`
was already 404-broken upstream; `notebook_get-selected-cell` is gone,
so the affected commands now ask the user for the notebook/cell or use
`aexp.jupyter.init().attached_notebooks`.
The cluster-side `[jupyter]` pip extra and `aexp jupyter setup`
extension recipe are intentionally unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -124,7 +124,7 @@ The design bet: agents already know how to run experiments. What they need is a
124
124
|**Slash commands**| Artifact creation: `/aexp-new-hypothesis`, `/aexp-new-experiment`, `/aexp-new-run`. Threads (forward-looking research concerns broader than a hypothesis): `/aexp-new-thread`, `/aexp-list-threads`, `/aexp-show-thread`, `/aexp-close-thread`. Finding creation (pick by what the finding cites): `/aexp-finding-from-run`, `/aexp-finding-from-batch`, `/aexp-finding-placeholder`. Read / inspect: `/aexp-show-run`, `/aexp-show-batch`, `/aexp-list-runs`, `/aexp-status`, `/aexp-validate`. Queue: `/aexp-queue-add`, `/aexp-queue-list`, `/aexp-queue-materialize`, `/aexp-queue-stop`. Notebook lifecycle (when `--with-jupyter` is configured): `/aexp-jupyter-iterate` (test loop), `/aexp-promote-nb` (promote working cells into a tracked-run script). Sandbox scaffolding: `/aexp-new-sandbox` (create an exploratory notebook subdir under `notebooks/_sandbox/`). 22 total. |
125
125
|**CLI**| 22 verbs covering install, artifact creation (H/E/F/T + thread lifecycle), run lifecycle, batch queries, tracker binding, validation, offline sync, optional `jupyter-setup`, the `queue` subcommand group (add/list/remove/stop/clear/materialize/run) + `run-queued`, and sandbox scaffolding (`new-sandbox`). See `aexp --help` for the full list. Python API is a one-line `from aexp import ...`. |
126
126
|**Typed JSON contracts**| Pydantic models (`RunLink`, `BatchSelector`, `Issue`, …) back the schema; MCP tools and CLI return the same shapes. |
127
-
|**Jupyter MCP integration** (optional, `[jupyter]` extra) |`aexp install --with-jupyter` adds `jupyter` and `jupyter-compute` MCP servers to `.mcp.json` so Claude can read/edit/execute cells in a remote JupyterLab through an existing SSH tunnel — no agent SSH required. `aexp jupyter-setup` applies the verified Jupyter Server extension state on the cluster (disable Datalayer experiments that conflict with the mainstream stack). After install, see `docs/setup/jupyter-mcp.md` for cluster-side recipe + investigation log. The `/aexp-jupyter-iterate` slash command guides the read → propose → execute loop. |
127
+
|**Jupyter MCP integration** (optional, `[jupyter]` extra) |`aexp install --with-jupyter` adds the `jupyter` MCP server to `.mcp.json` so Claude can read/edit/execute cells in a remote JupyterLab through an existing SSH tunnel — no agent SSH required. The target Jupyter is set per-session at runtime via `connect_to_jupyter`, so one entry retargets to any node. `aexp jupyter-setup` applies the verified Jupyter Server extension state on the cluster (disable Datalayer experiments that conflict with the mainstream stack). After install, see `docs/setup/jupyter-mcp.md` for cluster-side recipe + investigation log. The `/aexp-jupyter-iterate` slash command guides the read → propose → execute loop. |
0 commit comments