Skip to main content
Glama
jupyter-vscode-mcp

jupyter-vscode-mcp

by hadiproz

Jupyter VS Code MCP

License: MIT MCP

VS-Code-Erweiterung, die Jupyter-Notebook-Operationen als MCP-Tools über reines HTTP bereitstellt — eine portable URL für jeden KI-Coding-Agenten. Keine absoluten Pfade, kein node-Befehl, kein Stdio-Verdrahten.

Richten Sie einen beliebigen MCP-Client auf die URL, und der Agent kann Notebooks in Ihrer Live-Editor-Sitzung erkunden, bearbeiten, ausführen und debuggen: Er sieht dieselben Zellen wie Sie, spricht mit demselben Kernel, den Ihr Notebook verwendet (lokal oder remote — Colab eingeschlossen), und jede Aktion landet in der echten VS-Code-Oberfläche.

Features

Notebook-Bearbeitung mit stabilen Zellen-Handles

  • Jede Zelle wird durch ein einheitliches Schema identifiziert: #NB-xxxxxxxx, gespeichert in der Standard-nbformat-4.5-Zellen-ID. Sie übersteht Bearbeitungen, Einfügen/Löschen anderer Zellen, Indexverschiebungen, Speichern/erneutes Öffnen, Neuladen der Erweiterung — selbst das Kopieren der Datei auf einen anderen Rechner.

  • IDs werden nach einem Löschen nie wiederverwendet: Neue Zellen erhalten immer frische Zufalls-IDs. jupyter_get_summary weist jeder Zelle, der eine ID fehlt (z. B. manuell in der Oberfläche erstellt), eine ID zu, sodass jeder gemeldete Handle sofort wiederverwendbar ist.

  • Indizes sind überall 0-basiert (Zusammenfassung, Quellen, Ausführungsbereiche, Ausgaben) — keine gemischten Konventionen.

Nicht-blockierende Ausführungssteuerung

  • jupyter_run_cells startet die Ausführung und kehrt sofort zurück; fragen Sie mit jupyter_wait_until_idle ab oder machen Sie mit jupyter_get_status einen Schnappschuss. Keine blinden Sleeps, keine MCP-Timeouts bei langen Zellen.

  • Kernel-Bereitschaftsprüfung: Bei einem toten/nicht vorhandenen Kernel werden umsetzbare Hinweise zurückgegeben, anstatt das System zu blockieren.

  • jupyter_interrupt_kernel bricht den aktuellen Lauf ab und behält dabei alle Variablen.

Kernel-Intelligenz (Copilot-Qualität)

  • jupyter_get_variables — typbewusste Variablenberichte: DataFrame/Series als {shape, columns[:8], head(2)}, ndarray als {shape, dtype}, Container mit length, Skalare als kurze Repräsentationen. Verwendet bei Verfügbarkeit die offizielle Jupyter-Variablenansicht-API, andernfalls eine stille Kernel-Abfrage, die den Ausführungszähler nie berührt. Eine optionale Dokument-Symbolfilterung blendet internes Rauschen nur aus, wenn tatsächlich Symbole verfügbar sind.

  • jupyter_get_pip_packages — Umgebungsinventar (Name + Version) der aktiven Kernel-Umgebung.

  • jupyter_install_packages — pip läuft innerhalb des eigenen Interpreters des Kernels, sodass Pakete in der Laufzeitumgebung landen, die das Notebook tatsächlich verwendet — einschließlich entfernter VMs wie Colab, niemals auf dem lokalen Host. Unterstützt Versionsangaben und --upgrade, verifiziert anschließend, dass jede Angabe aufgelöst wird, und meldet ehrliche Fehlschläge (mit dem echten Ausgabeende von pip), statt Erfolg vorzutäuschen.

  • jupyter_get_status fragt den Live-Kernel nach der tatsächlichen Python-Version/Plattform ab, anstatt veralteten Metadaten zu vertrauen.

  • jupyter_select_kernel öffnet die native Kernel-Auswahl von VS Code, wenn kein Kernel aktiv ist.

Nur-Netzwerk-MCP-Transport

  • Streamable HTTP (MCP-Spezifikation 2025-11-25) mit einfachen JSON-Antworten — ein minimaler Client benötigt nichts weiter als curl.

  • Endpunkte: /mcp (plus Legacy /sse), GET /health für Lebendigkeits- und Versionsprüfung.

  • Mehrere gleichzeitige Agent-Sitzungen werden unterstützt; Sitzungen überstehen Portänderungen im laufenden Betrieb.

Ehrliche Berichterstattung

Fehler enthalten Kontext und Hinweise für die nächsten Schritte: fehlender Kernel → Anleitung zum Starten, veraltete ID → Aktualisierung über die Zusammenfassung, fehlgeschlagene pip-Installation → echtes pip-Fehlerende, belegter Kernel → expliziter Verschiebungshinweis statt stiller leerer Ergebnisse.

Related MCP server: Jupyter MCP Server

Tools

Tool

Beschreibung

jupyter_list_open_notebooks

Öffnet Notebooks mit URIs, Pfaden, Zellanzahl und Dirty-Flags

jupyter_get_summary

Kompakte Übersicht: stabile IDs, Typen, Ausführungsstatus, Ausgabe-MIME-Typen, Vorschauen

jupyter_get_cell_source

Quelltext einer Zelle per ID oder 0-basiertem Index; Zeilen-Paginierung

jupyter_edit_cell

