vscode-notebook-mcp
Exposes VSCode Jupyter notebooks to MCP-compatible AI agents, enabling them to read, edit, and run cells against the same kernel.
README
vscode-notebook-mcp
A VS Code extension that exposes the Jupyter notebooks in your VSCode editor to MCP-compatible AI agents (e.g. Claude Code). The agent reads, edits, and runs cells against the same kernel VS Code is using.
Status: pre-alpha, single-developer project. Built fresh; not a fork.
Tools (13)
Discovery
| Tool | Description |
|---|---|
notebook_list_open |
List all open notebooks with URI, file name, cell count, and which is active |
notebook_open |
Open a .ipynb file (absolute path, file:// URI, or workspace-relative) so its cells become available |
notebook_list_cells |
List cells with index, kind, language, preview, execution state |
notebook_get_cell_content |
Full source of a cell |
notebook_get_cell_output |
Outputs of a cell (text, errors, images as base64) |
Cell manipulation
| Tool | Description |
|---|---|
notebook_insert_cell |
Insert a code or markdown cell at any position; optionally execute |
notebook_edit_cell |
Replace contents of an existing cell |
notebook_delete_cell |
Delete a cell by index |
Execution
| Tool | Description |
|---|---|
notebook_run_cell |
Execute an existing code cell and return outputs |
notebook_clear_cell_output |
Clear outputs of one cell |
notebook_clear_all_outputs |
Clear outputs of every cell |
Kernel
| Tool | Description |
|---|---|
notebook_get_kernel_info |
Language, status, notebook URI |
notebook_select_kernel |
Programmatic by kernel_id, or open the kernel picker if omitted |
All tools accept an optional notebook_uri (omitted ā uses the active notebook editor) and response_format ("markdown" or "json").
Setup
- Install the Jupyter extension in VS Code if you don't already have it.
- Build and run this extension:
Then open this folder in VS Code and press F5 to launch an Extension Development Host with the extension loaded.npm install npm run build - Add to your MCP client config:
{ "mcpServers": { "notebook": { "url": "http://127.0.0.1:49777/mcp" } } } - Open a
.ipynbfile in the Extension Development Host. Look for thešŖ :49777indicator in the status bar.
Configuration
| Setting | Default | Description |
|---|---|---|
notebook-mcp.port |
49777 |
Preferred port. Auto-increments if busy (up to +99). |
Commands
Notebook MCP: Restart ServerNotebook MCP: Show Server Info
Architecture
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā VS Code window ā
ā ā
ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
ā ā Jupyter extension (ms-toolsai.jupyter) ā ā
ā ā ā ā
ā ā Notebook document āāāāŗ Kernel āāāŗ Outputs ā ā
ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
ā ā² ā
ā ā vscode.NotebookEdit, ā
ā ā notebook.cell.execute, ā
ā ā jupyter.kernels.getKernel ā
ā ā ā
ā āāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
ā ā This extension ā ā
ā ā ā ā
ā ā HTTP server :49777 āāāŗ MCP tools (12) ā ā
ā ā (StreamableHTTPServerTransport) ā ā
ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā HTTP (MCP protocol)
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā AI agent ā
ā (Claude Code, Cursor, etc.) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Implementation notes
- Writes go through
vscode.NotebookEdit+vscode.WorkspaceEdit, preserving undo/redo. - Execution dispatches
notebook.cell.executeand waits by pollingcell.executionSummary.successfor abooleanvalue (VS Code creates the summary as soon as execution starts butsuccessonly becomes a boolean when the kernel finishes). - Inserted cells are tagged with a metadata id so the executor can find them again after the index shifts due to other concurrent edits.
- Multi-notebook: every tool accepts
notebook_uri. Resolution: explicit URI ā look up invscode.workspace.notebookDocuments(or open it); otherwise fall back tovscode.window.activeNotebookEditor.
Development
npm install
npm run build # esbuild bundle
npm run watch # rebuild on change
npm run typecheck # tsc --noEmit
npm test # vitest (no tests yet)
Press F5 in VS Code to launch the Extension Development Host.
References
Other projects along similar lines to this project:
- datalayer/jupyter-mcp-server ā MCP server that talks to a running Jupyter server via HTTP/WebSocket.
- olavocarvalho/vscode-runtime-notebook-mcp ā similar architecture as this project (VS Code Notebook API + embedded HTTP MCP server).
I built this fresh to learn and so I have room to tweak the design and develop new features.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.