Skip to main content
Glama
caryan

vscode-notebook-mcp

by caryan

vscode-notebook-mcp

Una extensión de VS Code que expone los notebooks de Jupyter en tu editor de VSCode a agentes de IA compatibles con MCP (por ejemplo, Claude Code). El agente lee, edita y ejecuta celdas utilizando el mismo kernel que usa VS Code.

Estado: pre-alfa, proyecto de un solo desarrollador. Creado desde cero; no es un fork.

Herramientas (12)

Descubrimiento

Herramienta

Descripción

notebook_list_open

Lista todos los notebooks abiertos con URI, nombre de archivo, recuento de celdas y cuál está activo

notebook_list_cells

Lista las celdas con índice, tipo, lenguaje, vista previa y estado de ejecución

notebook_get_cell_content

Fuente completa de una celda

notebook_get_cell_output

Salidas de una celda (texto, errores, imágenes en base64)

Manipulación de celdas

Herramienta

Descripción

notebook_insert_cell

Inserta una celda de código o markdown en cualquier posición; opcionalmente ejecuta

notebook_edit_cell

Reemplaza el contenido de una celda existente

notebook_delete_cell

Elimina una celda por índice

Ejecución

Herramienta

Descripción

notebook_run_cell

Ejecuta una celda de código existente y devuelve las salidas

notebook_clear_cell_output

Borra las salidas de una celda

notebook_clear_all_outputs

Borra las salidas de todas las celdas

Kernel

Herramienta

Descripción

notebook_get_kernel_info

Lenguaje, estado, URI del notebook

notebook_select_kernel

Programático mediante kernel_id, o abre el selector de kernel si se omite

Todas las herramientas aceptan un notebook_uri opcional (si se omite, utiliza el editor de notebook activo) y response_format ("markdown" o "json").

Related MCP server: lsp-mcp

Configuración

  1. Instala la extensión de Jupyter en VS Code si aún no la tienes.

  2. Compila y ejecuta esta extensión:

    npm install
    npm run build

    Luego abre esta carpeta en VS Code y presiona F5 para iniciar un Host de Desarrollo de Extensiones con la extensión cargada.

  3. Añade a la configuración de tu cliente MCP:

    {
      "mcpServers": {
        "notebook": {
          "url": "http://127.0.0.1:49777/mcp"
        }
      }
    }
  4. Abre un archivo .ipynb en el Host de Desarrollo de Extensiones. Busca el indicador 🪐 :49777 en la barra de estado.

Configuración

Ajuste

Predeterminado

Descripción

notebook-mcp.port

49777

Puerto preferido. Se incrementa automáticamente si está ocupado (hasta +99).

Comandos

  • Notebook MCP: Restart Server

  • Notebook MCP: Show Server Info

Arquitectura

┌─────────────────────────────────────────────────────────┐
│                    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.) │
                └───────────────────────────────┘

Notas de implementación

  • Las escrituras pasan por vscode.NotebookEdit + vscode.WorkspaceEdit, preservando deshacer/rehacer.

  • La ejecución envía notebook.cell.execute y espera mediante el sondeo de cell.executionSummary.success para obtener un valor boolean (VS Code crea el resumen tan pronto como comienza la ejecución, pero success solo se convierte en booleano cuando el kernel termina).

  • Las celdas insertadas están etiquetadas con un id de metadatos para que el ejecutor pueda encontrarlas de nuevo después de que el índice cambie debido a otras ediciones concurrentes.

  • Multi-notebook: cada herramienta acepta notebook_uri. Resolución: URI explícito → buscar en vscode.workspace.notebookDocuments (o abrirlo); de lo contrario, recurrir a vscode.window.activeNotebookEditor.

Desarrollo

npm install
npm run build       # esbuild bundle
npm run watch       # rebuild on change
npm run typecheck   # tsc --noEmit
npm test            # vitest (no tests yet)

Presiona F5 en VS Code para iniciar el Host de Desarrollo de Extensiones.

Referencias

Otros proyectos en líneas similares a este proyecto:

He construido esto desde cero para aprender y así tener espacio para ajustar el diseño y desarrollar nuevas funciones.

Licencia

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with VS Code's language server protocol features (definitions, references, diagnostics) and debugger (breakpoints, stepping, variable inspection) via an MCP server.
    9 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables external agents to run, edit, create, and manage the Jupyter notebook the user is actively editing in VS Code, headlessly and without approval dialogs. Works with any MCP client and is Jupyter-optional for document operations.
    1
    MIT