mcpField
R
Robust new jupyter server

Robust new jupyter server

ローカル
github.com/kshitijdesai99データ・分析115 週間前に更新

Robust new jupyter server について

ライブ Jupyter ノートブックを MCP 経由で読み取り、編集、実行するためのサーバーです。単一のノートブックとカーネルを扱い、セッションロックと明示的な実行エラーで同時変更や誤った再実行を防ぎます。

主な機能

  1. 01一貫性のあるノートブックスナップショットの読み取り
  2. 02Markdown セルの追加
  3. 03構造化出力付きコード実行
  4. 04カーネルとセッションの再起動
  5. 05ノートブックリソースと分析プロンプトの提供

活用シーン

  1. 01現在のノートブック内容の確認
  2. 02説明やコードセルの追加
  3. 03コードを実行して出力やエラーを確認

MCP 対応

stdio を通じてノートブックの読み取り、編集、実行ツールを提供し、読み取り専用リソースと分析プロンプトも公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Jupyter MCP サーバー

1 つのライブ Jupyter ノートブックを安全に読み取り、編集し、実行するための、用途を絞った Model Context Protocol サーバーです。

実装は意図的に小規模に保たれています。ノートブック 1 つ、カーネル 1 つ、標準の stdio トランスポートで構成されます。各操作はセッションロックを共有し、コードは 1 回だけ追加・実行されます。また、最初に表示される出力ではなく、カーネルの最終実行応答を待ちます。

公開する機能

MCP プリミティブ名前目的
ツールadd_markdown_cellMarkdown セルを 1 つ追加し、確認する
ツールadd_execute_code_cellコードセルを 1 回だけ追加・実行し、構造化出力を返す
ツールread_notebook_content一貫性のあるノートブックスナップショットを読み取る
ツールkernel_restart現在のカーネル/セッションを安全に置き換える
リソースjupyter://notebook読み取り専用のノートブック JSON
プロンプトanalyse_notebookノートブックを変更する前に分析する

HTML、画像、JSON、ストリーム、結果、トレースバックのデータは構造化出力モデルに保持されます。実行エラー、タイムアウト、不明な結果は、成功を示す文字列ではなく MCP エラーとして返されます。

要件

  • Python 3.10 以降(3.12 を推奨)
  • リアルタイムコラボレーションを有効にした JupyterLab サーバー
  • uv(推奨)または pip

ローカルでのセットアップ

サーバーと開発ツールをインストールします。

uv sync --extra dev

有効なノートブックドキュメントを作成します(空のファイルはノートブックではありません)。

uv run python -c "import nbformat; nbformat.write(nbformat.v4.new_notebook(), 'notebook.ipynb')"

別の環境またはターミナルで、Jupyter をインストールして起動します。

uv run --with jupyterlab --with jupyter-collaboration \
  jupyter lab \
  --port 8888 \
  --ServerApp.port_retries 0 \
  --ServerApp.root_dir . \
  --IdentityProvider.token MY_TOKEN \
  --no-browser

MCP サーバーを実行します。

NOTEBOOK_PATH=notebook.ipynb \
SERVER_URL=http://localhost:8888 \
TOKEN=MY_TOKEN \
uv run jupyter-mcp

サーバーは初回使用時に Jupyter 接続を開くため、パッケージのインポートや MCP ツールの一覧表示に、Jupyter の起動は必要ありません。

MCP クライアントの設定

ローカルの stdio サーバーを起動するクライアントには、次の形式を使用し、リポジトリのパスをチェックアウト先に置き換えてください。

{
  "mcpServers": {
    "jupyter": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/jupyter_mcp_server_kshitij",
        "run",
        "jupyter-mcp"
      ],
      "env": {
        "NOTEBOOK_PATH": "notebook.ipynb",
        "SERVER_URL": "http://localhost:8888",
        "TOKEN": "MY_TOKEN"
      }
    }
  }
}

設定

変数デフォルト説明
NOTEBOOK_PATHnotebook.ipynbJupyter サーバールートからの相対パス
SERVER_URLhttp://localhost:8888Jupyter サーバーの URL
TOKEN空Jupyter 認証トークン。実行時に設定します
CONNECTION_TIMEOUT_SECONDS15起動、クリーンアップ、中断のタイムアウト
EXECUTION_TIMEOUT_SECONDS30カーネルの最大実行時間
CONNECTION_ATTEMPTS2変更前の接続試行回数

接続の再試行は、変更を行う前に限って実施されます。実行が始まった後に切断が発生すると、「結果不明」という明示的なエラーが返され、セルが自動的に再実行されることはありません。

Docker

非 root イメージをビルドして実行します。トークンにはイメージのデフォルト値が設定されていないため、実行時に指定する必要があります。

docker build -f dockerfile -t jupyter-mcp .
docker run --rm -i \
  -e NOTEBOOK_PATH=notebook.ipynb \
  -e SERVER_URL=http://host.docker.internal:8888 \
  -e TOKEN=MY_TOKEN \
  jupyter-mcp

開発

uv run pytest
uv run ruff check .

ユニットテストでは、ノートブックとカーネルのモッククライアントを使用するため、稼働中の Jupyter サーバーは必要ありません。エンドツーエンドで確認するには、上記のように Jupyter を起動し、MCP クライアントまたは MCP Inspector を使ってツールを試してください。

安全性とライフサイクルの保証

  • モジュールのインポート時にネットワーク I/O は発生しません。
  • MCP のライフスパン終了処理では、正常終了時も異常終了時も、ノートブッククライアントとカーネルクライアントの両方を閉じます。
  • asyncio.Lock により、ノートブックの変更、実行、読み取り、再起動の並行処理を防止します。
  • ノートブッククライアントの公開シーケンス/エクスポート API を使用し、非公開の _doc と _ycells の内部にはアクセスしません。
  • カーネルエラーとタイムアウトは MCP エラーになります。タイムアウトしたカーネルは中断され、不確かな状態のセッションは再利用前に破棄されます。
  • 標準の stdio トランスポートのみが有効です。無言で raw-TCP にフォールバックすることはありません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。