refactor: drop jupyter-compute from the Jupyter MCP integration#20
Merged
Conversation
`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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
aexp install --with-jupyterwired two near-duplicate Jupyter MCP servers into a consumer's.mcp.json:jupyter—uvx jupyter-mcp-server, MCP_SERVER mode, target URL+token supplied at runtime viaconnect_to_jupyterjupyter-compute—npx mcp-remoteproxy to a fixed cluster/mcpendpoint, JUPYTER_SERVER modejupyter-computecould not retarget to a different node without a.mcp.jsonedit + MCP restart — which breaks the multi-node workflow the/aexp-jupyter-connect//aexp-jupyter-discovercommands are built around. It was otherwise a near-duplicate ofjupyterand a standing "which server do I use?" confusion surface (the old docs even mis-steered toward it).This reduces the integration to a single server,
jupyter.Changes
install.py—_jupyter_mcp_entries()emits only thejupyterentry; the additive.mcp.jsonmerge no longer special-casesjupyter-compute. Docstrings updated.cli.py—--with-jupyterhelp text./aexp-jupyter-iterateand/aexp-promote-nb,AGENTS.md,docs/setup/jupyter-mcp.md,README.md— retargeted to the single-servermcp__jupyter__*tool family. The mis-steering "jupyter-computeis functionally a superset" troubleshooting line and the jupyter-compute-specific investigation-log rounds are removed.tests/test_install.py— 5 jupyter tests updated.CHANGELOG.md—[Unreleased]entry.Lost capability
The two
jupyter-mcp-toolsUI-delegated tools.notebook_run-all-cellswas already 404-broken upstream, so that costs nothing;notebook_get-selected-cell("which cell is the user looking at") is genuinely gone — the affected slash commands now ask the user for the notebook/cell or cross-checkaexp.jupyter.init().attached_notebooks.Scope notes
[jupyter]pip extra and theaexp jupyter setupextension recipe are intentionally unchanged — trimming them risks a working cluster deployment and is a separate migration..mcp.jsonwritten by an earlier--with-jupyterinstall keeps itsjupyter-computeentry (the merge is additive-only and never deletes servers); remove it by hand for the cleanup.Testing
ruff checkclean on changed sourcesmypyshows only pre-existing errors on lines untouched by this change🤖 Generated with Claude Code