使用说明
Jupyter内核MCP服务器
一个模型上下文协议(MCP)服务器,通过Jupyter内核为AI助手提供有状态、持久的工作空间。
这是什么?
此MCP服务器使AI助手(如Claude)能够在持久的Jupyter内核会话中执行代码。与每次重新开始的传统代码执行不同,这会在对话中保持状态——变量、导入的库和正在运行的进程在消息之间持续存在。
主要特点
- 持久状态:变量和导入在消息中仍然可用
- 多语言支持:Python、R、Julia、Go、Rust、TypeScript等
- 笔记本管理:创建、编辑和管理Jupyter笔记本
- 实时执行:代码运行时的流输出
- 搜索功能:在所有笔记本中查找代码
- 自动重新连接:WebSocket连接以指数回退重试
- AI友好发现:针对下一步行动的情境感知建议
用例
- 数据分析:一次性加载大型数据集,跨多个对话进行分析
- 发展:逐步构建和测试代码,并完全保留状态
- 教育:循序渐进的教程,每一步都建立在上一步的基础上
- 研究:跨越多个会话的长期实验
设置
1.克隆存储库
git clone <your-repository-url>
cd jupyter-kernel-mcp
2.安装依赖项
此项目使用 uv 用于依赖性管理。如果你没有 uv 安装:
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
3.配置环境
服务器需要配置才能连接到Jupyter实例。复制示例配置文件:
cp .env.example .env
然后编辑 .env 根据您的具体设置:
# For Jupyter server
JUPYTER_HOST=localhost
JUPYTER_PORT=8888
JUPYTER_TOKEN=your-jupyter-token-here
4.查找您的Jupyter令牌
如果你在本地运行Jupyter:
jupyter server list
这将显示如下输出:
http://localhost:8888/?token=abc123... :: /path/to/notebooks
复制令牌值并将其添加到您的 .env 文件。
配置选项
Jupyter服务器设置
JUPYTER_HOST-Jupyter服务器的主机名或IP地址(默认值:localhost)JUPYTER_PORT-Jupyter服务器正在监听的端口(默认:8888)JUPYTER_PROTOCOL-HTTP连接协议:http或https(默认值:http)JUPYTER_WS_PROTOCOL-WebSocket连接协议:ws或wss(默认值:ws)JUPYTER_TOKEN-Jupyter的身份验证令牌(必需)
示例配置
本地Jupyter服务器
JUPYTER_HOST=localhost
JUPYTER_PORT=8888
JUPYTER_PROTOCOL=http
JUPYTER_WS_PROTOCOL=ws
JUPYTER_TOKEN=your-token-here
使用HTTPS的远程Jupyter服务器
JUPYTER_HOST=jupyter.example.com
JUPYTER_PORT=443
JUPYTER_PROTOCOL=https
JUPYTER_WS_PROTOCOL=wss
JUPYTER_TOKEN=your-secure-token
运行服务器
先决条件
-
Jupyter服务器:你需要一个正在运行的Jupyter服务器。如果你没有:
# Install Jupyter pip install jupyter # Start Jupyter (in a separate terminal) jupyter notebook --no-browser -
环境配置:确保您已创建并配置了
.env文件(请参阅上面的“设置”部分)
启动MCP服务器
Jupyter运行并配置后:
./run_server.sh
或者直接使用Python:
uv run python jupyter_kernel_mcp.py
服务器将尝试使用您的Jupyter实例中的配置进行连接 .env 文件。
MCP客户端配置
要将此服务器与MCP客户端(如Claude Desktop)一起使用,请将以下内容添加到MCP设置中:
{
"jupyter-kernel": {
"command": "/path/to/jupyter-kernel-mcp/run_server.sh"
}
}
替换 /path/to/jupyter-kernel-mcp 使用克隆此存储库的实际路径。
可用工具
服务器为AI助手提供了多种工具:
核心执行工具
compute()-智能执行,自动检测流媒体需求q()-快速计算,计算简单execute()-完全控制执行,结果详细stream_execute()-带有时间戳的实时流式输出
发现和状态管理
suggest_next()-基于当前内核状态的上下文感知建议vars()-查看内存中的变量workspace()-所有内核和笔记本的鸟瞰图kernel_state()-详细的内存使用状态检查
笔记本操作
notebook()-自然语言笔记本操作(创建、添加、读取等)create_notebook()-创建新笔记本add_to_notebook()-向现有笔记本添加代码search_notebooks()-搜索所有笔记本
系统管理
list_available_kernels()-查看支持的语言reset()-清除内核状态(谨慎使用!)
新功能
自动重新连接
服务器现在包括具有指数回退的自动WebSocket重新连接。如果连接失败,它将:
- 随着延迟的增加(1秒、2秒、4秒、8秒,最多30秒)重试
- 重试时显示鼓励消息
- 优雅地处理瞬态网络问题
情境感知建议
新的 suggest_next() 该工具根据您的当前状态提供智能建议:
# After loading a DataFrame
>>> suggest_next()
🔮 Based on your current state:
📊 You have a DataFrame 'df' loaded (1000×5)
You might want to:
• df.describe() - Get statistical summary
• df.info() - Check data types and memory usage
• df.head(10) - View first 10 rows
• df.isnull().sum() - Check for missing values
故障排除
连接被拒绝
如果您遇到连接错误:
- 验证Jupyter是否正在运行:
jupyter server list - 检查你的
JUPYTER_HOST和JUPYTER_PORT设置 - 确保防火墙允许连接到Jupyter端口
认证失败
如果您遇到身份验证错误:
- 验证您的
JUPYTER_TOKEN是正确的 - 尝试通过重新启动Jupyter来重新生成令牌
- 检查令牌是否完全匹配(没有额外空格)
