Notebook Intelligence について
Notebook Intelligence は、JupyterLab ユーザー向けのオープンソース AI コーディングアシスタント兼拡張フレームワークです。チャットやインライン編集、自動補完、ノートブックを操作するエージェントを備え、複数のモデルプロバイダーに対応します。
主な機能
- 01チャットとノートブックエージェント
- 02インラインコード編集
- 03コード自動補完
- 04Claude Code モード
- 05カーネル対応ノートブック
活用シーン
- 01JupyterLab で作業中に質問
- 02ノートブックのセル内コードを編集
- 03エージェントでノートブックコードを生成
MCP 対応
Notebook Intelligence は MCP に対応し、LLM のワークフローから外部ツールを呼び出せます。Claude モードでは Claude Code の MCP サーバーも JupyterLab のチャットパネルで利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
Notebook Intelligence
Notebook Intelligence(NBI)は、JupyterLab 向けの AI コーディングアシスタント兼拡張可能な AI フレームワークです。チャット、インライン編集、オートコンプリート、そしてノートブックを操作できるエージェントを追加します。基盤となるのは GitHub Copilot、OpenAI 互換または LiteLLM 互換のエンドポイント、ローカルの Ollama モデル、あるいは Anthropic の Claude Code CLI です。
NBI は無料のオープンソースです。お好みの無料または有料の LLM プロバイダー(GitHub Copilot、任意の OpenAI 互換または LiteLLM 互換エンドポイント、Ollama(ローカル)、または Anthropic Claude(Claude Code CLI 経由))に接続できます。プロバイダーの料金が発生する場合は、プロバイダーに直接支払われます。
目次
- 要件
- クイックスタート
- 概念
- 機能ハイライト
- 設定
- 組み込みツール
- Model Context Protocol(MCP)サポート
- ルールセット
- Claude Skills
- Claude MCP Servers
- Claude Plugins
- チャットフィードバック
- 設定の準備状況
- パフォーマンス診断
- ドキュメント
- 参考資料
- ロードマップ
- ライセンス
要件
- Python 3.10+
- JupyterLab 4.x
- Node.js — Claude モード(Claude Code CLI)、起動のたびに
npxでアダプターを起動する ACP エージェントモード、およびnpx経由で起動する MCP サーバーに必要です。 - NBI がシステム Python と競合しないよう、新規の virtualenv または conda 環境を推奨します。
クイックスタート
pip install notebook-intelligence
jupyter lab # restart JupyterLab if it was already running
再起動後:
- 左サイドバーの NBI アイコンをクリックしてチャットパネルを開きます。
- NBI 設定を開きます(チャットパネルの歯車アイコン、または Settings → Notebook Intelligence Settings)。
- プロバイダーにサインインします — GitHub Copilot の場合は Sign in をクリックし、OpenAI 互換または LiteLLM 互換エンドポイントの場合は API キーを貼り付け、Ollama の場合はローカルデーモンを指定します。Claude を使用するには、Claude モードを有効にします(以下を参照)。
- チャットパネルにメッセージを入力し、Enter を押します。
パネルが空のまま、またはログインしても何も起こらない場合は、トラブルシューティングを参照してください。
概念
これらのドキュメント全体で参照される用語をまとめた短い用語集です。
- LLM プロバイダー — モデルを実行するサービスです。NBI には 4 つのプロバイダーアダプターが同梱されています: GitHub Copilot、OpenAI 互換、LiteLLM 互換、Ollama です。Anthropic Claude はClaude モードを通じて利用でき、トップレベルのプロバイダーではありません。
- チャット参加者 — チャットパネル内で
@mentionできるペルソナです(@workspace、@mcpなど)。参加者はリクエストを特定のツールサーフェスにルーティングします。 - デフォルトモードと Claude モード — デフォルト は、チャット、インラインチャット、自動補完に設定済みの LLM プロバイダーを使用します。Claude モード は、チャットパネルに Claude Code CLI を使用し(そのツール、スキル、MCP サーバー、カスタムコマンドを利用可能になります)、インラインチャットと自動補完には Anthropic API 経由で Claude モデルを使用します。
PATH上に Claude Code CLI が必要です。 - Claude Code と Anthropic API — Anthropic API(
api.anthropic.com)は、Claude モードでのインラインチャットと自動補完のために NBI が直接呼び出す HTTPS エンドポイントです。Claude Code は Anthropic のローカル CLI エージェントで、NBI がチャットパネルのためにシェル経由で呼び出します。Anthropic との通信は Claude Code 自身が行います。 - MCP — Model Context Protocol。LLM が外部ツール(ファイルの読み取り、API の呼び出し、スクリプトの実行)を呼び出すための仕組みです。
- ルールセット —
~/.jupyter/nbi/rules/内のマークダウンファイルで、規約、コーディング標準、ドメインルールを徹底するためにシステムプロンプトへ注入されます。 - スキル:
~/.claude/skills/(または<project>/.claude/skills/)配下のディレクトリで、SKILL.mdと補助ファイルを保持します。Claude はこれをワークスペースにスコープされた呼び出し可能なプラグインのように起動できます。 - Claude プラグイン:
claude plugin install用にパッケージ化された単位で、マーケットプレイス(通常はプラグインのマニフェストを公開する GitHub リポジトリ)を通じて配布されます。NBI 自身の labextension とは別物です。プラグインは Claude Code セッション内で実行されます。
機能ハイライト
Claude モード
NBI は Claude Code との統合のための専用モードを提供します。Claude モードでは、NBI はチャットパネルに Claude Code CLI を使用し、インラインチャットと自動補完の提案には Claude モデル(Anthropic API 経由)を使用します。これにより、Claude Code のツール、スキル、MCP サーバー、カスタムコマンドを JupyterLab に取り込むことができます。
NBI 設定ダイアログ(チャットパネルの歯車アイコン、または Settings → Notebook Intelligence Settings)から設定します。Enable Claude mode を切り替えてから、以下を設定します:
- Chat model — チャットパネルとインラインチャットに使用する Claude モデル。
- Auto-complete model — 自動補完の提案に使用する Claude モデル。
- Chat Agent setting sources — ユーザー、プロジェクト、またはその両方。Claude Code の設定を反映します。
- Chat Agent tools — 有効化するツールセット。Claude Code tools は常に有効です。Jupyter UI tools は NBI 独自のものです(ノートブックの作成、セルの実行など)。
- API key と Base URL — Anthropic またはセルフホスト可能なエンドポイントを指定します。
- Show turn usage: デフォルトではオフです。オンにすると、完了した各ターンの最後に、そのターンの所要時間とトークン数を示す 1 行の斜体フッターが表示されます。
$のコスト数値は、NBI が Anthropic 自身のエンドポイントで直接 Anthropic API キーを使用して実行されている場合にのみ表示されます。SDK は CLI 組み込みの公開リスト料金から価格を算出しますが、これはサブスクリプションログインにおける限界費用ではなく、カスタムのbase_urlにおける料金でもないため、NBI は責任を持てない数値を示すのではなく省略します。
モデルのデフォルト。 モデルが選択されていない場合、チャットモデルは最新の Sonnet(現在は claude-sonnet-5)に、自動補完は最新の Haiku に解決され、どちらもハードコードされた ID ではなく、設定されたエンドポイントから取得したモデルリストに照らして照合されます。設定された ID が存在しなくなった場合、NBI はアルファベット順ではなくバージョン順で同じティア内にフォールバックするため、claude-sonnet-99 は最新の Sonnet に解決されます。取得されたリストはエンドポイントごとにキャッシュされるため、Base URL を変更しても以前のエンドポイントのモデルは再利用されません。自動補完の応答は 1024 トークンに制限されます。これは提案が最大でも数十行だからです。NBI_CLAUDE_INLINE_COMPLETION_MAX_TOKENS でこの上限を上書きでき、[1, 4096] にクランプされます。
Claude Code CLI が PATH 上にある場合、NBI はそれを自動的に起動します。場所を上書きするには、JupyterLab を起動する前に NBI_CLAUDE_CLI_PATH 環境変数を設定してください。
#### 権限モード
Claude モードでは、チャット入力のフッターに盾アイコンのボタン(送信ボタンの左側)が表示され、チャットパネルにおけるエージェントの権限モードを設定できます。これは Claude Code および Claude VS Code 拡張機能のモードと一致しています。クリックして選択してください:
- Default: エージェントが実行しようとするすべてのツール呼び出しが、NBI の確認プロンプトを経由します。それぞれを承認または拒否します。これが開始時のモードです。
- Accept Edits: エージェントが行うファイル編集は、編集ごとのプロンプトなしで適用されます。その他のツール呼び出し(コマンドの実行など)は引き続き確認プロンプトを経由します。編集は信頼するが、それ以外のすべてにはゲートを設けたい反復的な作業に便利です。
- Plan: エージェントは一切変更を加えずに調査して計画を提案し、その後承認のために提示します。承認すると計画が実行され、セレクターは Default に戻ります。拒否すると計画を続けます。これは以前の
/enter-plan-modeスラッシュコマンドを置き換えるものです。 - Bypass Permissions: すべてのツール呼び出しで NBI の確認プロンプトがスキップされます。これにはエージェントのサブプロセスで実行される Claude Code CLI 自体の Bash / Write / Edit も含まれます。エージェントはあなたのアカウントの完全なアクセス権で、確認なしにすべてを実行し、読み取った信頼できないコンテンツが実行内容を誘導する可能性があります。以下のゲートに関する注意事項を参照してください。
Default、Accept Edits、Plan は選択した瞬間に切り替わります。選択したモードは送信する各メッセージに付随し、ターンが実行される前にエージェントへ適用されます。会話の途中で切り替えた場合は、次のメッセージから有効になります。
Bypass Permissions は決して永続化されません。新しいチャットセッションを開始する(または /clear する)と常に解除され、手動で再度有効化する必要があります。その他のモードはリセットをまたいで引き継がれ、新しい Claude クライアントの開始時のモードは Default です(または管理者が管理する permissions.defaultMode)。
Bypass Permissions を選択しても、すぐに有効になるわけではありません。確認ステップが開き、確認した後にのみバイパスが有効になります。また、有効な間は盾が赤い警告アイコンに変わり、常時表示のインジケーターとなります。バイパスはセッションごとに再度有効化する必要があります。新しいチャットを開始するか Claude クライアントを再起動すると Default に戻ります。そして、サーバーがメッセージごとに要求されたモードを再チェックするため、有効化されたバイパスが、その後管理者によって無効化されたポリシーを超えて存続することは決してありません。
管理者によるゲート。 Bypass Permissions はデフォルトでオフであり、管理者が有効化しない限りセレクターには表示されません。これは claude_bypass_permissions ポリシー(NBI_CLAUDE_BYPASS_PERMISSIONS_POLICY)によって制御されており、これは user-choice ではなく force-off をデフォルトとする 3 つの管理者ポリシーの 1 つです(残りは実験的な ACP エージェントモードと ACP フルアクセスをゲートします)。要求されたモードはメッセージごとにサーバー側でもクランプされるため、手作りされたリクエストによってゲートを回避することはできません。これとは独立して、NBI は Claude Code のエンタープライズ管理設定に従います: permissions.disableBypassPermissionsMode は NBI ポリシーに関係なくオプションを削除し、permissions.defaultMode はセレクターの開始時のモードを設定します(Bypass は自動で有効化されないため例外です)。管理者ガイドの Bypass Permissions を許可するを参照してください。
/enter-plan-mode と /exit-plan-mode のスラッシュコマンドは、入力すれば引き続き機能しますが、オートコンプリートでは提供されなくなりました。セレクターがこれらを置き換え、将来のリリースでこれらのコマンドは廃止されます。
以前の Claude セッションの再開
Claude モードがオンのとき、チャットサイドバーには歯車の隣に履歴アイコンが表示されます。これをクリックすると、現在の作業ディレクトリに対して記録された Claude Code セッション(Claude Code CLI が ~/.claude/projects/ 配下に保存するものと同じトランスクリプト)が一覧表示されます。セッションを選択すると resume 経由で再接続され、次に送信するメッセージは以前のコンテキストを完全に引き継いでそのトランスクリプトを継続します。歯車の隣にある New chat session ボタンは、/clear と入力することなく SDK クライアントを再起動します。
Claude の長いターンでは、経過時間カウンターとハートビート駆動のパルスが表示され、30 秒後に「遅くなる可能性があります」という表示に切り替わります。エージェントが実行する各ツールは、種類アイコンと進行中 / 完了 / 失敗のライブ状態を備えた永続的なステータスカードとして表示されます。編集にはインライン diff が付き、連続する呼び出しのまとまりは 1 つの展開可能なグループに折りたたまれるため、サイドバーはスタックしているように見えるのではなく、エージェントが何をしているかを反映します。
Claude モードでは、チャットコンテキストとして添付されたワークスペースのファイルは、インライン化されたファイル内容ではなく @ メンションのポインターとして渡されます。Claude の Read ツールが必要に応じてそれらを取得するため、画像、大きなファイル、ノートブック(セル対応)が、以前のコンテンツ注入方式では黙って切り捨てられたりスキップされたりしていた場面でも動作するようになりました。
使用量フッター
設定ダイアログで Show usage after each turn を有効にすると、Claude モードの各返信の下に、そのターンの所要時間、トークン数(キャッシュされた入力の内訳付き)、コストを記載した小さなフッターが追加されます — 例えば 12.3s · 45.2K in (38.1K cached) / 1.2K out · $0.0842 のようになります。既定ではオフです。
コストの数値は Claude Code CLI から取得され、Anthropic の公開リスト料金に基づいて計算されます。これは、NBI が既定のエンドポイントで直接 Anthropic API キーを用いて構成されている場合にのみ表示され、それ以外の場合は省略されます — サブスクリプションのログイン(限界費用が実質 $0 になる場合)、企業向けに交渉された契約、またはカスタムの Base URL(プロキシ、ゲートウェイ、または Anthropic 以外のエンドポイント)では、リスト料金の数値が実際の請求と一致しないためです。所要時間とトークン数は常に表示されます。
Claude Code ランチャータイル
Claude CLI が PATH 上にある場合、JupyterLab ランチャー(新しいタブで開くパネル)は、標準のカーネルランチャーと並んで Claude Code タイルを表示します。これをクリックするとセッションピッカーが開きます。過去のトランスクリプトを検索して新しいターミナルでセッションを再開するか、ファイルブラウザーのアクティブなサブディレクトリで新しいセッションを開始できます。セッション ID はピッカーからコピーでき、claude --resume <id> コマンドに貼り付けられます。
その他のコーディングエージェント用ランチャータイル
次のいずれかの CLI が PATH 上にある場合、ランチャーはそれぞれに対応するタイルを追加します。タイルをクリックすると、ファイルブラウザーの現在のディレクトリでターミナルが開き、その CLI が実行されます:
- opencode(パスは
NBI_OPENCODE_CLI_PATHで上書き) - Pi(パスは
NBI_PI_CLI_PATHで上書き) - GitHub Copilot CLI(パスは
NBI_GITHUB_COPILOT_CLI_PATHで上書き) - OpenAI Codex(パスは
NBI_CODEX_CLI_PATHで上書き)
タイルは CLI が利用可能または利用不可になるにつれて自動的に追加・削除されます。Claude モードは必要ありません。任意のタイル(または Claude の再開ダイアログの New Session)をクリックすると開始ディレクトリの入力を求められるため、ターミナルは常にファイルブラウザーの cwd ではなく、希望する場所で開きます。
エージェントモード
エージェントモードでは、組み込みの AI エージェントがノートブックを対話的に作成、編集、実行します。セル内の問題を検出して修正することもできます。

