servidor ros2-mcp
ros2-mcp-server
es un servidor basado en Python que integra el Protocolo de Contexto de Modelo (MCP) con ROS 2, lo que permite a los asistentes de IA controlar robots mediante temas de ROS 2. Procesa comandos mediante FastMCP y se ejecuta como un nodo de ROS 2, publicando mensajes de geometry_msgs/Twist
en el tema /cmd_vel
para controlar el movimiento del robot.
Esta implementación admite comandos como "avanzar a 0,2 m/s durante 5 segundos y detenerse", con el publicador /cmd_vel
llamado pub_cmd_vel
.
Características
- Integración MCP : utiliza FastMCP para manejar comandos de clientes MCP (por ejemplo, Claude).
- ROS 2 Native : funciona como un nodo ROS 2 y publica directamente en
/cmd_vel
. - Control basado en tiempo : admite comandos de movimiento basados en duración (por ejemplo, moverse durante un tiempo específico y detenerse).
- Procesamiento asincrónico : combina
asyncio
de FastMCP con el bucle de eventos de ROS 2 para una operación eficiente.
Prerrequisitos
- ROS 2 : Distribución humilde instalada y obtenida.
- Python : Versión 3.10 (necesaria para compatibilidad con ROS 2 Humble).
- uv : Administrador de paquetes de Python para la gestión de dependencias.
- Dependencias :
rclpy
: biblioteca cliente de Python para ROS 2 (instalada con ROS 2).fastmcp
: marco FastMCP para la implementación del servidor MCP.numpy
: requerido por los tipos de mensajes ROS 2.
Instalación
- Clonar el repositorio :
- Configuración de la versión de Python : Este proyecto utiliza Python 3.10, según lo exige ROS 2 Humble. El archivo
.python-version
ya está configurado. - Dependencias del proyecto : El archivo
pyproject.toml
está configurado con las dependencias necesarias: - Crear entorno uv :
- Activar el entorno virtual :Verá
(.venv)
aparecer al comienzo del símbolo del sistema, lo que indica que el entorno virtual está activo. - Instalar dependencias :
Configuración del servidor MCP
Para usar este servidor con Claude u otros clientes MCP, debe configurarlo como servidor MCP. A continuación, le explicamos cómo configurarlo:
Para Claude Desktop
- Abra la configuración de Claude Desktop y navegue hasta la sección de servidores MCP.
- Agregue un nuevo servidor MCP con la siguiente configuración:Importante : Reemplace
/path/to/ros2-mcp-server
con la ruta real de su repositorio. Por ejemplo, si clonó el repositorio a/home/user/projects/ros2-mcp-server
, deberá usar esa ruta. - Guarde la configuración y reinicie Claude.
Para Cline (extensión de VSCode)
- En VSCode, abra la configuración de la extensión Cline haciendo clic en el ícono de Cline en la barra lateral.
- Navegue a la sección de configuración de servidores MCP.
- Agregue un nuevo servidor MCP con la siguiente configuración:Importante : reemplace
/path/to/ros2-mcp-server
con la ruta real a su repositorio, como en el ejemplo de Claude Desktop. - Puede activar o desactivar inmediatamente el servidor y verificar la conexión directamente desde la interfaz de configuración de Cline MCP sin necesidad de reiniciar VSCode o recargar la extensión.
Uso
Una vez configurado el servidor MCP, puedes usar Claude para enviar comandos al robot:
- Ejemplo de comando : Pídale a Claude que mueva el robot hacia adelante a 0,2 m/s durante 5 segundos:
- Uso directo de la herramienta : también puedes utilizar la herramienta
move_robot
directamente: - Temas de Monitor ROS 2 : Verifique la salida del tema
/cmd_vel
:
Pruebas
- Con un simulador :
- Inicie un simulador compatible con ROS 2 (por ejemplo, Gazebo con TurtleBot3):
- Utilice Claude para enviar comandos de movimiento.
- Observa al robot moviéndose en Gazebo.
- Inicie un simulador compatible con ROS 2 (por ejemplo, Gazebo con TurtleBot3):
- Con un robot real :
- Asegúrese de que su robot esté configurado correctamente para suscribirse al tema
/cmd_vel
. - Utilice Claude para enviar comandos de movimiento.
- El robot debe moverse según los comandos.
- Asegúrese de que su robot esté configurado correctamente para suscribirse al tema
- Resultado esperado :
- El servidor registra comandos de movimiento y comandos de detención.
- Claude recibe una respuesta como:
"Successfully moved for 5.0 seconds and stopped"
.
Solución de problemas
- Errores de registro de ROS 2 : si encuentra errores de directorio de registro, asegúrese de que la variable de entorno
ROS_LOG_DIR
esté configurada en un directorio escribible (por ejemplo,/tmp
). - Desajuste de versiones de Python : asegúrese de estar usando Python 3.10, ya que ROS 2 Humble está diseñado para esta versión.
- Errores de conexión : si Claude informa errores de "Conexión cerrada", verifique que la configuración del servidor MCP sea correcta y que todas las dependencias estén instaladas.
Estructura del directorio
Limitaciones
- Tema único : Actualmente compatible con
/cmd_vel
con mensajesTwist
. Ampliarros2-mcp-server.py
para otros temas o servicios. - Comandos básicos : Actualmente admite comandos de movimiento simples. Los comportamientos más complejos requieren una implementación adicional.
Licencia
Tenga en cuenta que este proyecto utiliza FastMCP , licenciado bajo la Licencia Apache 2.0. Los términos de dicha licencia también se aplican al uso de los componentes de FastMCP.
Expresiones de gratitud
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Un servidor basado en Python que permite a los asistentes de IA controlar robots integrando el Protocolo de contexto de modelo (MCP) con ROS 2, lo que permite comandos de lenguaje natural que se traducen en movimiento del robot a través del tema /cmd_vel.
Related MCP Servers
- -securityFlicense-qualityA Model Context Protocol server that enables AI assistants like Claude to perform Python development tasks through file operations, code analysis, project management, and safe code execution.Last updated -1Python
- AsecurityAlicenseAqualityA server that enables AI assistants to execute terminal commands and retrieve outputs via the Model Context Protocol (MCP).Last updated -36PythonMIT License
- -securityAlicense-qualityAn MCP server that integrates Arduino-based robotics (ESP32 or Arduino Nano) with AI, allowing control of hardware components like LEDs, motors, servos, and sensors through AI assistants.Last updated -31MIT License
- -securityFlicense-qualityA simple demonstration project for the Model Control Protocol (MCP) server that provides tools for AI assistants to fetch news articles, perform calculations, retrieve weather data, and generate personalized greetings.Last updated -Python