Quelltext ersetzen; ID bleibt danach gülig

jupyter_insert_cell / jupyter_delete_cell

Struktur-Änderungen an 0-basierten Positionen; neue, nicht wiederverwendbare IDs

jupyter_save_notebook

.ipynb auf der Festplatte speichern

jupyter_create_notebook

Leeres .ipynb auf der Festplatte erstellen + im Editor öffnen

jupyter_run_cells

Nicht-blockierender Start: Indexbereich [stat,end) oder geordnete ID-Liste

jupyter_wait_until_idle

Pollt bis idle oder Timeout; liefert abgeschlossene Zellen + Erfolgsflags

jupyter_get_status

Sofort-Snapshot: kernelStatus, Live-Laufzeitinfos, laufende Zellen, Dirty-Zustand

jupyter_interrupt_kernel

Aktuelle Ausführung abbrechen, Variablen behalten

jupyter_restart_kernel

Vollständiger Neustart (löscht Variablen)

jupyter_get_outputs

Ausgaben inline (kur er Text) oder Arrefakdateien unter .jupyter-mcp/arifaks/

jupyter_get_variabes

Typbewuster Kernel-Variablenbericht

jupyter_get_pip_packages

Inventar der installierten Pakete der Kernel-Umgebung

jupyter_install_packages

Kernel seiige pip-Installation mit Versionsangaben + Verifizierung nach der Installtion

jupyter_select_kernel

Native Kernel-Auswahl öffnen und resulierenden Zusand melden

Stabile Zellen-IDs

Jede Zelle erhält eine zufällige persisente ID (#NB-xxxxxxxx), die in das Feld der Standard-nbformat-4.5-Zellen-ID geschrieben wird — denselben Speicherplatz, den die Platfform selbst lis und der Speichern/Laden unverändert überseht. Die ID is immun gegen Posiionsänderungen, Inhalsbearbeiungen, Einfügen/Löschen von Schweserzellen und erneuem Öffnen. Bevorzugen Sie IDs gegenüber Indizes; rufen Sie jupyter_get_summary auf, um sie zu ermielen (sie füllt auch fehlende IDs für Zellen auf, die außerhalb der Tools er sell wurden).

Eine reine 8-Hex-Eingabe (abcd1234) wird als Kurzform für #NB-abcd1234 akzepier.

Kompatible Agenen

Jeder MCP-Client, der HTTP sprich, funkionier. Häufige Konfiguraionen:

Claude Code, Cursor, Windsurf, Cline, Copilo:

{
  "mcpServers": {
    "jupyter-vscode-mcp": {
      "url": "http://localhost:9123/mcp"
    }
  }
}

OpenCode, Kilo Code:

{
  "mcp": {
    "jupyter-vscode-mcp": {
      "type": "remote",
      "url": "http://localhost:9123/mcp",
      "enabled": true
    }
  }
}

Führen Sie "Jupyter VS Code MCP: Show MCP Configuraion" über die Be fehlspalee aus → wählen Sie Ihren Agenen → Snipet wird in die Zwischenabage kopier.

Install & Run

Laden Sie die neuese .vsix von Releases heruner, dann:

code --install-extension jupyter-vscode-mcp-<version>.vsix
  1. Öffnen Sie eine beliebige .ipynb — der Server sarze automaisch auf 127.0.0.1:9123 (die Sausleise zeig den Zusand; zum Umschalen klicken).

  2. Fügen Sie Ihrem Agenen die obige URL-Konfiguraion hinzu.

  3. Prüfen Sie jederzei die Erreichbarkei: curl http://localhos:9123/health.

Einsellungen: jupyter-vscode-mcp.mcpPort (Standard 9123, wird im laufenden Betrieb angewendet), jupyter-vscode-mcp.autoStart (Standard true).

Empfohlener Workflow

jupyter_list_open_notebooks   → pick notebook
jupyter_get_summary           → stable #NB-* IDs, exec state        (0-based)
jupyter_get_cell_source       → read only what you need
jupyter_edit_cell             → IDs stay valid after edits
jupyter_run_cells             → starts async, returns immediately
jupyter_wait_until_idle       → blocks until done (or poll get_status)
jupyter_get_outputs           → inline short text, artifact files for big/binary
jupyter_get_variables         → inspect kernel state after runs

Architektur

AI agent ──HTTP/JSON-RPC──▶ VS Code extension (in-process http server :9123)
                                 │ vscode.* APIs + ms-toolsai.jupyter public API
                                 ▼
                     notebook cells, outputs, kernel status

Kernel-Interaktionen verwenden die dokumentierte öffentliche API ms-toolsai.jupyter (kernel.executeCode, Interrupt-/Neustart-Befehle, Variablen-/pip-Auflistungsbefehle) mit Befehls-Fallbacks; die Ausführungsverfolgung basiert auf workspace.onDidChangeNotebookDocument.

Entwicklung

npm install
npm run compile      # typecheck
npm run lint
npm run build        # esbuild bundle
npm run smoke        # local protocol smoke test (vscode stubbed)
npx @vscode/vsce package

Referenzen

Lizenz

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to interact with Jupyter notebooks via MCP tools for querying, modifying, executing, and setting up notebooks, with state preservation and real-time collaboration.
    4
    45
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that connects directly to a Jupyter kernel via ZMQ, enabling AI assistants to read, create, edit, execute, and manage Jupyter Notebooks as MCP tools.
    9
    MIT