
Notebook Intelligence
notebook-intelligence
README
Notebook Intelligence
Notebook Intelligence (NBI) 是一个 AI 编码助手和用于 JupyterLab 的可扩展 AI 框架。它可以使用 GitHub Copilot 或来自任何其他 LLM 提供商的 AI 模型,包括来自 Ollama 的本地模型。NBI 通过 AI 辅助大大提高了 JupyterLab 用户的生产力。
请参阅博客文章了解功能和用法。
- Notebook Intelligence 介绍!
- 为 JupyterLab 构建 AI 扩展
- 为 JupyterLab 构建 AI 代理
- Notebook Intelligence 现在支持任何 LLM 提供商和 AI 模型!
使用内联聊天生成代码
自动完成
<img src="media/inline-completion.gif" alt="自动完成" width=700 />
聊天界面
<img src="media/copilot-chat.gif" alt="聊天界面" width=600 />
安装
NBI 需要 JupyterLab >= 4.0.0。要安装扩展,请运行以下命令并重启 JupyterLab。
pip install notebook-intelligence
配置选项
配置 LLM 提供商和模型
您可以使用 Notebook Intelligence 设置对话框配置模型提供商和模型选项。您可以从 JupyterLab 设置菜单 -> Notebook Intelligence 设置,使用 NBI 聊天中的 /settings
命令或使用命令面板访问此对话框。有关更多详细信息,请参阅博客文章。
<img src="media/provider-list.png" alt="设置对话框" width=500 />
JupyterLab 的 Notebook Intelligence 扩展
此扩展由一个名为 notebook_intelligence
的 Python 包(用于服务器扩展)和一个名为 @notebook-intelligence/notebook-intelligence
的 NPM 包(用于前端扩展)组成。
记住 GitHub Copilot 登录
Notebook Intelligence 使用系统密钥环来存储 GitHub 访问令牌。如果您的存储的访问令牌无法登录(由于过期或其他原因),系统会提示您在 UI 上重新登录。如果您在使用此功能时遇到问题,请检查 Jupyter 服务器日志和 keyring 包 文档。
要让 Notebook Intelligence 在您登录后记住您的 GitHub 访问令牌:
jupyter lab --NotebookIntelligence.github_access_token=remember
一旦您将其设置为记住,即使您在后续启动时跳过 --NotebookIntelligence.github_access_token
,它也会继续记住。要忘记存储的 GitHub 访问令牌:
jupyter lab --NotebookIntelligence.github_access_token=forget
配置文件
NBI 将配置保存在 ~/.jupyter/nbi-config.json
。它还支持 <env-prefix>/share/jupyter/nbi-config.json
中的环境范围基本配置。组织可以在此环境范围配置路径中提供默认配置。用户的更改将作为覆盖存储在 ~/.jupyter/nbi-config.json
中。
这些配置文件用于保存 LLM 提供商、模型和 MCP 配置。请注意,您为自定义 LLM 提供商输入的 API 密钥也将存储在这些配置文件中。
[!IMPORTANT] 请注意,手动更新 nbi-config.json 需要重启 JupyterLab 才能生效。
模型上下文协议 (MCP) 支持
NBI 与 MCP 服务器无缝集成。它支持具有标准输入/输出 (stdio) 和服务器发送事件 (SSE) 传输的服务器。MCP 支持目前仅限于服务器工具。
您可以通过编辑配置文件 nbi-config.json 轻松地将 MCP 服务器添加到 NBI。只需添加一个键 "mcp" 和 "mcpServers" 在它下面,如下所示。
[!NOTE] 使用 MCP 服务器需要具有工具调用功能的 LLM 模型。NBI 中提供的所有 GitHub Copilot 模型都支持此功能。如果您使用其他提供商,请确保选择具有工具调用功能的模型。
[!CAUTION] 请注意,大多数 MCP 服务器与您的 JupyterLab 安装在同一台计算机上运行,它们可能会对您的计算机进行不可逆的更改和/或访问私人数据。请确保您只安装来自可信来源的 MCP 服务器。
{
"chat_model": {
...
},
...<其他配置>,
"mcp": {
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/mbektas/mcp-test"
]
},
}
}
}
这将自动在 NBI 中创建一个新的聊天参与者,您可以通过以 @mcp
开头的提示来访问它。使用 @mcp /info
提示来获取有关您配置的 MCP 服务器提供的工具的信息。此聊天参与者将可以访问您配置的服务器提供的所有工具。
<img src="media/mcp-prompt.png" alt="设置对话框" width=600 />
默认情况下,每次对 MCP 服务器的工具调用都需要批准。如果您想自动批准工具,您可以使用 nbi-config.json 中的 "alwaysAllow": []
配置键。只需列出工具的名称即可。
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/mbektas/mcp-test"
],
"alwaysAllow": ["list_allowed_directories", "list_directory"]
},
}
对于具有 stdio 传输的服务器,您还可以使用 env
键设置其他环境变量。环境变量指定为键值对。
"mcpServers": {
"servername": {
"command": "",
"args": [],
"env": {
"ENV_VAR_NAME": "ENV_VAR_VALUE"
}
},
}
以下是具有 SSE 传输的服务器配置示例。对于 SSE 传输服务器,您还可以指定要作为请求的一部分发送的标头。
"mcpServers": {
"remoterservername": {
"url": "http://127.0.0.1:8080/sse",
"headers": {
"Authorization": "Bearer mysecrettoken"
}
},
}
如果您配置了多个服务器,但您想暂时禁用一些服务器,您可以使用 disabled
键。servername2
将被禁用,并且在 @mcp
聊天参与者中不可用。
"mcpServers": {
"servername1": {
"command": "",
"args": [],
},
"servername2": {
"command": "",
"args": [],
"disabled": true
},
}
对 MCP 服务器进行分组
当您将多个 MCP 服务器集成到 NBI 时,它们的所有工具都将在同一个聊天参与者 @mcp
下可用。但是,这在许多情况下可能并不理想。您可能希望根据其功能对某些服务器及其工具进行分组。NBI 允许您通过配置 MCP 聊天参与者轻松地做到这一点。您可以列出每个自定义参与者的服务器。如果有任何未分配的 MCP 服务器,那么它们将用于默认的 @mcp
聊天参与者。
以下是创建自定义 MCP 参与者的示例。此配置会产生两个聊天参与者 @mcp-fs
(具有 filesytem
MC 服务器工具)和 @mcp
(具有 servername1
和 servername1
MCP 服务器工具)。
{
"chat_model": {
...
},
...<其他配置>,
"mcp": {
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/mbektas/mcp-test"
]
},
"servername1": {
"command": "",
"args": [],
},
"servername2": {
"command": "",
"args": [],
"disabled": true
}
},
"participants": {
"fs": {
"name": "MCP - 文件系统",
"servers": ["filesystem"]
}
}
}
}
在 MCP 聊天参与者中使用 NBI 工具
NBI 允许您从 MCP 参与者访问内置工具。您可以通过将内置 NBI 工具列表添加到您的 MCP 参与者配置中来实现。可用于 MCP 的内置工具包括 create_new_notebook
、add_markdown_cell_to_notebook
、add_code_cell_to_notebook
。以下是将所有这些工具集成到 MCP 参与者 @mcp-fs
的示例。
"participants": {
"fs": {
"name": "MCP - 文件系统",
"servers": ["filesystem"],
"nbiTools": [
"create_new_notebook",
"add_markdown_cell_to_notebook",
"add_code_cell_to_notebook"
]
}
}
此聊天参与者将允许您运行如下所示的示例提示。
@mcp-fs 列出我可以访问的目录。
@mcp-fs 向此笔记本添加一个演示 ipywidgets Button 的代码单元格。
开发者文档
有关在本地构建和贡献的信息,请参阅开发者文档。
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。