mcp-hetzner-go

mcp-hetzner-go

0

MCP Hetzner Go is a server application implemented in Go that facilitates interactions with the Hetzner Cloud API through the Model Context Protocol (MCP). It offers both insightful inspection and control over cloud resources through read-only and read-write modes, providing a configurable approach to manage cloud data safely.

MCP Hetzner Go

A Go Model Context Protocol (MCP) server for interacting with the Hetzner Cloud API.

🛠 Build Client

npm --prefix ./client i
npm --prefix ./client run build

🖥 Build Server

go mod init github.com/MahdadGhasemian/mcp-hetzner-go
go mod tidy
go build -o mcphetzner
# go run main.go

🚀 Run Client

node ./client/build/index.js ./mcphetzner

⚠️ Usage Restrictions

The server supports two operation modes, controlled by the configuration:

  • Read-Only mode: Only allows GET and LIST operations.
  • Read-Write mode: Allows GET, LIST, and CREATE/UPDATE/DELETE operations.

By default, the server starts in read-only mode.
To enable write operations (such as creating, updating, or deleting resources), you must explicitly set the configuration flag to enable read-write mode.

Warning: Enabling write mode allows the client to make changes to your Hetzner Cloud resources.
Ensure you understand the implications and have proper access controls in place.

Switching Modes

Edit your configuration or pass the relevant environment variable/flag at launch:

  • For read-only (default; safe for inspection and monitoring):
    ./mcphetzner --restriction=read_only
    
  • For read-write (use with caution!):
    ./mcphetzner --restriction=read_write
    

✅ Lint

# install golangci-lint and then run:
golangci-lint run

🔍 Inspector

npx @modelcontextprotocol/inspector

🗺 Roadmap

  • Implement all GET and LIST operations for:

    • Certificates
    • SSH Keys
    • Locations
    • Datacenters
    • Firewall
    • Floating IPs
    • Servers
    • Images
    • ISOs
    • Placement Groups
    • Primary IPs
    • Server Types
    • Load Balancers
    • Load Balancer Types
    • Networks
    • Volumes
    • Pricing
  • Add a configuration flag or setting to:

    • Enable read_only mode (GET/LIST only)
    • Enable read_write mode (GET/LIST + CREATE/UPDATE/DELETE)
  • Implement write operations (create/update):

    • Certificates
    • SSH Keys
    • Firewall
    • Floating IPs
    • Servers
    • Images
    • Placement Groups
    • Primary IPs
    • Load Balancers
    • Networks
    • Volumes
  • Add delete capabilities for supported resources