Skip to main content
Glama
aliyun

Alibaba Cloud DMS MCP Server

Official
by aliyun

listInstances

Search for database instances in Alibaba Cloud DMS by host, alias, type, or environment to manage and query across database ecosystems.

Instructions

Search for instances from DMS.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
search_keyNoOptional search key (e.g., instance host, instance alias, etc.)
db_typeNoOptional instanceType, or called dbType (e.g., mysql, polardb, oracle, postgresql, sqlserver, polardb-pg, etc.)
env_typeNoOptional instance environment type (e.g., product, dev, test, etc. )

Implementation Reference

  • The main handler function for the 'listInstances' tool. It searches for DMS instances based on optional parameters (search_key, db_type, env_type), calls the Alibaba Cloud DMS API, processes the response, and returns a list of InstanceDetail objects.
    async def list_instance( search_key: Optional[str] = Field(default=None, description="Optional search key (e.g., instance host, instance alias, etc.)"), db_type: Optional[str] = Field(default=None, description="Optional instanceType, or called dbType (e.g., mysql, polardb, oracle, " "postgresql, sqlserver, polardb-pg, etc.)"), env_type: Optional[str] = Field(default=None, description="Optional instance environment type (e.g., product, dev, test, etc. )") ) -> List[InstanceDetail]: client = create_client() req = dms_enterprise_20181101_models.ListInstancesRequest() if search_key: req.search_key = search_key if db_type: req.db_type = db_type if env_type: req.env_type = env_type if mcp.state.real_login_uid: req.real_login_user_uid = mcp.state.real_login_uid try: resp = client.list_instances(req) instance_data = resp.body.to_map() if "InstanceList" not in instance_data: return [] instance_list = instance_data["InstanceList"] # 检查是否有 Instance 键 if "Instance" not in instance_list: return [] instances = instance_list["Instance"] # 检查是否为空 if not isinstance(instances, list) or not instances: return [] processed_instances = [ {**item, 'InstanceResourceId': item.pop('EcsInstanceId', None)} for item in instances ] return [InstanceDetail(**item) for item in processed_instances] except Exception as e: logger.error(f"Error in list_instance: {e}") raise
  • The registration of the 'listInstances' tool in the ToolRegistry._register_full_toolset method, mapping the name to the list_instance handler function.
    self.mcp.tool(name="listInstances", description="Search for instances from DMS.", annotations={"title": "搜索DMS实例列表", "readOnlyHint": True})(list_instance)
  • Pydantic model defining the output schema for each instance returned by the listInstances tool.
    class InstanceDetail(MyBaseModel): InstanceId: Any = Field(description="Unique instance identifier in DMS", default=None) State: Any = Field(description="Current operational status", default=None) InstanceType: Any = Field(description="Database Engine type", default=None) InstanceAlias: Any = Field(description="Instance alias in DMS", default=None) EnvType: Any = Field(description="The environment type of the instance (e.g., production, development, etc.)", default=None) Host: Any = Field(description="The hostname of the database instance", default=None) Port: Any = Field(description="The connection port number", default=None) InstanceSource: Any = Field(description="The instance source (e.g., RDS, VPC_IDC, ECS_OWN, PUBLIC_OWN etc.)", default=None) InstanceResourceId: Any = Field( description="Resource ID of the instance from RDS", default=None)
  • Helper function to create the Alibaba Cloud DMS Enterprise client used in the list_instance handler.
    def create_client() -> dms_enterprise20181101Client: config = open_api_models.Config( access_key_id=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), access_key_secret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), security_token=os.getenv('ALIBABA_CLOUD_SECURITY_TOKEN'), read_timeout=60 * 1000 # 设置读取超时时间为60秒 ) config.endpoint = os.getenv('ALIBABA_CLOUD_DMS_ENDPOINT', 'dms-enterprise.cn-hangzhou.aliyuncs.com') config.user_agent = "dms-mcp" return dms_enterprise20181101Client(config)

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/aliyun/alibabacloud-dms-mcp-server'

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