ACP エージェントモード
Agent Client Protocol を介して外部のコーディングエージェントを駆動する実験的な第2のエージェントモードで、現時点では OpenAI Codex が唯一のエージェントタイプです。エージェントはサブプロセスとして実行され、自身でファイルとコマンドの処理を行い、NBI の確認カードを通じて承認を求めます。NBI は意図的に、Jupyter サーバーのファイルシステムやターミナルをエージェントに貸し出しません。
デフォルトではオフであり、管理者がこのモードを許可するまで設定タブは非表示のままで、Claude モードと同時に使用することはできません。詳しくは docs/acp.md を参照してください。
Chatbook
Chatbook とは、セルを英語で記述できるノートブックです。プロンプトセルを実行すると、ノートブックのバックエンドカーネル用のコードが生成されて実行されます。各セルには、それがプロンプト (NL) か通常のコード (Cd) かを示すバッジが付き、Ctrl J で切り替えられます。
生成されたコードが実行される前にどうなるかは、あなたが選択できます。常に確認 (デフォルト) はコードを表示して待機し、リスクがある場合に確認 はスキャンで破壊的な呼び出しが見つかった場合にのみ待機し、自動実行 はすぐに実行します。管理者はこの選択を組織全体で制限したり、Chatbook を完全に無効にしたりできます。
プロンプトは @ メンションでコンテキストを取り込むことができ、ルールはチャットに適用されるのと同じように生成にも適用され、バックエンドカーネルは Python である必要はなく、Chatbook はプロンプトではなく結果を誰かに渡したいときに、プレーンなコードノートブックとしてエクスポートできます。詳しくは docs/chatbook.md を参照してください。
インラインチャットによるコード生成
セルツールバーのスパークルアイコン、またはキーボードショートカットを使って、インラインチャットのポップオーバーを表示します。
Ctrl+G / Cmd+G でポップオーバーが開きます。Ctrl+Enter / Cmd+Enter で提案を承認します。Esc で閉じます。承認のショートカットは、ポップオーバーが開いている間のみ、JupyterLab のデフォルトの セルを実行 バインドを上書きします。ポップオーバーの外では、Ctrl+Enter / Cmd+Enter は引き続きアクティブなセルを実行します。

