Skip to main content
Glama
nonead

nUR MCP Server

by nonead

start_data_recording

Initiate data collection from industrial robots to monitor robot state, joint positions, TCP coordinates, and error information for analysis and diagnostics.

Instructions

开始记录机器人数据

参数:
- robot_id: 机器人ID
- record_types: 记录类型列表,可选值包括"robot_state", "joint_data", "tcp_data", "error_data"
- duration: 记录持续时间(秒),0表示持续记录直到停止

返回:
- 记录会话ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
robot_idYes
record_typesYes
durationNo

Implementation Reference

  • The MCP tool handler for 'start_data_recording'. It maps string record types to DataRecordType enums and calls advanced_data_recorder.start_recording() to begin recording robot data. The @mcp.tool() decorator handles registration and schema from function signature and docstring.
    def start_data_recording(robot_id: str, record_types: list, duration: float = 0):
        """
        开始记录机器人数据
        
        参数:
        - robot_id: 机器人ID
        - record_types: 记录类型列表,可选值包括"robot_state", "joint_data", "tcp_data", "error_data"
        - duration: 记录持续时间(秒),0表示持续记录直到停止
        
        返回:
        - 记录会话ID
        """
        try:
            if advanced_data_recorder is None:
                return return_msg("高级数据记录器未初始化")
            
            # 映射记录类型字符串到枚举值
            type_map = {
                "robot_state": DataRecordType.ROBOT_STATE,
                "joint_data": DataRecordType.JOINT_DATA,
                "tcp_data": DataRecordType.TCP_DATA,
                "error_data": DataRecordType.ERROR
            }
            
            record_enum_types = []
            for record_type in record_types:
                if record_type in type_map:
                    record_enum_types.append(type_map[record_type])
                else:
                    return return_msg(f"不支持的记录类型: {record_type}")
            
            # 启动记录
            session_id = advanced_data_recorder.start_recording(
                robot_id=robot_id,
                record_types=record_enum_types,
                duration=duration
            )
            
            return return_msg({"session_id": session_id, "message": "数据记录已启动"})
        except Exception as e:
            logger.error(f"开始数据记录失败: {str(e)}")
            return return_msg(f"开始数据记录失败: {str(e)}")
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but provides minimal behavioral insight. It mentions '持续记录直到停止' (continuous recording until stopped) for duration=0, which adds some context, but lacks details on permissions, side effects, rate limits, or what 'recording' entails operationally. For a tool that likely initiates a stateful process, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and concise, with a clear purpose statement followed by parameter and return sections. Every sentence adds value, though the return explanation could be integrated more smoothly. It's appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description does well on parameters but lacks completeness for a tool that likely starts a critical recording process. It doesn't cover error conditions, what 'recording' means in practice, or how the session ID is used later. For a 3-parameter tool with stateful behavior, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant value beyond the schema, which has 0% coverage. It explains all three parameters: robot_id (机器人ID), record_types with specific enum values (e.g., 'robot_state'), and duration with meaning for 0 (持续记录直到停止). This fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '开始记录机器人数据' (start recording robot data). It specifies the verb '记录' (record) and resource '机器人数据' (robot data), making the action explicit. However, it doesn't differentiate from its sibling 'stop_data_recording' beyond the obvious start/stop distinction, missing nuance about when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. While 'stop_data_recording' is clearly the counterpart, the description doesn't mention it or explain prerequisites like needing a connected robot. Usage context is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/nonead/nUR-MCP-SERVER'

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