Token导航 LogoToken导航TokenDH.com
jlab MCP logo
运维云端stdio官方级别未说明来源级核验

jlab MCP

MCP Server

一个通过JupyterLab在SLURM集群上运行Python代码的Model Context Protocol (MCP)服务器,支持GPU计算节点。

工具数

11

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude云端部署Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

kdkyum

提供方

kdkyum

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run python -m pytest tests/test_slurm.py tests/test_notebook.py tests/test_image_utils.py -v

详细介绍

jlab mcp

A. 模型上下文协议(MCP) 该服务器使Claude Code能够通过在SLURM集群上运行的JupyterLab在GPU计算节点上执行Python代码。

灵感来自并改编自 goodfire ai/抄写员,为Claude提供基于笔记本电脑的代码执行。该项目将这种方法应用于HPC/SLURM环境,其中GPU资源是通过作业调度器分配的。

建筑

Claude Code
    ↕ stdio
MCP Server
    ↕ HTTP/WebSocket
JupyterLab (SLURM compute node or local subprocess)   ← one server, many kernels
    ↕
IPython Kernels (GPU access)

JupyterLab可以在SLURM计算节点(HPC集群)上运行,也可以作为本地子进程(笔记本电脑/工作站)运行。服务器与MCP服务器分开管理——您可以从以下位置启动它 jlab-mcp start 并且它一直在Claude Code会话中运行。所有会话在此共享服务器上创建单独的内核。每个项目目录都有自己的JupyterLab实例——状态文件的作用域由工作目录的哈希值决定,其中 jlab-mcp start 被运行。

本地模式

在没有SLURM的机器上(笔记本电脑、工作站),jlab-mcp会自动将JupyterLab作为本地子进程运行。模式自动检测:如果 sbatch 在PATH上,使用SLURM模式;否则为本地模式。

用环境变量覆盖:

export JLAB_MCP_RUN_MODE=local   # force local mode
export JLAB_MCP_RUN_MODE=slurm   # force SLURM mode

在本地模式下, jlab-mcp start 跑步在 前景 --按Ctrl+C停止。状态文件使用与SLURM模式相同的格式,因此MCP服务器在这两种模式下的工作方式相同。

设置

# Install (no git clone needed)
uv tool install git+https://github.com/kdkyum/jlab-mcp.git

SLURM作业激活 .venv当前工作目录.使用计算依赖关系在共享文件系统上设置项目的venv:

cd /shared/fs/my-project
uv venv
uv pip install jupyterlab ipykernel matplotlib numpy
uv pip install torch --index-url https://download.pytorch.org/whl/cu126  # GPU support

用法

1.启动计算节点

在单独的终端中,启动SLURM作业:

jlab-mcp start              # uses default time limit (4h)
jlab-mcp start 24:00:00     # 24 hour time limit
jlab-mcp start 1-00:00:00   # 1 day

这将提交作业并等待JupyterLab准备就绪:

SLURM job 24215408 submitted, waiting in queue...
Job running on ravg1011, JupyterLab starting...
JupyterLab ready at http://ravg1011:18432

2.使用克劳德代码

在另一个终端中,启动Claude Code。MCP服务器自动连接到正在运行的JupyterLab。

3.完成后停止

jlab-mcp stop

CLI命令

命令描述
jlab-mcp start [TIME] [--debug]启动JupyterLab并等待准备就绪。在SLURM模式下,提交作业并轮询,直到服务器做出响应。在本地模式下,生成一个子进程并在前台阻塞。可选时间覆盖 JLAB_MCP_SLURM_TIME (例如。 24:00:00).如果现有服务器仍在运行,则跳过提交。
jlab-mcp stop停止JupyterLab。在SLURM模式下,运行 scancel在本地模式下,将SIGTERM发送到子进程。在这两种情况下都会删除状态文件。
jlab-mcp wait从另一个终端轮询状态文件,直到服务器准备就绪(最多10分钟)。打印状态转换(pending → starting → ready).可用于脚本或监控 start 从一个单独的外壳中进步。
jlab-mcp status打印服务器状态、模式、主机名、端口以及进程/作业是否处于活动状态。列出具有执行状态和上次活动时间的活动内核。通过以下方式查询GPU内存和利用率 nvidia-smi 在临时内核上。
jlab-mcp运行MCP服务器(stdio传输,由Claude Code使用,不手动运行)

所有命令接受 --debug 在stderr上启用详细日志记录(状态文件读取、SLURM参数、健康检查尝试、连接文件路径)。

