Hetzner Cloud MCP Server

by dkruyt
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Hetzner 云 MCP 服务器

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

特征

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

要求

  • Python 3.11+
  • Hetzner 云 API 令牌

安装

方法一:直接安装

  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:作为包安装

# Install directly from the repository pip install git+https://github.com/dkruyt/mcp-hetzner.git

作为包安装后,使用您的 Hetzner Cloud API 令牌在您的工作目录中创建一个.env文件。

用法

启动服务器

选项 1:运行已安装的包:

# Using default stdio transport mcp-hetzner # Using SSE transport mcp-hetzner --transport sse # Setting a custom port mcp-hetzner --transport sse --port 8000

选项 2:作为模块运行:

python -m mcp_hetzner # or python -m mcp_hetzner.server

服务器支持两种传输模式:

  • stdio (默认):标准 I/O 传输,通常与 Claude 代码一起使用
  • sse :服务器发送事件传输,适用于 HTTP 客户端

默认情况下,服务器在localhost:8080上运行。您可以通过以下方式自定义主机和端口:

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

与 Claude 代码一起使用

要与 Claude Code 一起使用,请使用 SSE 传输运行服务器:

# Start the server with SSE transport mcp-hetzner --transport sse --port 8080 # In another terminal, connect Claude Code to the server claude-code --mcp-server localhost:8080

测试 API

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

python -m mcp_hetzner.client

示例工作流程

基本服务器管理

# List all your servers list_servers # Create a new server create_server { "name": "web-server", "server_type": "cx11", "image": "ubuntu-22.04" } # Power operations power_off {"server_id": 12345} power_on {"server_id": 12345} reboot {"server_id": 12345} # Delete a server when no longer needed delete_server {"server_id": 12345}

卷管理

# List all volumes list_volumes # Create a new volume create_volume { "name": "data-volume", "size": 10, "location": "nbg1", "format": "ext4" } # Attach volume to a server attach_volume { "volume_id": 12345, "server_id": 67890, "automount": true } # Detach volume from server detach_volume { "volume_id": 12345 } # Resize a volume (can only increase size) resize_volume { "volume_id": 12345, "size": 50 } # Delete a volume when no longer needed delete_volume { "volume_id": 12345 }

防火墙管理

# List all firewalls list_firewalls # Create a firewall for web servers 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 a server apply_firewall_to_resources { "firewall_id": 12345, "resources": [ { "type": "server", "server_id": 67890 } ] }

SSH 密钥管理

# List all SSH keys list_ssh_keys # Create a new SSH key create_ssh_key { "name": "my-laptop", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAA... user@laptop" } # Use the SSH key when creating a server create_server { "name": "secure-server", "server_type": "cx11", "image": "ubuntu-22.04", "ssh_keys": [12345] } # Update an SSH key's name update_ssh_key { "ssh_key_id": 12345, "name": "work-laptop" } # Delete an SSH key delete_ssh_key { "ssh_key_id": 12345 }

基础设施规划

# Explore available resources list_server_types list_images list_locations # Get specific server information 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 :列出可用的数据中心位置

执照

麻省理工学院

ID: n13pxof5ni