Skip to main content
Glama
cfrs2005

GS Robot MCP Server

by cfrs2005

batch_get_robot_statuses_smart

Retrieve statuses for multiple GS cleaning robots by serial numbers, automatically grouping them by series and selecting the appropriate batch API for M-line and S-line models.

Instructions

智能批量获取机器人状态。

自动根据机器人系列分组并选择正确的批量API。
支持混合查询M-line和S-line机器人。

Args:
    serial_numbers: 机器人序列号列表
    
Returns:
    批量状态查询结果字典

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
serial_numbersYes

Implementation Reference

  • Core handler implementation that groups robot serial numbers by series (M-line uses V1 API, S-line uses V2 API), fetches statuses in batches using MCP methods, adds metadata, and handles errors.
    async def batch_get_robot_statuses_smart(self, serial_numbers: List[str]) -> Dict[str, Any]:
        """智能批量获取机器人状态。
        
        自动根据机器人序列号前缀分组并选择正确的批量API。
        """
        if not serial_numbers:
            return {"results": []}
        
        # 按机器人系列分组(基于序列号前缀)
        m_line_robots = []
        s_line_robots = []
        unknown_robots = []
        
        for serial_number in serial_numbers:
            detected_series = self._determine_robot_series_from_sn(serial_number)
            
            if self.is_s_line_robot(detected_series):
                s_line_robots.append(serial_number)
            elif self.is_m_line_robot(detected_series):
                m_line_robots.append(serial_number)
            else:
                # 未知前缀默认归类为M-line (使用V1 API)
                unknown_robots.append(serial_number)
        
        results = []
        
        # 合并M-line机器人和未知机器人,都用V1 API
        v1_robots = m_line_robots + unknown_robots
        
        # 批量查询V1 API机器人状态
        if v1_robots:
            try:
                v1_results = await self.mcp.batch_get_robot_statuses_v1(v1_robots)
                if isinstance(v1_results, dict) and "results" in v1_results:
                    for result in v1_results["results"]:
                        result["api_version"] = "V1 (M-line/Default)"
                        result["detected_series"] = self._determine_robot_series_from_sn(result.get("serialNumber", ""))
                    results.extend(v1_results["results"])
                else:
                    results.extend(v1_results if isinstance(v1_results, list) else [v1_results])
            except Exception as e:
                for sn in v1_robots:
                    results.append({
                        "serialNumber": sn, 
                        "error": str(e), 
                        "robotType": "V1 API",
                        "detected_series": self._determine_robot_series_from_sn(sn)
                    })
        
        # 批量查询S-line机器人状态
        if s_line_robots:
            try:
                s_results = await self.mcp.batch_get_robot_statuses_v2(s_line_robots)
                if isinstance(s_results, dict) and "results" in s_results:
                    for result in s_results["results"]:
                        result["api_version"] = "V2 (S-line)"
                        result["detected_series"] = self._determine_robot_series_from_sn(result.get("serialNumber", ""))
                    results.extend(s_results["results"])
                else:
                    results.extend(s_results if isinstance(s_results, list) else [s_results])
            except Exception as e:
                for sn in s_line_robots:
                    results.append({
                        "serialNumber": sn, 
                        "error": str(e), 
                        "robotType": "V2 API",
                        "detected_series": self._determine_robot_series_from_sn(sn)
                    })
        
        return {
            "total": len(serial_numbers),
            "v1_count": len(v1_robots),
            "s_line_count": len(s_line_robots),
            "results": results
        }
  • MCP tool registration using @mcp.tool() decorator. This thin wrapper delegates execution to the RobotAPIRouter instance.
    @mcp.tool()
    async def batch_get_robot_statuses_smart(serial_numbers: list):
        """智能批量获取机器人状态。
        
        自动根据机器人系列分组并选择正确的批量API。
        支持混合查询M-line和S-line机器人。
        
        Args:
            serial_numbers: 机器人序列号列表
            
        Returns:
            批量状态查询结果字典
        """
        return await router.batch_get_robot_statuses_smart(serial_numbers)

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/cfrs2005/mcp-gs-robot'

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