SLURM工作 幸存克劳德代码重启你只需要跑 jlab-mcp start 每次工作会议一次。

配置

所有设置都可以通过环境变量进行配置。特定集群没有硬编码值。

环境变量默认值描述
JLAB_MCP_DIR~/.jlab-mcp基础工作目录
JLAB_MCP_NOTEBOOK_DIR./notebooks笔记本存储(相对于cwd)
JLAB_MCP_LOG_DIR~/.jlab-mcp/logsSLURM作业日志
JLAB_MCP_STATUS_DIR~/.jlab-mcp/servers/{name}-{hash}每个项目状态目录(自动从cwd派生)
JLAB_MCP_CONNECTION_DIR~/.jlab-mcp/connections连接信息文件
JLAB_MCP_SLURM_PARTITIONgpuSLURM分区
JLAB_MCP_SLURM_GRESgpu:1SLURM通用资源
JLAB_MCP_SLURM_CPUS4每个任务的CPU
JLAB_MCP_SLURM_MEM32000内存(MB)
JLAB_MCP_SLURM_TIME4:00:00挂钟时间限制
JLAB_MCP_SLURM_MODULES*(空)*要装载的空间分隔模块(例如。 cuda/12.6)
JLAB_MCP_PORT_MIN18000端口范围下限
JLAB_MCP_PORT_MAX19000端口范围上限
JLAB_MCP_RUN_MODE*(自动)*localslurm (自动检测基于 sbatch 可用性)
JLAB_MCP_LOCAL_BIND_IP127.0.0.1本地模式绑定地址

示例:使用A100 GPU和CUDA模块的集群

export JLAB_MCP_SLURM_PARTITION=gpu1
export JLAB_MCP_SLURM_GRES=gpu:a100:1
export JLAB_MCP_SLURM_CPUS=18
export JLAB_MCP_SLURM_MEM=125000
export JLAB_MCP_SLURM_TIME=1-00:00:00
export JLAB_MCP_SLURM_MODULES="cuda/12.6"

Claude代码集成

添加 ~/.claude.json 或项目 .mcp.json:

{
  "mcpServers": {
    "jlab-mcp": {
      "command": "jlab-mcp",
      "env": {
        "JLAB_MCP_SLURM_PARTITION": "gpu1",
        "JLAB_MCP_SLURM_GRES": "gpu:a100:1",
        "JLAB_MCP_SLURM_MODULES": "cuda/12.6"
      }
    }
  }
}

MCP服务器使用工作目录查找 .venv 对于计算节点。Claude Code从您的项目目录启动,因此它会自动选择正确的venv。

MCP工具

工具说明
start_new_notebook在共享服务器上启动内核,创建空笔记本
start_notebook将新内核附加到现有笔记本,返回单元格内容
execute_code插入新的代码单元格并执行它(支持位置插入)
edit_cell仅编辑单元格源,不执行(清除过时的输出)
run_cell运行现有单元格而不修改其源
add_markdown将标记单元格添加到笔记本(支持位置插入)
execute_scratch在实用程序内核上运行代码(无笔记本保存,无会话状态)
interrupt_kernel在不关闭会话的情况下中断正在运行的执行
shutdown_session停止内核(SLURM作业在其他会话中保持活动状态)
ping轻量级健康检查——验证JupyterLab是否可访问(不需要内核)
check_resources检查计算节点上的CPU、内存和GPU使用情况(无需会话)

资源: jlab-mcp://server/status --返回共享服务器信息和活动会话。

会话生命周期

  • start_new_notebook:创建新内核和新笔记本
  • start_notebook:将新内核附加到现有笔记本
  • 重新启动内核: shutdown_session + start_notebook(same_path) =同一笔记本电脑上的新内核
  • shutdown_session:仅杀死内核。SLURM作业继续运行。
  • SLURM工作死亡:下一个工具调用返回错误。跑 jlab-mcp start 重新启动。

测试

# Unit tests (no SLURM needed)
uv run python -m pytest tests/test_slurm.py tests/test_notebook.py tests/test_image_utils.py -v

# Integration tests (requires running `jlab-mcp start` first)
uv run python -m pytest tests/test_tools.py -v -s --timeout=600

致谢

这个项目的灵感来自 goodfire ai/抄写员,为Claude提供基于MCP的笔记本代码执行。工具界面设计、图像大小调整方法和笔记本管理模式都改编自scribe,用于HPC/SLURM集群。

许可证

麻省理工学院

目录标签

目录标签

PythonClaude云端部署GPU计算本地部署Python执行SLURM集群JupyterLab

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

11

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononeremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP