Jumpboot MCP服务器
MCP(模型上下文协议)服务器,用于封装 跳靴 Go库,使AI助手能够动态创建和管理Python环境、安装包和执行Python代码。
特性
- 环境管理:创建隔离的Python环境(完全独立于系统Python)
- 软件包安装:通过pip或conda或requirements.txt文件安装软件包
- 代码执行:运行Python代码片段或脚本文件
- REPL会话:维护具有保留状态的持久Python REPL会话
- 工作空间管理:用于写入文件、克隆存储库和执行脚本的持久代码文件夹
- 长时间运行的流程:生成GUI应用程序、服务器、游戏和其他持久Python进程
- 环境可移植性:冷冻和恢复环境以实现可重复性
- 服务器联合:通过mDNS发现并代理远程jumpboot mcp服务器
目录
安装
先决条件
- 转到1.21+
- Git
从源代码构建
git clone https://github.com/richinsley/jumpboot-mcp.git
cd jumpboot-mcp
go build -o jumpboot-mcp .快速开始
本地使用(stdio)
在本地为Claude Desktop或Claude Code运行服务器:
./jumpboot-mcpHTTP服务器
作为HTTP服务器运行以进行远程访问或容器:
./jumpboot-mcp -transport http -addr :8080联合设置
运行一个在网络上声明自己的HTTP服务器:
# On a GPU server
./jumpboot-mcp -transport http -addr :8080 -note "GPU server for ML"然后运行一个本地stdio实例,该实例可以发现并代理它:
# On your local machine - discovers gpu-server automatically
./jumpboot-mcp运输选项
| 标志 | 默认值 | 描述 |
|---|---|---|
-transport | stdio | 运输类型: stdio 或 http |
-addr | :8080 | HTTP服务器地址 |
-endpoint | /mcp | HTTP端点路径 |
-stateless | false | 在无状态模式下运行(无会话跟踪) |
-tls-cert | TLS证书文件(启用HTTPS) | |
-tls-key | TLS密钥文件(启用HTTPS) |
服务器联合(mDNS)
Jumpboot mcp支持通过mDNS(Bonjour/Avahi)自动发现服务。这实现了一个强大的联盟模型,其中:
- HTTP服务器 在本地网络上宣布自己
- Stdio客户端 发现HTTP服务器并代理其工具
- 克劳德 查看所有带有前缀名称的工具(本地+远程)
mDNS标志
| 标志 | 默认值 | 描述 |
|---|---|---|
-note | "" | 人类可读的服务器描述(例如,“用于机器学习的GPU服务器”) |
-instance-name | hostname | 唯一mDNS实例名称(用作工具前缀) |
-mdns-announce | true | 启用mDNS公告(仅限HTTP模式) |
-mdns-discover | true | 启用mDNS发现(仅限stdio模式) |
-discover-timeout | 5s | 创业时等待多久才能发现 |
联邦是如何运作的
┌─────────────────┐ mDNS Discovery ┌─────────────────────┐
│ Claude Desktop │ ◄──────────────────────►│ HTTP Server A │
│ or Claude Code │ │ (gpu-server) │
│ │ HTTP/MCP Protocol │ -note "GPU for ML" │
│ ┌───────────┐ │ ◄─────────────────────► │ │
│ │ stdio │ │ └─────────────────────┘
│ │ jumpboot │ │
│ │ -mcp │ │ mDNS Discovery ┌─────────────────────┐
│ │ │ │ ◄──────────────────────►│ HTTP Server B │
│ │ (local + │ │ │ (pi-cluster) │
│ │ proxied │ │ HTTP/MCP Protocol │ -note "Raspberry" │
│ │ tools) │ │ ◄─────────────────────► │ │
│ └───────────┘ │ └─────────────────────┘
└─────────────────┘
Tools visible to Claude:
- create_environment (local)
- run_code (local)
- gpu-server:create_environment (proxied)
- gpu-server:run_code (proxied)
- pi-cluster:create_environment (proxied)
- pi-cluster:run_code (proxied)工具命名约定
远程工具的前缀是服务器的实例名称:
| 原始工具 | 代理工具名称 |
|---|---|
create_environment | gpu-server:create_environment |
run_code | gpu-server:run_code |
install_packages | gpu-server:install_packages |
服务器注释增强了工具描述:
- 原件:
"Create a new Python environment" - 代理:
"[GPU server for ML] Create a new Python environment"
联合设置示例
示例1:GPU服务器+本地计算机
在GPU服务器(配备CUDA的机器)上:
./jumpboot-mcp \
-transport http \
-addr :8080 \
-instance-name gpu-server \
-note "GPU server with CUDA for ML workloads"在您的本地计算机上:
# Just run normally - it discovers gpu-server automatically
./jumpboot-mcp
# Output:
# Discovered 1 remote jumpboot-mcp service(s):
# - gpu-server at http://192.168.1.100:8080/mcp (GPU server with CUDA for ML workloads)
# Connected successfully
# Registered 26 proxied tools from remote servers现在克劳德可以使用本地工具和 gpu-server:* 工具。
示例2:多个专用服务器
服务器1-机器学习工作负载:
./jumpboot-mcp -transport http -addr :8080 \
-instance-name ml-server \
-note "ML server with PyTorch/TensorFlow"服务器2-数据处理:
./jumpboot-mcp -transport http -addr :8080 \
-instance-name data-server \
-note "Data server with Pandas/Spark"服务器3-网络抓取:
./jumpboot-mcp -transport http -addr :8080 \
-instance-name scraper \
-note "Scraping server with Selenium/Playwright"本地stdio客户端:
./jumpboot-mcp
# Discovers all three servers, registers:
# - Local tools (26)
# - ml-server:* tools (26)
# - data-server:* tools (26)
# - scraper:* tools (26)
# Total: 104 tools available to Claude示例3:禁用发现/公告
不带mDNS的HTTP服务器(仅手动配置):
./jumpboot-mcp -transport http -addr :8080 -mdns-announce=false没有发现的Stdio客户端(仅限本地工具):
./jumpboot-mcp -mdns-discover=false验证mDNS公告
在macOS上:
dns-sd -B _jumpboot-mcp._tcp在Linux上(使用avahi):
avahi-browse -r _jumpboot-mcp._tcpDocker部署
塑造形象
docker build -t jumpboot-mcp .基本HTTP服务器
docker run -p 8080:8080 jumpboot-mcp使用持久存储(推荐)
docker run -p 8080:8080 \
-v jumpboot-data:/root/.jumpboot-mcp \
jumpboot-mcp该卷在容器重新启动时保留缓存的micromamba库和环境。
mDNS公告
要使mDNS在Docker中工作,请使用主机网络:
docker run --network host \
-v jumpboot-data:/root/.jumpboot-mcp \
jumpboot-mcp \
-transport http -addr :8080 \
-instance-name docker-server \
-note "Docker container with Python environments"注: --network host mDNS多播工作需要。在macOS Docker Desktop上,主机网络有局限性-考虑直接运行二进制文件。使用HTTPS
docker run -p 8443:8443 \
-v jumpboot-data:/root/.jumpboot-mcp \
-v /path/to/certs:/certs:ro \
jumpboot-mcp \
-transport http -addr :8443 \
-tls-cert /certs/cert.pem \
-tls-key /certs/key.pemDocker Compose
基本HTTP服务器
version: '3.8'
services:
jumpboot-mcp:
build: .
ports:
- "8080:8080"
volumes:
- jumpboot-data:/root/.jumpboot-mcp
restart: unless-stopped
volumes:
jumpboot-data:使用mDNS(主机网络)
version: '3.8'
services:
jumpboot-mcp:
build: .
network_mode: host
volumes:
- jumpboot-data:/root/.jumpboot-mcp
command:
- "-transport"
- "http"
- "-addr"
- ":8080"
- "-instance-name"
- "docker-jumpboot"
- "-note"
- "Docker Python environment server"
restart: unless-stopped
volumes:
jumpboot-data:多个服务器
version: '3.8'
services:
ml-server:
build: .
network_mode: host
volumes:
- ml-data:/root/.jumpboot-mcp
command: ["-transport", "http", "-addr", ":8080", "-instance-name", "ml-server", "-note", "ML workloads"]
data-server:
build: .
network_mode: host
volumes:
- data-data:/root/.jumpboot-mcp
command: ["-transport", "http", "-addr", ":8081", "-instance-name", "data-server", "-note", "Data processing"]
volumes:
ml-data:
data-data:Claude桌面配置
Claude Desktop使用stdio传输。在以下位置配置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/claude/claude_desktop_config.json
仅限本地(无联邦)
{
"mcpServers": {
"jumpboot": {
"command": "/path/to/jumpboot-mcp",
"args": ["-mdns-discover=false"]
}
}
}与联邦(推荐)
{
"mcpServers": {
"jumpboot": {
"command": "/path/to/jumpboot-mcp",
"args": []
}
}
}这将:
- 在stdio模式下启动本地jumpboot mcp
- 通过mDNS发现网络上的任何HTTP跳转mcp服务器
- 具有前缀名称的代理远程工具(例如。,
gpu-server:run_code)
自定义发现超时
如果您的网络发现速度较慢:
{
"mcpServers": {
"jumpboot": {
"command": "/path/to/jumpboot-mcp",
"args": ["-discover-timeout", "10s"]
}
}
}多个显式服务器(无mDNS)
如果您无法使用mDNS,请直接配置多个服务器:
{
"mcpServers": {
"jumpboot-local": {
"command": "/path/to/jumpboot-mcp",
"args": ["-mdns-discover=false"]
}
}
}注: Claude Desktop不直接支持HTTP传输。对于没有mDNS的HTTP服务器,使用联邦方法,使用本地stdio实例来发现它们。
Claude代码配置
Claude Code支持stdio和HTTP传输。
通过CLI配置
添加本地stdio服务器:
claude mcp add jumpboot /path/to/jumpboot-mcp使用联盟添加本地stdio:
claude mcp add jumpboot /path/to/jumpboot-mcp
# Federation happens automatically via mDNS直接添加远程HTTP服务器:
claude mcp add jumpboot-gpu --transport http http://gpu-server:8080/mcp通过.mcp.json配置
创建 .mcp.json 在项目根目录或主目录中:
当地与联邦(推荐)
{
"mcpServers": {
"jumpboot": {
"command": "/path/to/jumpboot-mcp"
}
}
}仅限本地(未发现)
{
"mcpServers": {
"jumpboot": {
"command": "/path/to/jumpboot-mcp",
"args": ["-mdns-discover=false"]
}
}
}直接HTTP连接(无联合)
{
"mcpServers": {
"jumpboot-remote": {
"type": "url",
"url": "http://gpu-server:8080/mcp"
}
}
}多个直接连接
{
"mcpServers": {
"jumpboot-local": {
"command": "/path/to/jumpboot-mcp",
"args": ["-mdns-discover=false"]
},
"jumpboot-gpu": {
"type": "url",
"url": "http://gpu-server:8080/mcp"
},
"jumpboot-data": {
"type": "url",
"url": "http://data-server:8080/mcp"
}
}
}注: 对于直接HTTP连接,工具名称没有前缀。如果要自动添加前缀,请使用联邦(stdio和mDNS)。
混合设置:联邦+直接
{
"mcpServers": {
"jumpboot": {
"command": "/path/to/jumpboot-mcp"
},
"jumpboot-cloud": {
"type": "url",
"url": "https://cloud-server.example.com:8443/mcp"
}
}
}这为您提供了:
- stdio实例中的本地工具
- 通过mDNS自动发现局域网服务器(前缀名称)
- 直接连接到云服务器(无前缀名称)
MCP工具参考
环境管理(5个工具)
| 工具 | 说明 |
|---|---|
create_environment | 创建一个新的Python环境 |
list_environments | 列出所有托管环境 |
destroy_environment | 删除环境和工作区 |
freeze_environment | 将环境导出为JSON |
restore_environment | 从冻结的JSON重新创建 |
包管理(3个工具)
| 工具 | 说明 |
|---|---|
install_packages | 安装软件包(pip或conda) |
install_requirements | 从requirements.txt安装 |
list_packages | 列出已安装的软件包 |
代码执行(2个工具)
| 工具 | 说明 |
|---|---|
run_code | 执行Python代码片段 |
run_script | 执行Python脚本文件 |
REPL会话(4个工具)
| 工具 | 说明 |
|---|---|
repl_create | 创建持久REPL |
repl_execute | 运行代码(状态保留) |
repl_list | 列出活动会话 |
repl_destroy | 结束会话 |
工作空间管理(8个工具)
| 工具 | 说明 |
|---|---|
workspace_create | 创建代码文件夹 |
workspace_write_file | 将文件写入工作区 |
workspace_read_file | 从工作区读取文件 |
workspace_list_files | 列出工作区文件 |
workspace_delete_file | 删除文件 |
workspace_run_script | 从工作区运行脚本 |
workspace_git_clone | 克隆git存储库 |
workspace_destroy | 删除工作区 |
过程管理(4个工具)
| 工具 | 说明 |
|---|---|
spawn_process | 启动后台进程 |
list_processes | 列出生成的进程 |
process_output | 获取进程stdout/stderr |
kill_process | 终止进程 |
用法示例
基本工作流程
1. create_environment(name="myenv", python_version="3.11") → env_id
2. install_packages(env_id="...", packages=["numpy", "pandas"])
3. run_code(env_id="...", code="import numpy; print(numpy.__version__)")使用远程服务器
1. gpu-server:create_environment(name="ml-env", python_version="3.11") → env_id
2. gpu-server:install_packages(env_id="...", packages=["torch", "transformers"])
3. gpu-server:run_code(env_id="...", code="import torch; print(torch.cuda.is_available())")REPL会话
1. repl_create(env_id="...", session_name="analysis") → session_id
2. repl_execute(session_id="...", code="x = 42")
3. repl_execute(session_id="...", code="print(x)") # prints 42长时间运行的进程
1. workspace_write_file(env_id="...", filename="server.py", content="...")
2. spawn_process(env_id="...", script_path="server.py", capture_output=true)
3. process_output(process_id="...", tail_lines=50)
4. kill_process(process_id="...")响应格式
所有工具都返回JSON:
{"success": true, "data": {...}, "error": null}或者出错:
{"success": false, "data": null, "error": "descriptive error message"}数据存储
所有数据都存储在 ~/.jumpboot-mcp/envs/:
~/.jumpboot-mcp/envs/
├── bases/ # Cached micromamba bases
│ ├── base_3.11/
│ └── base_3.12/
└── {env-uuid}/ # User environments (venvs)
├── bin/
├── lib/
└── workspace/ # Persistent workspace依赖项
- -Python环境管理
- -MCP协议实现
- -mDNS服务发现
许可证
麻省理工学院
