rm_mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| preflightA | Inspect environment prerequisite states without mutating system state. |
| launchA | Launch a ROS launch file — local roslaunch in sim mode, SSH to vehicle NUC on real targets. package: ROS package name (REQUIRED, e.g. 'rm_config') launch_file: Launch filename (REQUIRED, e.g. 'load_controllers.launch') args: Optional arguments as list ['robot_type:=standard6'] or dict {'robot_type': 'standard6'}. |
| list_launchesA | List running roslaunch/mon launch processes. |
| kill_launchB | Terminate a running launch process by handle. |
| ensure_infrastructureB | Ensure essential infrastructure services (rosapi, rosbridge) are running on the target. |
| set_paramC | Set a ROS parameter with pre-read dry-run state capture and post-write verification. param_name: full parameter path, e.g. '/rm_config/rate' ('name' is accepted as an alias). |
| inject_signalA | Inject a step or sinusoidal excitation signal into a command topic. Choosing the right injection point: inject at controller INPUT (e.g. /controllers/gimbal_controller/command, rm_msgs/GimbalCmd: extra_fields={"mode": 3}, (GimbalCmd mode constants: 0: RATE, 1: TRACK, 2: DIRECT, 3: TRAJ). field="traj_yaw"/"traj_pitch") — NOT */controllers//command (std_msgs/Float64), which is PID-computed OUTPUT. Quiet state restoration (0.0 signal) occurs automatically upon completion (1-loop RealtimeBuffer update delay). Timestamps: after extra_fields are applied, a zero/absent top-level |
| get_paramA | Read a ROS parameter (L0 read-only). param_name: full parameter path, e.g. '/controllers/gimbal_controller/pid_pos/p' ('name' is accepted as an alias). |
| set_dynamic_paramA | Hot-update a running node's runtime parameters via dynamic_reconfigure. node: Target ROS node name (REQUIRED, e.g. '/controllers/gimbal_controller'). Accepted aliases: node_name, param_name. params: Dictionary of parameter values to write (e.g. {'p': 10}). Keys like 'yaw/pid/p' map to 'p'. dry_run: If True, inspect available keys and schema without mutating parameters. |
| list_controllersA | List ros_control controllers and their states (L0 read-only). |
| switch_controllerB | Start/stop ros_control controllers (red-tier on real targets). |
| configure_targetB | Set target mode and endpoints. Sim requires an explicit robot_type; real reads it from the vehicle. |
| record_bagA | Record a rosbag for specified topics over a set duration. Set background=True for async recording.
Inject-then-record sequence: record_bag(background=True, trigger_on_topic=) -> confirm the returned handle -> inject_signal(...) -> stop_record_bag(handle). A synchronous record on a silent command topic (no publisher before injection) hangs because the synchronous call would block injection. |
| stop_record_bagA | Stop a running background rosbag recording handle and retrieve metadata. Metadata is read with allow_unindexed=True; the bag-internal start/end
timestamps — not wall-clock diffs — are the authoritative |
| get_joint_limitsA | Query URDF physical and soft joint limits (lower/upper rad, effort, velocity). |
| recover_gazebo_jointsA | Safely recover simulation gimbal joints through Gazebo services. Simulation only. Resolves the live model first, requires its identity to match the robot-description/limit source, rejects positions outside those known soft limits, stops gimbal_controller, calls set_model_configuration, and verifies each joint through get_joint_properties. timeout_sec bounds service waits and invocations. Timed-out writes are explicitly ambiguous and may have occurred; no CLI fallback or automatic retry is attempted. |
| capture_topic_syncA | PREFERRED & FASTEST data source for closed-loop PID tuning in simulation and wired setups (<10ms latency). Captures high-frequency topic data in memory without disk I/O. Pass output directly to diagnose_gimbal_tuning(topic_data=...) or analyze_gimbal_pid(topic_data=...) for rapid tuning loops! |
| capture_inject_syncA | Capture a topic in memory while injecting an excitation signal — one call, zero disk I/O. Preferred closed-loop tuning path in simulation (target_mode="sim") or high-bandwidth wired setups: combines capture_topic_sync-style in-memory sampling with inject_signal-style safe publishing, server-side. Parameters:
|
| analyze_step_responseC | Analyze step or tracking performance from rosbag signals. |
| analyze_gimbal_pidA | Domain-specific analysis tool for RoboMaster Gimbal PID tracking error (0.006 rad threshold). PREFER passing in-memory topic_data directly from capture_topic_sync for fast tuning loops without disk I/O. Accepts bag_path for offline analysis. |
| diagnose_gimbal_tuningA | Detailed domain-specific diagnosis tool for RoboMaster Gimbal PID step response, velocity oscillation, windup, and saturation. PREFER passing in-memory topic_data directly from capture_topic_sync for fast tuning loops without disk I/O. Accepts bag_path for offline analysis. False-deadlock detection: when feedback already starts at the final setpoint (step test was not reset), returns step_info.initial_position_at_final_value=True, warnings code "initial_position_at_final_value", and prepends reset guidance (send traj_=0 first, then re-run the step test). |
| get_topic_infoA | Inspect ROS topic details (msg_type, publishers, subscribers) via pure Rosbridge WebSocket API. |
| get_node_infoA | Inspect ROS node details (publications, subscriptions, services) via pure Rosbridge WebSocket API. |
| list_topicsA | List active ROS topics and their message types via pure Rosbridge WebSocket API. |
| list_nodesA | List active ROS nodes via pure Rosbridge WebSocket API. |
| echo_topicC | Sample ROS topic messages with safety throttling via pure Rosbridge WebSocket API. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Nescript/rm_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server