describe_available_zones
Query available zones for RDS instances based on region, database type, version, and instance category. Retrieve zone details to deploy primary or read-only instances efficiently.
Instructions
Query available zones for RDS instances.
Args:
region_id: Region ID.
engine: Database type (MySQL, SQLServer, PostgreSQL, MariaDB).
engine_version: Database version.
MySQL: 5.5, 5.6, 5.7, 8.0
SQL Server: 2008r2, 2012, 2014, 2016, 2017, 2019
PostgreSQL: 10.0, 11.0, 12.0, 13.0, 14.0, 15.0
MariaDB: 10.3
commodity_code: Commodity code.
bards: Pay-as-you-go primary instance (China site)
rds: Subscription primary instance (China site)
rords: Pay-as-you-go read-only instance (China site)
rds_rordspre_public_cn: Subscription read-only instance (China site)
bards_intl: Pay-as-you-go primary instance (International site)
rds_intl: Subscription primary instance (International site)
rords_intl: Pay-as-you-go read-only instance (International site)
rds_rordspre_public_intl: Subscription read-only instance (International site)
rds_serverless_public_cn: Serverless instance (China site)
rds_serverless_public_intl: Serverless instance (International site)
zone_id: Zone ID.
dispense_mode: Whether to return zones that support single-zone deployment.
1: Return (default)
0: Do not return
dbinstance_name: Primary instance ID. Required when querying read-only instance resources.
category: Instance category.
Basic: Basic Edition
HighAvailability: High-availability Edition
cluster: MySQL Cluster Edition
AlwaysOn: SQL Server Cluster Edition
Finance: Enterprise Edition
serverless_basic: Serverless Basic Edition
serverless_standard: MySQL Serverless High-availability Edition
serverless_ha: SQL Server Serverless High-availability Edition
Returns:
Dict[str, Any]: Response containing available zones information.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | ||
| commodity_code | No | ||
| dbinstance_name | No | ||
| dispense_mode | No | ||
| engine | Yes | ||
| engine_version | No | ||
| region_id | Yes | ||
| zone_id | No |
Input Schema (JSON Schema)
{
"properties": {
"category": {
"default": null,
"title": "Category",
"type": "string"
},
"commodity_code": {
"default": null,
"title": "Commodity Code",
"type": "string"
},
"dbinstance_name": {
"default": null,
"title": "Dbinstance Name",
"type": "string"
},
"dispense_mode": {
"default": null,
"title": "Dispense Mode",
"type": "string"
},
"engine": {
"title": "Engine",
"type": "string"
},
"engine_version": {
"default": null,
"title": "Engine Version",
"type": "string"
},
"region_id": {
"title": "Region Id",
"type": "string"
},
"zone_id": {
"default": null,
"title": "Zone Id",
"type": "string"
}
},
"required": [
"region_id",
"engine"
],
"title": "describe_available_zonesArguments",
"type": "object"
}
Implementation Reference
- Handler function for the 'describe_available_zones' tool. Registers the tool using @mcp.tool decorator and implements the logic by calling Alibaba Cloud RDS DescribeAvailableZones API via get_rds_client, handling parameters like region_id, engine, etc., and returning the mapped response.@mcp.tool(annotations=READ_ONLY_TOOL) async def describe_available_zones( region_id: str, engine: str, engine_version: str = None, commodity_code: str = None, zone_id: str = None, dispense_mode: str = None, dbinstance_name: str = None, category: str = None ) -> Dict[str, Any]: """Query available zones for RDS instances. Args: region_id: Region ID. engine: Database type (MySQL, SQLServer, PostgreSQL, MariaDB). engine_version: Database version. MySQL: 5.5, 5.6, 5.7, 8.0 SQL Server: 2008r2, 2012, 2014, 2016, 2017, 2019 PostgreSQL: 10.0, 11.0, 12.0, 13.0, 14.0, 15.0 MariaDB: 10.3 commodity_code: Commodity code. bards: Pay-as-you-go primary instance (China site) rds: Subscription primary instance (China site) rords: Pay-as-you-go read-only instance (China site) rds_rordspre_public_cn: Subscription read-only instance (China site) bards_intl: Pay-as-you-go primary instance (International site) rds_intl: Subscription primary instance (International site) rords_intl: Pay-as-you-go read-only instance (International site) rds_rordspre_public_intl: Subscription read-only instance (International site) rds_serverless_public_cn: Serverless instance (China site) rds_serverless_public_intl: Serverless instance (International site) zone_id: Zone ID. dispense_mode: Whether to return zones that support single-zone deployment. 1: Return (default) 0: Do not return dbinstance_name: Primary instance ID. Required when querying read-only instance resources. category: Instance category. Basic: Basic Edition HighAvailability: High-availability Edition cluster: MySQL Cluster Edition AlwaysOn: SQL Server Cluster Edition Finance: Enterprise Edition serverless_basic: Serverless Basic Edition serverless_standard: MySQL Serverless High-availability Edition serverless_ha: SQL Server Serverless High-availability Edition Returns: Dict[str, Any]: Response containing available zones information. """ try: # Initialize the client client = get_rds_client(region_id) # Create request request = rds_20140815_models.DescribeAvailableZonesRequest( region_id=region_id, engine=engine ) # Add optional parameters if provided if engine_version: request.engine_version = engine_version if commodity_code: request.commodity_code = commodity_code if zone_id: request.zone_id = zone_id if dispense_mode: request.dispense_mode = dispense_mode if dbinstance_name: request.dbinstance_name = dbinstance_name if category: request.category = category # Make the API request response = client.describe_available_zones(request) return response.body.to_map() except Exception as e: logger.error(f"Error occurred while querying available zones: {str(e)}") raise OpenAPIError(f"Failed to query available zones: {str(e)}")