ros2-mcp-server
ros2-mcp-server
ist ein Python-basierter Server, der das Model Context Protocol (MCP) mit ROS 2 integriert und es KI-Assistenten ermöglicht, Roboter über ROS 2-Themen zu steuern. Er verarbeitet Befehle über FastMCP und läuft als ROS 2-Knoten. Er veröffentlicht geometry_msgs/Twist
-Nachrichten an das Thema /cmd_vel
, um die Roboterbewegung zu steuern.
Diese Implementierung unterstützt Befehle wie „5 Sekunden lang mit 0,2 m/s vorwärts bewegen und anhalten“ mit dem /cmd_vel
Publisher mit dem Namen pub_cmd_vel
.
Merkmale
- MCP-Integration : Verwendet FastMCP, um Befehle von MCP-Clients (z. B. Claude) zu verarbeiten.
- ROS 2 Native : Funktioniert als ROS 2-Knoten und veröffentlicht direkt an
/cmd_vel
. - Zeitbasierte Steuerung : Unterstützt zeitbasierte Bewegungsbefehle (z. B. für eine bestimmte Zeit bewegen und anhalten).
- Asynchrone Verarbeitung : Kombiniert
asyncio
von FastMCP mit der Ereignisschleife von ROS 2 für einen effizienten Betrieb.
Voraussetzungen
- ROS 2 : Bescheidene Distribution installiert und bezogen.
- Python : Version 3.10 (erforderlich für die Kompatibilität mit ROS 2 Humble).
- uv : Python-Paketmanager für die Abhängigkeitsverwaltung.
- Abhängigkeiten :
rclpy
: ROS 2 Python-Clientbibliothek (mit ROS 2 installiert).fastmcp
: FastMCP-Framework für die MCP-Serverimplementierung.numpy
: Für ROS 2 Nachrichtentypen erforderlich.
Installation
- Klonen Sie das Repository :
- Python-Versionskonfiguration : Dieses Projekt verwendet Python 3.10, wie von ROS 2 Humble gefordert. Die Datei
.python-version
ist bereits konfiguriert: - Projektabhängigkeiten : Die Datei
pyproject.toml
ist mit den erforderlichen Abhängigkeiten konfiguriert: - UV-Umgebung erstellen :
- Aktivieren Sie die virtuelle Umgebung :Am Anfang Ihrer Eingabeaufforderung wird
(.venv)
angezeigt, was darauf hinweist, dass die virtuelle Umgebung aktiv ist. - Abhängigkeiten installieren :
MCP-Serverkonfiguration
Um diesen Server mit Claude oder anderen MCP-Clients zu verwenden, müssen Sie ihn als MCP-Server konfigurieren. So richten Sie ihn ein:
Für Claude Desktop
- Öffnen Sie die Claude Desktop-Einstellungen und navigieren Sie zum Abschnitt MCP-Server.
- Fügen Sie einen neuen MCP-Server mit der folgenden Konfiguration hinzu:Wichtig : Ersetzen Sie
/path/to/ros2-mcp-server
durch den tatsächlichen Pfad zu Ihrem Repository. Wenn Sie das Repository beispielsweise nach/home/user/projects/ros2-mcp-server
geklont haben, verwenden Sie stattdessen diesen Pfad. - Speichern Sie die Konfiguration und starten Sie Claude neu.
Für Cline (VSCode-Erweiterung)
- Öffnen Sie in VSCode die Cline-Erweiterungseinstellungen, indem Sie in der Seitenleiste auf das Cline-Symbol klicken.
- Navigieren Sie zum Konfigurationsabschnitt der MCP-Server.
- Fügen Sie einen neuen MCP-Server mit der folgenden Konfiguration hinzu:Wichtig : Ersetzen Sie
/path/to/ros2-mcp-server
durch den tatsächlichen Pfad zu Ihrem Repository, wie im Beispiel von Claude Desktop. - Sie können den Server sofort ein- und ausschalten und die Verbindung direkt über die Cline MCP-Einstellungsschnittstelle überprüfen, ohne VSCode neu starten oder die Erweiterung neu laden zu müssen.
Verwendung
Sobald der MCP-Server konfiguriert ist, können Sie mit Claude Befehle an den Roboter senden:
- Beispielbefehl : Bitten Sie Claude, den Roboter 5 Sekunden lang mit 0,2 m/s vorwärts zu bewegen:
- Direkte Tool-Verwendung : Sie können das Tool
move_robot
auch direkt verwenden: - ROS 2-Themen überwachen : Überprüfen Sie die Ausgabe des Themas
/cmd_vel
:
Testen
- Mit einem Simulator :
- Starten Sie einen ROS 2-kompatiblen Simulator (z. B. Gazebo mit TurtleBot3):
- Verwenden Sie Claude, um Bewegungsbefehle zu senden.
- Beobachten Sie, wie sich der Roboter im Gazebo bewegt.
- Starten Sie einen ROS 2-kompatiblen Simulator (z. B. Gazebo mit TurtleBot3):
- Mit einem echten Roboter :
- Stellen Sie sicher, dass Ihr Roboter richtig eingerichtet ist, um das Thema
/cmd_vel
zu abonnieren. - Verwenden Sie Claude, um Bewegungsbefehle zu senden.
- Der Roboter sollte sich gemäß den Befehlen bewegen.
- Stellen Sie sicher, dass Ihr Roboter richtig eingerichtet ist, um das Thema
- Erwartete Ausgabe :
- Der Server protokolliert Bewegungsbefehle und Stoppbefehle.
- Claude erhält eine Antwort wie:
"Successfully moved for 5.0 seconds and stopped"
.
Fehlerbehebung
- ROS 2-Protokollierungsfehler : Wenn beim Protokollieren des Verzeichnisses Fehler auftreten, stellen Sie sicher, dass die Umgebungsvariable
ROS_LOG_DIR
auf ein beschreibbares Verzeichnis (z. B./tmp
) eingestellt ist. - Nicht übereinstimmende Python-Version : Stellen Sie sicher, dass Sie Python 3.10 verwenden, da ROS 2 Humble für diese Version erstellt wurde.
- Verbindungsfehler : Wenn Claude den Fehler „Verbindung geschlossen“ meldet, überprüfen Sie, ob die MCP-Serverkonfiguration korrekt ist und alle Abhängigkeiten installiert sind.
Verzeichnisstruktur
Einschränkungen
- Einzelnes Thema : Unterstützt derzeit
/cmd_vel
mitTwist
-Nachrichten. Erweitern Sieros2-mcp-server.py
für andere Themen oder Dienste. - Grundlegende Befehle : Unterstützt derzeit einfache Bewegungsbefehle. Komplexere Verhaltensweisen erfordern eine zusätzliche Implementierung.
Lizenz
Beachten Sie, dass dieses Projekt FastMCP verwendet, das unter der Apache-Lizenz 2.0 lizenziert ist. Die Bedingungen dieser Lizenz gelten auch für die Verwendung von FastMCP-Komponenten.
Danksagung
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.
Ein Python-basierter Server, der es KI-Assistenten ermöglicht, Roboter zu steuern, indem er das Model Context Protocol (MCP) mit ROS 2 integriert und so Befehle in natürlicher Sprache ermöglicht, die über das Thema /cmd_vel in Roboterbewegungen übersetzt werden.
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