Skip to main content
Glama
Lynn-hh

io.github.Lynn-hh/armguard-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_robot_stateB

Current joint positions [rad], TCP pose [m, quaternion xyzw] in the robot base frame, estimated external wrench [N, N*m], gripper state and safety status. Read-only.

get_safety_envelopeA

The limits the server enforces (joint limits, workspace box, keep-out zones, speed/step caps, force thresholds, gripper limits, approval mode). Read this before planning and stay inside it: violations are rejected server-side and cannot be overridden.

lookup_transformA

Pose of source_frame expressed in target_frame (tf2 semantics), e.g. target_frame='fr3_link0', source_frame='fr3_hand_tcp'. Position in metres, orientation as a quaternion (x, y, z, w).

list_controllersB

ros2_control controllers with their type and state, plus which ones the policy lets you switch.

list_ros_graphA

ROS 2 nodes, topics, services and actions visible to the server. Read-only; you cannot publish or call arbitrary services through this server.

get_audit_tailA

The last n audit-log events (tool calls, approvals, denials, e-stops). Images are redacted.

camera_snapshotA

Grab the latest image from an allowlisted camera topic (see get_safety_envelope.camera_topics). Returns the image plus JSON metadata (width, height, stamp). Images wider than the policy's max_image_width are downscaled (or refused if Pillow is not installed).

plan_to_jointsA

Plan (do NOT move) a joint-space motion from the current state to joint_positions [rad]. Returns a plan summary validated against the safety envelope; if status is not 'rejected', pass plan_id to execute_plan. Scaling above the policy cap is clamped.

plan_to_poseA

Plan (do NOT move) a motion that brings the TCP to a pose. Uses inverse kinematics; the path is a joint-space interpolation (the TCP does not move in a straight line - use plan_cartesian_path for that). Returns a plan summary validated against the safety envelope.

plan_cartesian_pathA

Plan (do NOT move) a straight-line TCP path through the waypoints [m]. Total TCP path length is capped by the policy (max_cartesian_step_m). Returns a plan summary validated against the envelope.

execute_planA

EXECUTE a previously planned motion on the robot. The server re-validates the plan against the safety envelope, rejects stale/expired/used plans, may ask a human to approve (depending on policy), monitors contact force while moving (aborting and latching an e-stop above the limit), and streams progress. Plan handles are single-use and one plan executes at a time. Refused if the robot provides no force estimate (unless the policy allows it). Cancelling the call stops the robot. In dry-run mode nothing moves.

get_motion_statusB

Whether a plan is executing, its progress (0..1) and the result of the last execution.

gripper_moveA

Move the gripper fingers to an opening width [m] without applying grasp force.

gripper_graspA

Close the gripper on an object of about width_m [m] with force_n [N]. Succeeds (ok=true) only if the fingers stop within [width - epsilon_inner, width + epsilon_outer]. Forces above the policy maximum are rejected, not clamped.

gripper_homeB

Home (fully open and calibrate) the gripper.

switch_controllersA

Activate/deactivate ros2_control controllers. Only controllers in the policy allowlist may be switched; a human may need to approve.

set_collision_thresholdsA

Set the robot's collision (reflex) thresholds. Values above the policy maxima are rejected.

stop_motionA

Stop the current motion immediately: the arm trajectory and any gripper action. Always available, never rate limited, never needs approval. Does not latch; use estop to also block further motion.

estopA

SOFTWARE E-STOP: stop all motion (arm and gripper), invalidate every plan and refuse motion/gripper/control tools until a human approves reset_estop. Always available, never rate limited, never needs approval, accepts any reason. This is not a substitute for the hardware e-stop.

reset_estopA

Release the software e-stop (and any latched force violation). ALWAYS requires human approval via the MCP client, regardless of the approval mode. An approval only releases the e-stop event it was shown for; if another e-stop is latched while the prompt is open, call reset_estop again.

error_recoveryA

Clear the robot's error/reflex state (e.g. after a collision reflex). May require human approval. Refused while the software e-stop is active (reset it first).

get_safety_statusA

E-stop state, latched force violation, dry-run flag and the last envelope violation. Never rate limited.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have clearly distinct purposes: the three planners are separated by space (joint, IK pose, cartesian line), and read-only tools (get_robot_state, get_safety_envelope, get_safety_status, get_motion_status) target different resources despite similar names. The only real risk of confusion is among the stopping/recovery family (stop_motion, estop, reset_estop, error_recovery), but descriptions make the latch/approval semantics explicit enough to guide selection.

Naming Consistency4/5

Predominantly consistent snake_case verb_noun (get_*, set_*, list_*, plan_*, execute_plan, switch_controllers) with a coherent gripper_* sub-family. A handful of bare noun/verb forms (estop, reset_estop, error_recovery, camera_snapshot, lookup_transform) deviate from the pattern but remain unambiguous.

Tool Count4/5

22 tools is on the heavy side, but the domain genuinely spans planning, execution, monitoring, gripper control, safety policy, recovery, and ROS introspection, so almost every tool earns its place. Nothing looks redundant or like filler.

Completeness4/5

The surface covers the full lifecycle: introspect envelope/state/ROS graph, plan three ways, execute, monitor, control the gripper and controllers, stop/e-stop/reset, recover, and audit. Minor gaps exist (no explicit plan-inspection or cancel tool beyond stop_motion, no tool-frame/payload configuration), but these are workaroundable and likely intentional policy-side controls.

Maintenance

ActivityMaintained
ResponsivenessNo issues