这是一个用于与 Hetzner Cloud API 进行交互的模型上下文协议(MCP)服务器。该服务器允许语言模型通过结构化函数来管理 Hetzner Cloud 资源。

git clone https://github.com/dkruyt/mcp-hetzner.git
cd mcp-hetzner
pip install -e .
.env 文件,并添加你的 Hetzner Cloud API 令牌:HCLOUD_TOKEN=your_hetzner_cloud_api_token_here
# 直接从仓库安装
pip install git+https://github.com/dkruyt/mcp-hetzner.git
安装为包后,在你的工作目录中创建一个 .env 文件,并添加你的 Hetzner Cloud API 令牌。
选项 1:运行已安装的包:
# 使用默认 stdio 传输
mcp-hetzner
# 使用 SSE 传输
mcp-hetzner --transport sse
# 设置自定义端口
mcp-hetzner --transport sse --port 8000
选项 2:作为模块运行:
python -m mcp_hetzner
# 或
python -m mcp_hetzner.server
服务器支持两种传输模式:
stdio(默认):标准 I/O 传输,通常与 Claude Code 一起使用sse:服务器发送事件传输,适用于 HTTP 客户端默认情况下,服务器在 localhost:8080 上运行。你可以通过以下方式自定义主机和端口:
.env 文件中设置 MCP_HOST 和 MCP_PORT 环境变量--port 命令行参数(覆盖环境变量)要与 Claude Code 结合使用,请使用 SSE 传输启动服务器:
# 使用 SSE 传输启动服务器
mcp-hetzner --transport sse --port 8080
# 在另一个终端中,将 Claude Code 连接到服务器
claude-code --mcp-server localhost:8080
包含一个测试客户端以验证服务器功能:
python -m mcp_hetzner.client
# 列出所有服务器
list_servers
# 创建新服务器
create_server {
"name": "web-server",
"server_type": "cx11",
"image": "ubuntu-22.04"
}
# 电源操作
power_off {"server_id": 12345}
power_on {"server_id": 12345}
reboot {"server_id": 12345}
# 当不再需要时删除服务器
delete_server {"server_id": 12345}
# 列出所有卷
list_volumes
# 创建新卷
create_volume {
"name": "data-volume",
"size": 10,
"location": "nbg1",
"format": "ext4"
}
# 将卷附加到服务器
attach_volume {
"volume_id": 12345,
"server_id": 67890,
"automount": true
}
# 从服务器分离卷
detach_volume {
"volume_id": 12345
}
# 调整卷大小(只能增加大小)
resize_volume {
"volume_id": 12345,
"size": 50
}
# 当不再需要时删除卷
delete_volume {
"volume_id": 12345
}
# 列出所有防火墙
list_firewalls
# 为 Web 服务器创建防火墙
create_firewall {
"name": "web-firewall",
"rules": [
{
"direction": "in",
"protocol": "tcp",
"port": "80",
"source_ips": ["0.0.0.0/0", "::/0"]
},
{
"direction": "in",
"protocol": "tcp",
"port": "443",
"source_ips": ["0.0.0.0/0", "::/0"]
}
]
}
# 将防火墙应用于服务器
apply_firewall_to_resources {
"firewall_id": 12345,
"resources": [
{
"type": "server",
"server_id": 67890
}
]
}
# 列出所有 SSH 密钥
list_ssh_keys
# 创建新的 SSH 密钥
create_ssh_key {
"name": "my-laptop",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAA... user@laptop"
}
# 在创建服务器时使用 SSH 密钥
create_server {
"name": "secure-server",
"server_type": "cx11",
"image": "ubuntu-22.04",
"ssh_keys": [12345]
}
# 更新 SSH 密钥的名称
update_ssh_key {
"ssh_key_id": 12345,
"name": "work-laptop"
}
# 删除 SSH 密钥
delete_ssh_key {
"ssh_key_id": 12345
}
# 探索可用资源
list_server_types
list_images
list_locations
# 获取特定服务器信息
get_server {"server_id": 12345}
MCP 服务器提供以下函数:
list_servers:列出你在 Hetzner Cloud 账户中的所有服务器get_server:获取特定服务器的详细信息create_server:创建新服务器delete_server:删除服务器power_on:开启服务器power_off:关闭服务器reboot:重启服务器list_volumes:列出你在 Hetzner Cloud 账户中的所有卷get_volume:获取特定卷的详细信息create_volume:创建新卷delete_volume:删除卷attach_volume:将卷附加到服务器detach_volume:从服务器分离卷resize_volume:增加卷的大小list_firewalls:列出你在 Hetzner Cloud 账户中的所有防火墙get_firewall:获取特定防火墙的详细信息create_firewall:创建新防火墙update_firewall:更新防火墙名称或标签delete_firewall:删除防火墙set_firewall_rules:设置或更新防火墙规则apply_firewall_to_resources:将防火墙应用到服务器或服务器组remove_firewall_from_resources:从服务器或服务器组移除防火墙list_ssh_keys:列出你在 Hetzner Cloud 账户中的所有 SSH 密钥get_ssh_key:获取特定 SSH 密钥的详细信息create_ssh_key:创建新的 SSH 密钥update_ssh_key:更新 SSH 密钥名称或标签delete_ssh_key:删除 SSH 密钥list_images:列出可用的操作系统镜像list_server_types:列出可用的服务器类型list_locations:列出可用的数据中心位置MIT