host_create
Quickly add a new host to Zabbix monitoring by specifying host name, groups, interfaces, and templates. Configure inventory mode and status for precise host management.
Instructions
Create a new host in Zabbix.
Args:
host: Host name
groups: List of host groups (format: [{"groupid": "1"}])
interfaces: List of host interfaces
templates: List of templates to link (format: [{"templateid": "1"}])
inventory_mode: Inventory mode (-1=disabled, 0=manual, 1=automatic)
status: Host status (0=enabled, 1=disabled)
Returns:
str: JSON formatted creation result
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| groups | Yes | ||
| host | Yes | ||
| interfaces | Yes | ||
| inventory_mode | No | ||
| status | No | ||
| templates | No |
Implementation Reference
- src/zabbix_mcp_server.py:156-190 (handler)The core handler function for the 'host_create' MCP tool. It is registered via the @mcp.tool() decorator. The function signature and docstring define the input schema. It validates read-only mode, gets the Zabbix client, prepares parameters, calls client.host.create, and formats the JSON response.@mcp.tool() def host_create(host: str, groups: List[Dict[str, str]], interfaces: List[Dict[str, Any]], templates: Optional[List[Dict[str, str]]] = None, inventory_mode: int = -1, status: int = 0) -> str: """Create a new host in Zabbix. Args: host: Host name groups: List of host groups (format: [{"groupid": "1"}]) interfaces: List of host interfaces templates: List of templates to link (format: [{"templateid": "1"}]) inventory_mode: Inventory mode (-1=disabled, 0=manual, 1=automatic) status: Host status (0=enabled, 1=disabled) Returns: str: JSON formatted creation result """ validate_read_only() client = get_zabbix_client() params = { "host": host, "groups": groups, "interfaces": interfaces, "inventory_mode": inventory_mode, "status": status } if templates: params["templates"] = templates result = client.host.create(**params) return format_response(result)
- src/zabbix_mcp_server.py:103-111 (helper)Helper function called by host_create to ensure the server is not in read-only mode before performing write operations.def validate_read_only() -> None: """Validate that write operations are allowed. Raises: ValueError: If server is in read-only mode """ if is_read_only(): raise ValueError("Server is in read-only mode - write operations are not allowed")
- src/zabbix_mcp_server.py:91-100 (helper)Helper function used by host_create to format the API response as indented JSON string.def format_response(data: Any) -> str: """Format response data as JSON string. Args: data: Data to format Returns: str: JSON formatted string """ return json.dumps(data, indent=2, default=str)
- src/zabbix_mcp_server.py:38-79 (helper)Helper function called by host_create to obtain an authenticated ZabbixAPI client instance.def get_zabbix_client() -> ZabbixAPI: """Get or create Zabbix API client with proper authentication. Returns: ZabbixAPI: Authenticated Zabbix API client Raises: ValueError: If required environment variables are missing Exception: If authentication fails """ global zabbix_api if zabbix_api is None: url = os.getenv("ZABBIX_URL") if not url: raise ValueError("ZABBIX_URL environment variable is required") logger.info(f"Initializing Zabbix API client for {url}") # Configure SSL verification verify_ssl = os.getenv("VERIFY_SSL", "true").lower() in ("true", "1", "yes") logger.info(f"SSL certificate verification: {'enabled' if verify_ssl else 'disabled'}") # Initialize client zabbix_api = ZabbixAPI(url=url, validate_certs=verify_ssl) # Authenticate using token or username/password token = os.getenv("ZABBIX_TOKEN") if token: logger.info("Authenticating with API token") zabbix_api.login(token=token) else: user = os.getenv("ZABBIX_USER") password = os.getenv("ZABBIX_PASSWORD") if not user or not password: raise ValueError("Either ZABBIX_TOKEN or ZABBIX_USER/ZABBIX_PASSWORD must be set") logger.info(f"Authenticating with username: {user}") zabbix_api.login(user=user, password=password) logger.info("Successfully authenticated with Zabbix API") return zabbix_api
- src/zabbix_mcp_server.py:156-156 (registration)The @mcp.tool() decorator registers the host_create function as an MCP tool with the name 'host_create'.@mcp.tool()