/ Directorio / Playground / ros-mcp-server
● Comunidad robotmcp ⚡ Instantáneo

ros-mcp-server

por robotmcp · robotmcp/ros-mcp-server

Permite que Claude o GPT controle un robot conectado a ROS — publica temas, llama servicios, lee sensores — a través de rosbridge, sin cambios de código.

robotmcp/ros-mcp-server conecta modelos de IA a robots ROS 1 y ROS 2 a través de rosbridge. Publica en temas, suscríbete, llama servicios y acciones, establece parámetros, lee datos de sensores. Compatible con distribuciones ROS incluyendo Humble y Jazzy.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

ros.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ros",
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "ros": {
      "command": {
        "path": "uvx",
        "args": [
          "ros-mcp-server"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add ros -- uvx ros-mcp-server

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: ros-mcp-server

Cómo controlar un robot simulado desde el chat

👤 Principiantes en ROS, desarrolladores de robótica prototipando comportamientos ⏱ ~30 min intermediate

Cuándo usarlo: Quieres probar comportamientos de alto nivel del robot rápidamente.

Requisitos previos
  • ROS 2 (Humble/Jazzy) o ROS 1 en ejecución — Los contenedores Docker para Humble funcionan muy bien para empezar rápidamente
  • rosbridge_suite instalado y en ejecución — ros2 launch rosbridge_server rosbridge_websocket_launch.xml
  • Python 3.10+ + uvx — brew install [email protected] uv
Flujo
  1. Conecta a rosbridge
    Configura el MCP con ROSBRIDGE_URL=ws://localhost:9090 y verifica la conexión.✓ Copiado
    → Se devuelve la lista de temas activos
  2. Mueve el robot
    Publica en /cmd_vel un mensaje Twist moviéndose hacia adelante a 0.2 m/s durante 3 segundos, luego detente.✓ Copiado
    → El robot se mueve en la simulación
  3. Lee un sensor
    Suscríbete a /scan durante 2 segundos e informa sobre obstáculos dentro de 1m.✓ Copiado
    → Resumen de datos de rango

Resultado: Un robot en vivo respondiendo a comandos en lenguaje natural.

Errores comunes
  • Enviar comandos de velocidad demasiado rápidos causa que el robot se bloquee/vuelque — Limita la velocidad de los comandos en tu prompt; comienza con velocidades pequeñas
  • Autonomía insegura — sin geovalla — Siempre ejecuta primero en simulación (Gazebo); nunca conectes esto a un robot físico sin parada de emergencia

Cómo producir un resumen de salud del robot en lenguaje natural

👤 Equipos de operaciones de robótica ⏱ ~15 min beginner

Cuándo usarlo: Quieres un rápido resumen de 'qué está haciendo el robot'.

Flujo
  1. Lista los temas
    Lista todos los temas activos.✓ Copiado
    → Catálogo de temas
  2. Muestrea sensores clave
    Suscríbete a /battery_state y /odom durante 3 segundos cada uno; resume.✓ Copiado
    → % de batería + resumen de pose
  3. Verifica parámetros
    Obtén el valor de /navigation.max_velocity.✓ Copiado
    → Valor del parámetro

Resultado: Resumen fácil de entender para el operador del estado del robot.

Cómo llamar una acción de ROS (p. ej., navegar a una pose) desde el chat

👤 Desarrolladores de robótica probando pilas de navegación ⏱ ~15 min intermediate

Cuándo usarlo: Quieres activar un objetivo sin escribir un cliente.

Flujo
  1. Envía el objetivo
    Llama la acción /navigate_to_pose con objetivo x=2.0 y=1.0 yaw=0.✓ Copiado
    → Objetivo aceptado, retroalimentación transmitida en vivo
  2. Supervisa la retroalimentación
    Transmite retroalimentación en vivo hasta que se alcance el objetivo o transcurran 30s.✓ Copiado
    → Progreso + resultado

Resultado: Prueba de navegación sin escribir un cliente.

Errores comunes
  • El soporte de acciones de rosbridge varía según la versión — Usa ROS 2 + rosbridge 2.x para la mejor cobertura de acciones

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

Registra ejecuciones del robot en disco para análisis posterior

Suscríbete a /odom durante 60 segundos y escribe la trayectoria en /logs/run-2026-04-14.csv.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
list_topics Descubre el robot free
publish_topic topic: str, type: str, msg: obj Controla el robot free
subscribe_topic topic: str, duration_s?: int Lee datos de sensores free
call_service service: str, request: obj RPC de un solo uso al robot free
send_action_goal action: str, goal: obj Tareas de larga duración (navegación, manipulación) free
get_param name: str Inspecciona la configuración free
set_param name, value Ajusta en tiempo de ejecución free

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Ninguna — WebSocket de rosbridge local
Tokens por llamada
Los mensajes de temas pueden ser grandes (imágenes, nubes de puntos); evita transmitir temas de alto ancho de banda al LLM
Monetario
Gratuito
Consejo
Nunca te suscribas a temas de imagen o nube de puntos en un LLM — resume primero en el lado del robot.

Seguridad

Permisos, secretos, alcance

Ámbitos mínimos: Acceso de red al WebSocket de rosbridge
Almacenamiento de credenciales: Ninguna por defecto; coloca rosbridge detrás de autenticación para uso no local
Salida de datos: Los temas de ROS fluyen al proveedor del LLM — trata los datos de sensores como si fueran a un tercero
No conceder nunca: No expongas rosbridge a internet pública No otorgues autonomía sin una parada de emergencia de hardware

Resolución de problemas

Errores comunes y soluciones

No se puede conectar a rosbridge

Asegúrate de que rosbridge_server esté en ejecución y sea accesible en la URL. Para ROS 2: ros2 launch rosbridge_server rosbridge_websocket_launch.xml

Verificar: nc -vz localhost 9090
Publicación de tema rechazada — tipo desconocido

Pasa el tipo de mensaje exacto (p. ej., geometry_msgs/msg/Twist). Usa list_topics para ver los tipos registrados.

La retroalimentación de acciones no se transmite en vivo

Las versiones anteriores de rosbridge tienen un soporte de acciones irregular. Actualiza a 2.x.

El tema de alto ancho de banda causa un bloqueo del agente

No te suscribas a /camera/image_raw o /velodyne_points a través del LLM. Resume en el robot.

Alternativas

ros-mcp-server vs otros

AlternativaCuándo usarlaContrapartida
rosa (NASA JPL)Quieres un agente ROS basado en LangChain, no MCPArquitectura diferente; no es conectable a Claude Desktop

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills