Jupyter Notebook MCP Server
Jupyter NotebookをModel Context Protocol (MCP)を通じて操作するためのサーバー
Jupyter NotebookをModel Context Protocol (MCP)を通じて操作するためのサーバーです。このサーバーを使用することで、Jupyter Notebookのセルの追加、編集、削除、実行、結果取得などの操作をMCPクライアント(例:Claude)から行うことができます。
目次
概要
Jupyter Notebook MCP ServerはJupyter NotebookをModel Context Protocol (MCP)を通じて操作するためのサーバーです。MCPクライアント(Claude AIなど)からJupyter Notebookを制御し、データ分析や機械学習のワークフローを自動化できます。
インストール
依存関係のインストール
# PyPIからインストール
pip install jupyter-notebook-mcp
# または開発版をインストール
uv pip install -e "git+https://github.com/yourusername/jupyter-notebook-mcp.git#egg=jupyter-notebook-mcp"
# 開発モードでインストール(開発ツールを含む)
uv pip install -e ".[dev]"
# uvコマンドを使用する場合
uv add jupyter-notebook-mcp
# 開発用
uv add -e .
Claudeデスクトップでの利用
サーバーが起動したら、MCPコマンドラインツールを使って、Claudeデスクトップアプリにインストールできます:
# サーバーの起動
python -m jupyter_notebook_mcp
# Claudeにインストール
mcp install -m jupyter_notebook_mcp
# または特定のスクリプトを指定してインストール
mcp install src/jupyter_notebook_mcp_server.py
# カスタム名を付ける場合
mcp install src/jupyter_notebook_mcp_server.py --name "Jupyter Notebook操作"
# 環境変数を設定する場合
mcp install src/jupyter_notebook_mcp_server.py -v JUPYTER_PATH=/path/to/notebooks
クイックスタート
# Jupyter Notebook MCPサーバーを使った基本的な操作例
# サーバーを起動
python -m jupyter_notebook_mcp
# Claudeで以下のような指示を与える
# 「新しいノートブックを作成して、pandas DataFrameを使ったデータ分析コードを追加してください」
機能
ノートブック操作
- ノートブックを開く/保存する
- ノートブックの内容を取得する
- 新規ノートブックの作成
セル操作
- コードセル/マークダウンセルの追加
- セルの編集/削除
- セルの実行
- セルのソースコード/出力結果の取得
カーネル情報
- 利用可能なカーネルの一覧取得
- カーネル接続情報の管理
使用例
Claude AIに以下のような指示を出すことができます:
- 「新しいノートブックを作成して、pandas DataFrameを使ったサンプルコードを追加してください」
- 「3番目のセルを実行して結果を表示してください」
- 「すべてのセルを実行してください」
- 「2番目のセルのコードを修正して、matplotlibでグラフを描画するようにしてください」
高度な使い方
カスタムサーバーの作成
from jupyter_notebook_mcp import JupyterMCP
# カスタムサーバーの作成
jupyter_mcp = JupyterMCP("カスタムJupyterMCP")
# カスタムツールの追加
@jupyter_mcp.mcp.tool()
def custom_tool(parameter: str) -> str:
return f"カスタム機能: {parameter}"
# サーバーの実行
if __name__ == "__main__":
jupyter_mcp.run(host="0.0.0.0", port=8080)
APIサーバーとの統合
Jupyter Notebook MCPサーバーは既存のASGIアプリケーションにマウントすることもできます:
from starlette.applications import Starlette
from starlette.routing import Mount
from jupyter_notebook_mcp import JupyterMCP
jupyter_mcp = JupyterMCP()
# 既存のASGIサーバーにマウント
app = Starlette(
routes=[
Mount('/jupyter-notebook-mcp', app=jupyter_mcp.mcp.sse_app()),
]
)
開発
テスト
テストの実行方法:
# すべてのテストを実行
python -m pytest
# 特定のテストモジュールを実行
python -m pytest tests/test_notebook_operations.py
# 詳細な実行ログを表示
python -m pytest -v
# テストカバレッジレポートを生成
python -m pytest --cov=src
テストの構成
テストは以下のように構成されています:
conftest.py- 共通のフィクスチャとユーティリティ関数test_mcp_server.py- MCPサーバー自体のテストtest_notebook_operations.py- ノートブック操作に関するテストtest_cell_operations.py- セル操作に関するテストtest_execution.py- ノートブックとセルの実行に関するテストfixtures/- テスト用のフィクスチャファイル
テストでは以下のフィクスチャが利用可能です:
jupyter_mcp- JupyterMCPインスタンスsample_notebook_path- サンプルノートブックへのパスtemp_notebook- テスト用の一時的なノートブック
注意事項
- セルの実行テストは環境によって失敗する場合があります
- テストではMCP APIの特性上、asyncio関数を使用しています
- テスト実行にはpytest-asyncioプラグインが必要です
貢献
プルリクエストやイシューは歓迎します。大きな変更を加える前には、まずイシューで議論することをお勧めします。
- リポジトリをフォークする
- フィーチャーブランチを作成する (
git checkout -b feature/amazing-feature) - 変更をコミットする (
git commit -m 'Add amazing feature') - ブランチをプッシュする (
git push origin feature/amazing-feature) - プルリクエストを作成する
ライセンス
このプロジェクトはMITライセンスの下で公開されています - 詳細はLICENSEファイルをご覧ください。
謝辞
このプロジェクトはModel Context ProtocolのPython SDKを使用しています。
Metadata
Release files for jupyter-notebook-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| jupyter_notebook_mcp-0.1.0.tar.gz | 179.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jupyter_notebook_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 193.6 kB
Release files / jupyter_notebook_mcp-0.1.0.tar.gz
| Download URL | jupyter_notebook_mcp-0.1.0.tar.gz |
|---|---|
| Size | 179.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3daef15a556c74c7210f0aabcdd98dfb4423ef9a5a1bc937bfca726a5bd58c83
|
|
BLAKE2b-256 checksum How to use checksums |
f7e952b66b61675ff32315a69bb951ec15f34516f6857c44036ab76cc11c39ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.8
|
Release files / jupyter_notebook_mcp-0.1.0-py3-none-any.whl
| Download URL | jupyter_notebook_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b35c9289e3c1ea16987d8cde92d6f1da26fe1ff7e7a87edaf41e7cf1c25615e4
|
|
BLAKE2b-256 checksum How to use checksums |
3ee48b121c7251296992db6e91e411c64881146f4f315502e98d0145a6b78daf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.8
|
Security for jupyter-notebook-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.