Skip to main content
Glama
dkruyt

Hetzner Cloud MCP Server

by dkruyt

list_firewalls

Retrieve all firewall configurations from your Hetzner Cloud account to monitor and manage network security rules.

Instructions

List all firewalls in your Hetzner Cloud account. Returns a list of all firewall instances with their details. Example: - Basic list: list_firewalls()

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The main handler function for the 'list_firewalls' tool. It retrieves all firewalls using the Hetzner Cloud client and formats the output using the firewall_to_dict helper.
    @mcp.tool() def list_firewalls() -> Dict[str, Any]: """ List all firewalls in your Hetzner Cloud account. Returns a list of all firewall instances with their details. Example: - Basic list: list_firewalls() """ try: firewalls = client.firewalls.get_all() return { "firewalls": [firewall_to_dict(firewall) for firewall in firewalls] } except Exception as e: return {"error": f"Failed to list firewalls: {str(e)}"}
  • Helper function that converts a Hetzner Cloud Firewall object into a structured dictionary, including detailed rules and applied resources, used by the list_firewalls handler.
    # Helper function to convert Firewall object to dict def firewall_to_dict(firewall: Firewall) -> Dict[str, Any]: """Convert a Firewall object to a dictionary with relevant information.""" # Convert rules to dict rules = [] if firewall.rules: for rule in firewall.rules: rule_dict = { "direction": rule.direction, "protocol": rule.protocol, "source_ips": rule.source_ips, } if rule.port: rule_dict["port"] = rule.port if rule.destination_ips: rule_dict["destination_ips"] = rule.destination_ips if rule.description: rule_dict["description"] = rule.description rules.append(rule_dict) # Convert applied_to resources to dict applied_to = [] if firewall.applied_to: for resource in firewall.applied_to: resource_dict = {"type": resource.type} if resource.server: resource_dict["server"] = {"id": resource.server.id, "name": resource.server.name} if resource.label_selector: resource_dict["label_selector"] = {"selector": resource.label_selector.selector} if getattr(resource, 'applied_to_resources', None): applied_resources = [] for applied_resource in resource.applied_to_resources: applied_resource_dict = {"type": applied_resource.type} if applied_resource.server: applied_resource_dict["server"] = {"id": applied_resource.server.id, "name": applied_resource.server.name} applied_resources.append(applied_resource_dict) resource_dict["applied_to_resources"] = applied_resources applied_to.append(resource_dict) return { "id": firewall.id, "name": firewall.name, "rules": rules, "applied_to": applied_to, "labels": firewall.labels, "created": firewall.created.isoformat() if firewall.created else None, }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dkruyt/mcp-hetzner'

If you have feedback or need assistance with the MCP directory API, please join our Discord server