返回市场
麦普赫兹纳尔

麦普赫兹纳尔

作者:dkruyt51 星标更新:2025-04-10

项目介绍

Hetzner Cloud MCP 服务器

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

MCP Hetzner 示例

特性

  • 列出、创建和管理 Hetzner Cloud 服务器
  • 创建、附加、分离和调整卷大小
  • 管理防火墙规则并将其应用到服务器上
  • 创建和管理 SSH 密钥以安全访问服务器
  • 查看可用的镜像、服务器类型和位置
  • 开启/关闭和重启服务器
  • 供语言模型交互使用的简单、结构化的 API
  • 集成 Claude Code 直接从 Claude 管理 Hetzner 资源

要求

  • Python 3.11+
  • Hetzner Cloud API 令牌

安装

方法 1:直接安装

  1. 克隆此仓库:
git clone https://github.com/dkruyt/mcp-hetzner.git
cd mcp-hetzner
  1. 安装依赖项:
pip install -e .
  1. 创建一个 .env 文件,并添加你的 Hetzner Cloud API 令牌:
HCLOUD_TOKEN=your_hetzner_cloud_api_token_here

方法 2:作为包安装

# 直接从仓库安装
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 上运行。你可以通过以下方式自定义主机和端口:

  1. 在你的 .env 文件中设置 MCP_HOSTMCP_PORT 环境变量
  2. 使用 --port 命令行参数(覆盖环境变量)

与 Claude Code 结合使用

要与 Claude Code 结合使用,请使用 SSE 传输启动服务器:

# 使用 SSE 传输启动服务器
mcp-hetzner --transport sse --port 8080

# 在另一个终端中,将 Claude Code 连接到服务器
claude-code --mcp-server localhost:8080

测试 API

包含一个测试客户端以验证服务器功能:

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 密钥管理

# 列出所有 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:从服务器或服务器组移除防火墙

SSH 密钥管理

  • 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