自動補完
自動補完の候補は、入力するにつれて表示されます。画面上に表示されている間は Tab で承認でき、それ以外の場合はインデントになります。NBI はコードセルと Python ファイルエディターで自動補完を提供します。
チャットインターフェース
チャットプロンプトと一緒に画像を貼り付けたり添付したりできます。アクティブなモデルがビジョンをサポートしている場合、画像は入力としてモデルに送信されます。
セル出力のアクション
セル出力を右クリックする (またはホバーしてツールバーを表示する) と、その出力をコンテキストとしてチャットに直接送信できます。
- セルのエラーを説明 — 例外が発生したセルに「出力のエラーをトラブルシューティング」という項目を表示し、トレースバックを添付したチャットのターンを開きます。
- セル出力について質問 — フォローアップの質問用に、出力を構造化されたコンテキストとして添付します。ビジョン対応モデルでは画像も含まれます。
- 出力ツールバーを表示 — 各出力の上に浮かぶツールバーで、説明 / 質問 / トラブルシューティング のクイックアクションを提供します。
それぞれ設定からユーザーごとに切り替え可能で (config.json の enable_explain_error、enable_output_followup、enable_output_toolbar として保存され、デフォルトはオン)、NBI_EXPLAIN_ERROR_POLICY / NBI_OUTPUT_FOLLOWUP_POLICY / NBI_OUTPUT_TOOLBAR_POLICY を介して管理者がロックできます。
そのドキュメントのカーネルがビジー状態の間はリバートがスキップされるため、実行中に到着した変更はその下で差し替えられるのではなく、セルの完了時に適用されます。また、再読み込みされたファイルを示す通知は、あなたが表示しているドキュメントに対してのみ表示されます。
ノートブックツールバーの生成
アクティブなノートブックでは、ツールバーにスパークルアイコンが表示されます。これをクリックすると、生成リクエストをその特定のノートブックに限定するポップオーバーが開きます。チャットサイドバーにコンテキストを競わせたくないマルチノートブックのセッションで便利です。
多言語対応およびカーネルを認識するノートブック
ノートブックの作成、セルの挿入、インライン生成は、Python を前提とするのではなく、実際に使用しているノートブックに従います。NBI はアクティブなノートブックのカーネルと言語を解決し、その両方をチャットコンテキスト、組み込みツール、ルールセットのスコープ設定に通すため、生成されるコードは対象のノートブックに一致し、languages: ['r'] や kernel_names: ['ir'] でスコープ設定されたルールは期待どおりに適用されます (以前はカーネルを受け取っていなかったインライン生成も含みます)。
エージェントが、現在のコンテキストで確立されていない言語のノートブックを必要とする場合、list-available-notebook-kernels ツールを呼び出し、名前を推測するのではなく、実際にインストールされている kernelspec から選択します。インストールされていないカーネルを要求した場合は、黙って Python ノートブックを生成するのではなく、明確なエラーで失敗するようになりました。
ディスク上で変更された開いているファイルを再読み込みする
NBI は、開いているドキュメントタブのファイルがディスク上で変更されると再読み込みするため、AI エージェントが Read/Write ツールを介して行った編集が、手動で更新することなくエディターに表示されます。ローカルに未保存の編集があるタブはスキップされるため、ユーザーの作業が上書きされることはありません。NBI 設定ダイアログ → 外部変更 → 「ディスク上で変更されたときに開いているファイルを更新する」 で切り替えられます (デフォルトはオン)。
設定
プロバイダー、モデル、API キーは NBI 設定から構成します — チャットパネルの歯車アイコン、/settings チャットコマンド、または JupyterLab のコマンドパレットから行えます。背景については、プロバイダーのブログ記事 を参照してください。
設定ファイル
NBI は設定を ~/.jupyter/nbi/config.json に保存します。また、環境全体の基本設定を <env-prefix>/share/jupyter/nbi/config.json でサポートしています — 組織はそこにデフォルト設定を配布でき、ユーザーの変更はその上にオーバーライドとして保存されます。
これらの設定ファイルには、プロバイダー、モデル、MCP の設定が保存されます。カスタム LLM プロバイダーの API キーもここに平文で保存されます — ~/.jupyter/nbi/config.json を git にコミットしたり、共有したり、ユーザー間で同期したりしないでください。キーが漏洩した場合は、直ちにプロバイダー側でローテーションしてください。
config.jsonを手動で編集した場合、反映には JupyterLab の再起動が必要です。設定ダイアログからの編集はリアルタイムで反映されます。
管理者ポリシー
設定パネルのほとんどのトグルは、組織の管理者がロックできます。2 つの形式があります:
ブール値ポリシーは *_POLICY サフィックスを使用し、3 つの値を受け入れます: user-choice (デフォルト — ユーザーが自由に切り替え可能)、force-on (ロックして有効)、force-off (ロックして無効)。強制されている場合、パネルのコントロールは「管理者によってロックされています」というツールチップとともに無効化され、クライアント側の書き込みは無視されます。
| 環境変数 | ロックする設定パネルのコントロール |
|---|---|
NBI_EXPLAIN_ERROR_POLICY | 「セルエラーを説明する」 |
NBI_OUTPUT_FOLLOWUP_POLICY | 「セル出力について質問する」 |
NBI_OUTPUT_TOOLBAR_POLICY | 「出力ツールバーを表示する」 |
NBI_CLAUDE_MODE_POLICY | 「Claude モードを有効にする」 |
NBI_ACP_MODE_POLICY | 「ACP モードを有効にする」(Agent Client Protocol を介した実験的なエージェントモード。最初のエージェントタイプは Codex。デフォルトは force-off、許可するには user-choice を設定) |
NBI_ACP_FULL_ACCESS_POLICY | ACP エージェントの「フルアクセス」: 確認なしでワークスペースファイルを編集しコマンドを実行します。Codex の workspace-write サンドボックス内で動作し、Codex の設定で有効にしない限りネットワークアクセスはオフです (デフォルトは force-off のため、信頼された読み取り専用コマンド以外ではエージェントが実行前に確認します。user-choice にするとユーザーが無人実行を選べます) |
NBI_CLAUDE_CONTINUE_CONVERSATION_POLICY | 「会話履歴を記憶する」 |
NBI_CLAUDE_CODE_TOOLS_POLICY | 「Claude Code ツール」 |
NBI_CLAUDE_JUPYTER_UI_TOOLS_POLICY | 「Jupyter UI ツール」 |
NBI_CLAUDE_SETTING_SOURCE_USER_POLICY | 設定ソース: ユーザー |
NBI_CLAUDE_SETTING_SOURCE_PROJECT_POLICY | 設定ソース: プロジェクト |
NBI_STORE_GITHUB_ACCESS_TOKEN_POLICY | 「GitHub Copilot アクセストークンを記憶する」 |
NBI_SKILLS_MANAGEMENT_POLICY | スキルタブ (force-off はタブを非表示にし API に 403 を返します。管理対象スキルのリコンサイラも無効になります) |
NBI_CLAUDE_MCP_MANAGEMENT_POLICY | Claude モードの MCP サーバータブ (force-off はタブを非表示にし /claude-mcp/* に 403 を返します。Claude 以外の MCP サーバータブとは独立しています) |
NBI_CLAUDE_PLUGINS_MANAGEMENT_POLICY | Claude モードのプラグインタブ (force-off はタブを非表示にし /plugins/* に 403 を返します) |
NBI_CLAUDE_BYPASS_PERMISSIONS_POLICY | Claude 権限モードセレクターの「権限をバイパス」(NBI_ACP_MODE_POLICY や NBI_ACP_FULL_ACCESS_POLICY と同様にデフォルトは force-off。user-choice はこのオプションを表示し、ユーザーはセッションごとに有効化します) |
NBI_TERMINAL_DRAG_DROP_POLICY | ターミナルのドラッグ&ドロップによるファイル添付機能 |
NBI_REFRESH_OPEN_FILES_ON_DISK_CHANGE_POLICY | 「ディスク上の変更時に開いているファイルを更新する」 |
NBI_CHATBOOK_POLICY | Chatbook の自然言語ノートブックセル (force-off はカーネル、ランチャータイル、設定タブ、コマンドを非表示にし、生成 API とメンション API に 403 を返します) |
| Chatbook NL の実行は個別に制限されます(ブール値のポリシーではありません): |
| 環境変数 / traitlet | 効果 |
|---|---|
NBI_CHATBOOK_MAX_EXECUTION_MODE | ユーザーはこれより緩い Chatbook モードを選択できません。値: always-confirm、confirm-if-risky、auto-run(デフォルト、制限なし)。 |
対応する traitlets は c.NotebookIntelligence.chatbook_policy と c.NotebookIntelligence.chatbook_max_execution_mode です。詳細は docs/chatbook.md を参照してください。
最初の 3 つにも NotebookIntelligence 上の対応する traitlets(explain_error_policy、output_followup_policy、output_toolbar_policy)があります。その他は必要に応じて同じ形で追加してください:
c.NotebookIntelligence.claude_mode_policy = "force-on"
c.NotebookIntelligence.claude_jupyter_ui_tools_policy = "force-off"
ユーザーごとの設定(セル出力機能ではデフォルトで有効)は config.json 内の enable_explain_error、enable_output_followup、enable_output_toolbar にあります。
リスト形式の拒否リスト(LLM プロバイダー、組み込みツール、コーディングエージェントのランチャータイル)は、*_POLICY 環境変数ではなく traitlets を使用します。disabled_providers、disabled_tools、disabled_coding_agent_launchers のレシピについては docs/admin-guide.md を参照してください。
非ブール値設定に対する値の存在によるロック: 環境変数に空でない値を設定すると、そのコントロールはその値に固定され、無効化されます。空または未設定 = ユーザーが選択可能。
| 環境変数 | 固定される項目 |
|---|---|
NBI_CHAT_MODEL_PROVIDER | General → Chat model → Provider |
NBI_CHAT_MODEL_ID | General → Chat model → Model |
NBI_INLINE_COMPLETION_MODEL_PROVIDER | General → Auto-complete model → Provider |
NBI_INLINE_COMPLETION_MODEL_ID | General → Auto-complete model → Model |
NBI_CLAUDE_CHAT_MODEL | Claude → Chat model(および別途固定されていない限り Inline chat model) |
NBI_CLAUDE_INLINE_CHAT_MODEL | Claude → Chat model → Inline chat model |
NBI_CLAUDE_INLINE_COMPLETION_MODEL | Claude → Auto-complete model |
ANTHROPIC_API_KEY | Claude → API Key(入力はロックされ空白になります。SDK は環境変数を直接読み取ります) |
ANTHROPIC_BASE_URL | Claude → Base URL |
NBI_ACP_CHAT_MODEL | ACP → Chat model |
OPENAI_API_KEY | ACP → API Key(入力はロックされ空白になります。エージェントは環境変数を直接読み取ります) |
OPENAI_BASE_URL | ACP → Base URL |
インライン chat は Anthropic API を直接呼び出しますが、他の Claude モードは Claude Code CLI を経由するため、デプロイメントによってそれぞれ異なるモデル ID が必要になる場合があります。これは inline_chat_model を使用し、それが未設定の場合は chat_model にフォールバックします。したがって NBI_CLAUDE_CHAT_MODEL は両方のサーフェスを制御します。これが設定されている間は、保存された inline_chat_model は無視され、そのコントロールは無効化されます。インライン chat を別のモデルに固定するには NBI_CLAUDE_INLINE_CHAT_MODEL も設定してください。これは優先され、何も再有効化しないため、両方のサーフェスは管理者の制御下に留まります。
NBI_ACP_AGENT_COMMAND(設定ロックではありません)は、選択した ACP エージェントタイプに対して NBI が起動するアダプターコマンドを上書きします。値はシェル分割されます。Codex の場合、NBI はそのコマンドに -c 承認オプションとサンドボックスオプションを追加するため、置き換えるコマンドはそれらを codex-acp に受け渡す必要があります。エージェントに登録されたデフォルトコマンドを使用するには、未設定のままにしてください。
プロバイダー ID: github-copilot、openai-compatible、litellm-compatible、ollama、none。*_MODEL_ID の値は、選択したプロバイダーが公開する任意の値です(例: gpt-4o、llama3:latest)。Claude のモデル ID は Anthropic API のリテラル ID です(例: claude-opus-4-7、claude-sonnet-4-6)。空文字列 = 「デフォルト(推奨)」、NBI_CLAUDE_INLINE_COMPLETION_MODEL は none(Claude モードではインライン補完なし)または inherit(General タブの自動補完モデルを使用)も受け付けます。
アップロード調整項目は、チャットサイドバーのファイル添付とターミナルへのドラッグ&ドロップの両方で使用される共有アップロードエンドポイントを制御します。
| 環境変数 | デフォルト | 動作 |
|---|---|---|
NBI_UPLOAD_MAX_MB | 50 | ファイルごとのサイズ上限(メガバイト)。上限を超えるリクエストは HTTP 413 を返します。上限を完全に無効にするには 0 に設定します。 |
NBI_UPLOAD_RETENTION_HOURS | 24 | ステージングされたアップロードが、次回のアップロードによる掃除まで一時ディレクトリに保持される時間。atexit パージのみを維持する(アップロードがセッションをまたいで保持される)には 0 に設定します。 |
同じ値は、NotebookIntelligence の upload_max_mb および upload_retention_hours トレイトレットからも設定できます。
GitHub Copilot ログインの記憶
NBI は GitHub Copilot のログインを記憶できるため、JupyterLab やシステムの再起動後に再度サインインする必要がありません。
注意
これを有効にすると、NBI はトークンを暗号化して
~/.jupyter/nbi/user-data.jsonに保存します。このファイルは決して共有しないでください。NBI_GH_ACCESS_TOKEN_PASSWORDにカスタム値を設定しない限り、暗号化にはデフォルトのパスワードが使用されます。共有システムやマルチテナントシステムでは、このオプションを有効にする前にカスタムパスワードを設定してください。
NBI_GH_ACCESS_TOKEN_PASSWORD=my_custom_password
有効にするには、設定ダイアログで GitHub Copilot アクセストークンを記憶する をチェックします。
保存されたトークンの認証に失敗した場合(期限切れ、失効、パスワードの不一致)、NBI は再度サインインするよう促します。
組み込みツール
これらのツールはエージェントモードおよび MCP 対応チャットで利用できます。
| ツール | 機能 |
|---|---|
Notebook Edit (nbi-notebook-edit) | JupyterLab ノートブックエディターでノートブックを編集します。 |
Notebook Execute (nbi-notebook-execute) | JupyterLab UI でノートブックを実行します。 |
Python File Edit (nbi-python-file-edit) | JupyterLab ファイルエディターで Python ファイルを編集します。 |
File Edit (nbi-file-edit) | Jupyter ルートディレクトリ内のファイルを編集します。 |
File Read (nbi-file-read) | Jupyter ルートディレクトリ内のファイルを読み取ります。 |
Command Execute (nbi-command-execute) | Agent UI または JupyterLab ターミナルに組み込まれたターミナルを使用してシェルコマンドを実行します。 |
マルチテナント環境では、nbi-command-execute と nbi-file-edit は実質的にユーザーとしての任意のコード実行となります。これらを無効化する方法については docs/admin-guide.md を参照してください。
Model Context Protocol (MCP) サポート
NBI は MCP サーバーと統合されています。stdio トランスポートと Streamable HTTP トランスポートの両方をサポートしています。ツールとプロンプトはサポートされていますが、リソースはサポートされていません。 サーバーのプロンプトは、チャット入力欄のスラッシュコマンドオートコンプリートに /mcp:<server>:<prompt> として表示されます。
MCP サーバーを追加するには ~/.jupyter/nbi/mcp.json を編集します。環境全体で共有されるベースファイル <env-prefix>/share/jupyter/nbi/mcp.json もサポートされています。
メモ
MCP にはツール呼び出し機能を備えた LLM モデルが必要です。NBI のすべての GitHub Copilot モデルはこれをサポートしています。その他のプロバイダーの場合は、ツール呼び出しに対応したモデルを選択してください。
注意
ほとんどの MCP サーバーは JupyterLab と同じマシン上で動作し、取り返しのつかない変更を加えたり、プライベートデータにアクセスしたりする可能性があります。信頼できるソースの MCP サーバーのみをインストールしてください。
MCP 設定の例
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/mbektas/mcp-test"
]
}
}
}
stdio サーバーでは、env の下に追加の環境変数を渡すことができます:
"mcpServers": {
"servername": {
"command": "",
"args": [],
"env": {
"ENV_VAR_NAME": "ENV_VAR_VALUE"
}
}
}
Streamable HTTP サーバーでは、リクエストヘッダーを指定することもできます:
"mcpServers": {
"remoteservername": {
"url": "http://127.0.0.1:8080/mcp",
"headers": {
"Authorization": "Bearer mysecrettoken"
}
}
}
設定済みのサーバーを削除せずに一時的に無効化するには、"disabled": true を設定します:
"mcpServers": {
"servername2": {
"command": "",
"args": [],
"disabled": true
}
}
ルールセット
NBI のルールセットシステムでは、AI プロンプトに自動的に注入されるガイドラインやベストプラクティスを定義できます — 一貫したコーディング標準、プロジェクトの慣習、ドメイン知識などのために役立ちます。ルールは ~/.jupyter/nbi/rules/ 内の Markdown ファイルで、ファイルパターン、カーネル、ディレクトリ、またはモード(ask、agent、inline-chat、chatbook)によってスコープを設定できます。
2 行の例:
---
priority: 10
---
- Always use type hints in Python functions.
- Add docstrings to all public functions.
詳細(frontmatter リファレンス、モード固有のルール、自動リロード)については、docs/rulesets.md を参照してください。
Claude Skills
設定パネルには、Claude が呼び出せるスキルを管理するためのトップレベルの Skills タブが表示されます。スキルは ~/.claude/skills/(ユーザー)または <project>/.claude/skills/(プロジェクト)に保存されます。スキルのインラインでの作成と編集、複製、名前変更、削除(取り消し可能)、または公開 GitHub リポジトリからのインポートができます。このタブはどのモードでも表示されますが、Claude モードがオフの場合、スキルは Claude セッション内でのみ有効になる旨のヒントバナーが表示されます(今スキルを作成しておき、後で Claude モードをオンにしたときに使用するのに便利です)。
組織全体でのデプロイでは、管理者が厳選されたスキルのマニフェストを配布し、NBI_SKILLS_MANIFEST を設定して同期を保つことができます。この方法でインストールされたスキルは Managed とマークされ、UI では読み取り専用になります。管理対象のスキルを維持しつつ、アドホックな GitHub インポートを禁止したい管理者は NBI_ALLOW_GITHUB_SKILL_IMPORT=false を使用します。
詳細については、docs/skills.md を参照してください。
Claude MCP サーバー
Claude モードが有効で、かつ Claude CLI が利用可能な場合、設定パネルに MCP サーバータブが表示され、Claude Code が ~/.claude.json およびプロジェクトの .mcp.json から読み取るユーザー、プロジェクト、ローカルスコープの MCP エントリを管理できます。これは NBI 自身の MCP サーバータブ (Claude 以外のチャット経路で使用されるサーバーを管理するもの) とは別のタブです。この 2 つが同時に表示されることはなく、設定ダイアログには現在のモードに該当する方だけが表示されます。
読み取りは Claude の JSON 設定ファイルから直接行われます。書き込み (追加と削除) は claude mcp add と claude mcp remove をシェル経由で呼び出すため、副作用 (プロジェクト信頼のプロンプト、OAuth の記録管理) については Claude が引き続き信頼できる唯一の情報源となります。各サーバーエントリは削除せずにワークスペースごとにオンまたはオフを切り替えられ、MCP サーバーを追加ダイアログでは JSON 貼り付けの経路が利用できます。これは Claude / Cursor / VS Code の MCP 設定の塊を受け取り、形式を検証したうえでフォームに事前入力します。管理者は NBI_CLAUDE_MCP_MANAGEMENT_POLICY=force-off でこのタブをロックできます。
Claude プラグイン
Claude モードが有効で、かつ Claude CLI が利用可能な場合、設定パネルに プラグインタブが表示され、インストール、アンインストール、有効化、無効化、マーケットプレイスの追加のために claude plugin をラップします (たとえば、GitHub リポジトリからマーケットプレイスを追加し、それが公開するプラグインをインストールするなど)。インストールされた各プラグインの説明、作者、バージョン、ソースがインラインで表示され、上流に新しいバージョンがある場合、このタブはプラグインごとの更新ボタンを表示します。マーケットプレイスピッカーでは、設定済みのマーケットプレイスを閲覧し、そこから直接プラグインをインストールできます。GitHub でホストされているマーケットプレイスは、Skills のインポートと同じ GITHUB_TOKEN / GH_TOKEN / gh auth token の優先順位を再利用します。トークンは環境変数を介してサブプロセスに渡され、argv や DEBUG ログに決して現れません。プラグインとは何か、マーケットプレイスがどのように機能するかについては、Anthropic のプラグインドキュメントを参照してください。
管理者は NBI_CLAUDE_PLUGINS_MANAGEMENT_POLICY=force-off でタブ全体をロックするか、タブを維持したまま NBI_ALLOW_GITHUB_PLUGIN_IMPORT=false で GitHub 由来のマーケットプレイスのみをブロックできます。
チャットのフィードバック
次の設定で、AI の応答に対する高評価/低評価のフィードバックを有効にできます:
c.NotebookIntelligence.enable_chat_feedback = True
…または CLI 経由で:
jupyter lab --NotebookIntelligence.enable_chat_feedback=true
このフィードバックはプロセス内の telemetry イベントを発火します。デフォルトでは何もプロセスの外に出ません。テレメトリイベントの全一覧と、それらをオブザーバビリティスタックに接続する方法については、管理者ガイドを参照してください。
高評価/低評価のボタンはデフォルトではホバー時に表示されます。常に表示させておくには、次を有効にしてください:
c.NotebookIntelligence.enable_chat_feedback_always_visible = True
## 構成の準備状態
NBI Settings は Status カードを開いたところに表示され、1 つの問いに答えます。このデプロイは動作するように構成されているか、そうでなければどの部分が欠けているのか? 各チェックは ok、warn、または blocked を報告し、ok でないものには失敗内容だけでなく次のアクションが示されます(「claude CLI が見つかりませんでした」に加えて「インストールするか、NBI_CLAUDE_CLI_PATH を設定して再起動してください」)。
これは開いたときに実行され、コストはかかりません。プロバイダーとモデルを解決し、モデル一覧に到達可能かどうか、選択したモデルがエンドポイントで実際に提供されているかどうかを確認し、エージェントモードについては CLI が --version に応答することと、認証情報が存在することを確認します。キーの欠落はエラーではなく警告です。Claude CLI と ACP エージェントは、NBI からは見えない独自のサブスクリプションログインを保持できるためです。
Test the endpoint は、最初に確認したうえで、構成済みのモデルに短いリクエストを 1 つ送信します。これは、これより安価な方法では見つけられない 2 つの障害を捉える唯一の手段です。すなわち、200 を返すがストリーミングではなくバッファリングするゲートウェイと、tools フィールドを除去するためにエージェントモードがツールを一切呼び出さなくなるプロキシです。モデルの出力は保持されないため、結果はサポートチケットに貼り付けても安全です。
このボタンは課金が発生する唯一の準備状態チェックであるため、オフスイッチがあります。NBI_READINESS_LIVE_CHECK=off(traitlet readiness_live_check_allowed、デフォルトはオン)は、他のすべてのチェックを利用可能なままにしてこれを拒否します。ライブテストはサーバーごとに 1 つずつ実行され、2 つ目の同時リクエストはトークンを消費する代わりに 429 を受け取ります。
パフォーマンス診断
「このターンの時間はどこに消えたのか」に答えるためのオプトインモードで、NBI が本来より遅く感じられるデプロイメント――社内 LLM ゲートウェイ、ネットワークホームディレクトリ、TLS を傍受するプロキシ――を対象としています。デフォルトではオフで、オフのときのコストは計測ポイントごとに 1 回の真偽値チェックだけです。
有効にする。 NBI の設定、Performance タブ、Enabled。再起動なしで即座に反映されます。
ターンを読む。 各チャットターンは、フェーズのタイムライン(ルールとコンテキストの準備、エージェントの接続と起動、最初のトークンまでの時間、ストールイベントを含むストリーミング、ツール呼び出し、あなたの応答を待っていた時間)に加えて、トークン数と SDK が報告する API 時間を記録します。テーブルには直近のターンが 1 行ずつ表示され、Verdict 列が支配的なフェーズを示します。最も重要な比較は Active と API ms です。互いに近ければ時間はゲートウェイまたはモデル側にあり、大きく離れていればローカル側にあります。行を展開すると、そのターンのスパンが属性付きの比例バーとして表示されます。各ターンは Jupyter サーバーログの 1 行の perf turn ... INFO 行としても要約されるため、ヘッドレス環境でも UI なしで同じシグナルが得られます。
環境を読む。 Run probe はターンではなくマシンを計測します。設定ディレクトリと ~/.claude ディレクトリのファイルシステムレイテンシーとスループット(ファイルシステム種別とマウントオプション付き)、インタープリターと CLI のコールドスタートコスト、プロセスとホストの競合です。結果はグループ化およびバンディングされるため、遅いネットワークファイルシステムやスロットリングされたコンテナは JSON ブロブに埋もれることなく一文で指摘されます。オプトインのネットワークチェックは、設定されたエンドポイントへの接続を追加して DNS、TCP、TLS の時間を計測し、提示された証明書チェーンを取得します。これにより TLS 傍受が可視化されます。実行前に確認を求め、接続先のホストを明示します。
プライバシー。 記録されるもの: 所要時間、回数、バイトサイズ、ステータス列挙値、トークン数、およびツール、サーバー、モデル、プロバイダーの名前。記録されないもの: プロンプトまたは応答のテキスト、ファイルの内容、絶対パス、環境変数の値、API キー、例外メッセージ、ホスト名。これは慣習ではなく属性ごとの固定された許可リストによって強制され、デフォルトの redacted 詳細レベルではさらにファイルのベース名とモデル、ツール、サーバーの名前がハッシュ化されます。
セッションをまたいだ収集。 ターンは任意で <nbi-dir>/perf/ に JSON Lines として追記でき、サイズと経過時間に上限のある保持が適用されます。ネットワークホームディレクトリでは、NBI_PERF_LOG_DIR でログをローカルのスクラッチ領域に向けてください。
スパンとイベントのリファレンス、プローブのしきい値、遅いゲートウェイ、遅いホームディレクトリ、傍受プロキシの診断例、および JSONL スキーマを含む完全なガイド: docs/performance-diagnostics.md。
| 環境変数 | 効果 |
|---|---|
NBI_PERF_DIAGNOSTICS | 有効状態をオンまたはオフに固定します(値ロック。UI ではトグルがロックとして表示されます)。 |
NBI_PERF_DIAGNOSTICS_POLICY | user-choice(デフォルト)、force-off、または force-on(属性を秘匿した状態での全社収集を強制)。 |
NBI_PERF_PROBE_NETWORK | off はプローブのネットワークチェックだけを無効にし、それ以外は利用可能なままにします。 |
NBI_PERF_LOG_DIR | JSONL パフォーマンスログのディレクトリをリダイレクトします。 |
ドキュメント
docs/admin-guide.md— デプロイ、環境変数、セキュリティモデル、エアギャップ、マルチテナンシー。docs/skills.md— Claude Skills の管理と組織マニフェストのリコンサイラ。docs/rulesets.md— ルールセットの frontmatter と検出。docs/acp.md— 実験的な ACP エージェントモードの使用方法とその制限。docs/chatbook.md— Chatbook セルの記述、実行モード、エクスポート、そしてセル単位のサンドボックスが存在しない理由。docs/chatbook-extensions.md— 動的な Chatbook コンテキストとメンションプロバイダー。docs/troubleshooting.md— コピー&ペーストで使える修正方法を添えたよくある問題。docs/performance-diagnostics.md: ターンのタイムライン、環境プローブ、そしてその両方の読み方。PRIVACY.md— NBI がどのプロバイダーに何を送信するか、および送信先の許可リスト。SECURITY.md— 脆弱性の報告方法。CHANGELOG.md— リリース履歴。CONTRIBUTING.md— ソースからの NBI のビルド。NBI を使いたいだけの場合は読み飛ばしてください。
さらに読む
- Introducing Notebook Intelligence!
- Building AI Extensions for JupyterLab
- Building AI Agents for JupyterLab
- Notebook Intelligence now supports any LLM Provider and AI Model!
ロードマップ
NBI 6.x が現在のラインです。新機能はマイナーリリース(6.1、6.2、…)で提供され、破壊的変更はメジャーリリースに限定され、changelog で告知されます。6.0 自体は破壊的リリースではありません。これは Chatbook の登場を意味するもので、trailet、環境変数、REST ルート、オンディスク形式のいずれも名前変更や削除は行われていないため、5.x からのアップグレードに移行作業は不要です。4.x からのアップグレードですか? fastmcp → mcp の依存関係の入れ替え、新しいパスサンドボックス、ワークスペースファイル添付の挙動変更については、5.0.0 移行ノートを参照してください。
ライセンス
GPL-3.0 の下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。