Compatible with any Jupyter deployment (local, JupyterHub, ...) and with [Datalayer](https://datalayer.ai) hosted Notebooks.
Jupyter becomes available to MCP clients through the jupyter mcp server. Compatible with any Jupyter deployment (local, JupyterHub, ...) and with Datalayer hosted Notebooks.
Compatible with any Jupyter deployment (local, JupyterHub, ...) and with Datalayer hosted Notebooks.
Once connected, the assistant can call these 14 tools directly:
list_files — List files and directories in the Jupyter server's file systemlist_kernels — List all available and running kernel sessions on the Jupyter serverlaunch_sandbox — Launch a code sandbox (eval/docker/jupyter/datalayer/kaggle/colab/monty/modal) as an alternative execution backend for execute_code. Supports variant-specificlist_sandboxes — List launched code sandboxes and their state (active flag, variant, status, and selected code sandbox options). Requires the jupyter_mcp_sandboxes extensionuse_sandbox — Select or clear the active sandbox used by execute_code, enabling dynamic routing between kernel-backed and sandbox-backed execution. Requires theterminate_sandbox — Stop and unregister a launched code sandbox. Requires the jupyter_mcp_sandboxes extensionconnect_to_jupyter — Connect to a Jupyter server dynamically without restarting the MCP server. *Not available when running as Jupyter extension. Useful for switching serversuse_notebook — Connect to a notebook file, create a new one, or switch between notebookslist_notebooks — List all notebooks available on the Jupyter server and their statusrestart_notebook — Restart the kernel for a specific managed notebookunuse_notebook — Disconnect from a specific notebook and release its resourcesread_notebook — Read notebook cells source content with brief or detailed format optionsread_cell — Read the full content (Metadata, Source and Outputs) of a single cellinsert_cell — Insert a new code or markdown cell at a specified positionThe server is distributed via PyPI as jupyterlab, so most clients can run it without a manual build step. Add it to your MCP client's configuration and restart the client to pick it up — the copy-paste configs for Claude Desktop, Claude Code and Cursor are on this page.
Before the server will start you need to supply 8 environment variables: JUPYTER_URL, JUPYTER_TOKEN, ALLOW_IMG_OUTPUT, CODE_SANDBOX_URL, CODE_SANDBOX_TOKEN, DOCUMENT_URL, DOCUMENT_TOKEN, SANDBOX_VARIANT. Keep credentials in your client's env block or a secrets manager rather than committing them.
Developer-tool servers are usually the first ones people connect, because they turn "help me with this code" into an assistant that can actually read the repo and act on it. Jupyter sits in that group, and the shape of its toolset — list_files, list_kernels, launch_sandbox among others — tells you what it is really for. Worth comparing against the other developer tools servers in this directory before you commit to one, since several overlap in scope but differ sharply in setup cost and permissions.
| Tool | What it does |
|---|---|
| list_files | List files and directories in the Jupyter server's file system. |
| list_kernels | List all available and running kernel sessions on the Jupyter server. |
| launch_sandbox | Launch a code sandbox (eval/docker/jupyter/datalayer/kaggle/colab/monty/modal) as an alternative execution backend for execute_code. Supports variant-specific options including GPU flavor for supported backends. Requires |
| list_sandboxes | List launched code sandboxes and their state (active flag, variant, status, and selected code sandbox options). Requires the jupyter_mcp_sandboxes extension. |
| use_sandbox | Select or clear the active sandbox used by execute_code, enabling dynamic routing between kernel-backed and sandbox-backed execution. Requires the jupyter_mcp_sandboxes extension. |
| terminate_sandbox | Stop and unregister a launched code sandbox. Requires the jupyter_mcp_sandboxes extension. |
| connect_to_jupyter | Connect to a Jupyter server dynamically without restarting the MCP server. *Not available when running as Jupyter extension. Useful for switching servers dynamically or avoiding hardcoded configuration.* [Read more](http |
| use_notebook | Connect to a notebook file, create a new one, or switch between notebooks. |
| list_notebooks | List all notebooks available on the Jupyter server and their status |
| restart_notebook | Restart the kernel for a specific managed notebook. |
| unuse_notebook | Disconnect from a specific notebook and release its resources. |
| read_notebook | Read notebook cells source content with brief or detailed format options. |
| read_cell | Read the full content (Metadata, Source and Outputs) of a single cell. |
| insert_cell | Insert a new code or markdown cell at a specified position. |
**On Linux:**
```json
{
"mcpServers": {
"jupyter": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "JUPYTER_URL",
"-e", "JUPYTER_TOKEN",
"-e", "ALLOW_IMG_OUTPUT",
"--network=host",
"datalayer/jupyter-mcp-server:latest"
],
"env": {
"JUPYTER_URL": "http://localhost:8888",
"JUPYTER_TOKEN": "MY_TOKEN",
"ALLOW_IMG_OUTPUT": "true"
}
}
}
}Configuration as documented by the project. Restart the client after saving.
| Variable | Description | Required |
|---|---|---|
| JUPYTER_URL | Endpoint or connection string the server talks to. | Yes |
| JUPYTER_TOKEN | Credential the server authenticates with. | Yes |
| ALLOW_IMG_OUTPUT | Configuration value read at startup. | Optional |
| CODE_SANDBOX_URL | Endpoint or connection string the server talks to. | Yes |
| CODE_SANDBOX_TOKEN | Credential the server authenticates with. | Yes |
| DOCUMENT_URL | Endpoint or connection string the server talks to. | Yes |
| DOCUMENT_TOKEN | Credential the server authenticates with. | Yes |
| SANDBOX_VARIANT | Configuration value read at startup. | Optional |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.