ros2_perception_mcp
ros2_perception_mcp
ros2_perception_mcp ist ein dedizierter, schreibgeschützter MCP-Server für die begrenzte semantische Inspektion von ROS-2-Wahrnehmungssystemen.
Version 0.1.0 zielt auf:
Ubuntu 24.04
Python 3.12
ROS 2 Jazzy
MCP Python SDK 2.x
stdio-Transport
Das Projekt ist bewusst als dedizierter Wahrnehmungs-MCP-Server konzipiert und nicht als generische ROS-2-Schnittstelle.
Aktueller Status
Der aktuelle Entwicklungsstand von v0.1.0 ist:
Phase 1 - Project foundation COMPLETE
Phase 2 - Architecture and scope COMPLETE
Phase 3A - Domain models COMPLETE
Phase 3B - Application ports and service boundary NEXT
Phase 3 - Domain models and application ports IN PROGRESSPhase 3A implementiert und verifiziert das herstellerneutrale Wahrnehmungs-Domänenmodell.
Fokussierte Phase-3A-Verifizierung:
12 passedDas Projekt stellt bewusst noch keine Wahrnehmungs-MCP-Tools, Ressourcen, Prompts, ROS-Abonnements oder physischen Sensorintegrationen bereit. Diese Fähigkeiten werden erst in den entsprechenden Roadmap-Phasen eingeführt.
Architektur
Die vorgesehene Architektur ist:
MCP Client
|
| stdio
v
MCP Server
|
v
Semantic Perception MCP Surface
|
v
PerceptionService
|
+--------------------+
| |
v v
Domain Models Safety / Bounds
^
|
Application Ports
^
|
RosPerceptionAdapter
^
|
JazzyRosPerceptionAdapter
|
v
ROS 2 Jazzy
|
+----------------------+
| |
v v
RealSense D435i RPLIDAR A2M8
verification verificationAbhängigkeiten zeigen nach innen.
Die Domänen- und Anwendungsschichten bilden den herstellerneutralen semantischen Kern.
ROS-2-, MCP- und physische Sensorintegrationen bleiben Adapter um diesen Kern herum.
Die Domänenschicht darf nicht abhängen von:
rclpyROS-Nachrichtenpaketen
tf2MCP-SDK-Typen
RealSense-SDKs
SLAMTEC-SDKs
OpenCV
gerätespezifischen APIs
Die RealSense D435i und der RPLIDAR A2M8 sind geplante physische Verifizierungsgeräte, keine Abhängigkeiten der öffentlichen API.
Umfang
ros2_perception_mcp besitzt die begrenzte semantische Inspektion von ROS-2-Wahrnehmungssystemen.
Der geplante Umfang von v0.1.0 umfasst:
Sensorerkennung
Stream-Erkennung
semantische Sensormetadaten
Stream-Metadaten
Kamerametadaten
aus
CameraInfoabgeleitete KalibrierungsmetadatenTiefenmetadaten
PointCloud2-MetadatenLaserScan-MetadatenFrame-Beziehungen
Aktualitätsnachweise
beobachtete Ratenachweise
Sensor-Gesundheitsnachweise
Diagnose
explizit begrenzte Stichproben oder Schnappschüsse
Die MCP-Oberfläche soll semantische Wahrnehmungsoperationen bereitstellen, keine rohen uneingeschränkten ROS-Schnittstellen.
Explizite Grenzen
Version 0.1.0 wird nicht bereitstellen:
willkürlichen ROS-Themenzugriff
willkürliche ROS-Themenpublikation
willkürliche ROS-Dienstaufrufe
willkürliche ROS-Aktionsaufrufe
Parameter-Mutation
Prozessausführung
Startausführung
Shell-Befehle
Kamera-Konfiguration
LiDAR-Konfiguration
LiDAR-Motorsteuerung
Motorsteuerung
Roboterbewegung
Manipulatorbewegung
uneingeschränkte Weiterleitung von Nutzlasten
Vollraten-Bildstreaming
Vollraten-Punktwolken-Streaming
Das Projekt ist schreibgeschützt.
Inspektion darf Geräte nicht konfigurieren oder eine Betätigung verursachen.
Verantwortungstrennung
Die ROS-2-MCP-Projekte haben bewusst getrennte Verantwortlichkeiten.
ros2_mcp
-> generic bounded ROS 2 inspection
ros2_control_mcp
-> ros2_control semantics
ros2_manipulator_mcp
-> manipulator-specific semantics
ros2_perception_mcp
-> perception and sensor semanticsGenerischer ROS-Zugriff gehört in ros2_mcp.
Steuerungssemantik gehört in ros2_control_mcp.
Manipulatorsemantik gehört in ros2_manipulator_mcp.
Wahrnehmungsspezifische semantische Inspektion gehört in ros2_perception_mcp.
Diese Trennung verhindert, dass die einzelnen MCP-Server zu uneingeschränkten universellen Roboterschnittstellen werden.
Außerhalb des Umfangs von v0.1.0
Die folgenden übergeordneten Wahrnehmungs- und Robotikfähigkeiten liegen explizit außerhalb des v0.1.0-Umfangs:
Objekterkennung
Segmentierung
Pose-Schätzung
SLAM
Nav2
MoveIt
IMU-Unterstützung
Diese Fähigkeiten können in zukünftigen Architekturabeiten separat betrachtet werden, sind aber nicht Teil des aktuellen v0.1.0-Vertrags.
Phase 3A Domänenfundament
Phase 3A implementiert das reine Python-herstellerneutrale Wahrnehmungsdomänenmodell in:
src/ros2_perception_mcp/domain/Die primäre Implementierung ist:
src/ros2_perception_mcp/domain/models.pyDie Domäne enthält derzeit:
SensorDescriptorStreamDescriptorCameraDescriptorCameraIntrinsicsDepthDescriptorPointCloudDescriptorPointCloudFieldLaserScanDescriptorFrameDescriptorFreshnessStatusSensorHealth
Zwei endliche anwendungseigene semantische Zustände werden mit Python 3.12 StrEnum dargestellt:
FreshnessCategoryHealthCategory
Offene Klassifikationen wie Sensorarten, Stream-Arten, Codierungen, Nachrichtenkategorien, Punktwolken-Datentypen und Frame-Bezeichner bleiben bewusst erweiterbare Zeichenfolgenwerte.
Domänen-Entwurfsprinzipien
Phase 3A folgt mehreren wichtigen Entwurfsregeln.
Herstellerneutral
Das Domänenverhalten hängt nicht von einer RealSense D435i, einem RPLIDAR A2M8 oder einem anderen spezifischen Gerät ab.
ROS-unabhängig
ROS-Nachrichten und rclpy-Objekte erscheinen nicht in der Domänen-API.
ROS-2-Jazzy-Adapter werden später ROS-Beobachtungen in semantische Domänenobjekte umwandeln.
MCP-unabhängig
Domänenmodelle enthalten keine MCP-SDK- oder Protokolltypen.
MCP ist ein externer Adapter um die Anwendungs- und Domänenschichten.
Unveränderlich
Domänenmodelle verwenden eingefrorene Datenklassen.
Sammlungen, die zu unveränderlichen Domänenwerten gehören, verwenden Tupel.
Unvollständige Metadaten sind darstellbar
Unbekannte Metadaten werden explizit dargestellt, nicht erfunden.
Zum Beispiel können Kameraauflösung, Tiefenbereiche, Kalibrierungsinformationen und Frame-Beziehungen gegebenenfalls None sein.
Nur strukturelle Validierung
Die Domäne validiert deterministische strukturelle Invarianten.
Sie erfindet nicht:
Hardware-Grenzen
Herstellergrenzen
Aktualitätsschwellenwerte
Ratenschwellenwerte
physikalische Sicherheitsregeln
Aktualität und Gesundheit
Aktualität und Gesundheit sind nachweisorientiert.
FreshnessStatus repräsentiert:
Beobachtungszeitpunkt
Alter
Nachweis
optionale semantische Kategorie
Aktualitätsschwellenwerte sind nicht im Domänenmodell eingebettet.
Schwellenwertkonfiguration und Kategorieableitung gehören zu späteren Anwendungs- und Sicherheits-/Grenzarbeiten.
SensorHealth repräsentiert:
Verfügbarkeit
Aktualitätsnachweis
Ratennachweis
Ergebnisse
semantische Gesundheitskategorie
Ein Gesundheitsergebnis ist keine Zertifizierung der physischen Sicherheit.
Der Server darf die Sensorgesundheit niemals als Autorisierung für Roboterbewegungen oder andere Betätigungen interpretieren.
Begrenzte Daten
Wahrnehmungssysteme können große kontinuierliche Datenströme erzeugen.
ros2_perception_mcp ist nicht dafür gedacht, diese Ströme uneingeschränkt an einen MCP-Client weiterzuleiten.
Die vorgesehene Architektur ist:
Continuous ROS 2 perception stream
|
v
ROS adapter observes
|
v
Semantic metadata or
bounded sample
|
v
MCP responseDer Zugriff auf Bild, Tiefe, Punktwolke und Laserscan muss explizit begrenzt bleiben.
Vollraten-Streaming liegt außerhalb des Umfangs von v0.1.0.
Geplante Hardware-Verifizierung
Zwei physische Sensoren sind für die spätere v0.1.0-Verifizierung geplant.
RealSense D435i
Geplant für:
Phase 14 - Real-hardware verification — RealSense D435iErwartete Verifizierungsbereiche umfassen Kamera, Tiefe, Kalibrierung, Stream-Metadaten, Frames, Aktualität und begrenzte Wahrnehmungsinspektion.
RPLIDAR A2M8
Geplant für:
Phase 15 - Real-hardware verification — RPLIDAR A2M8Erwartete Verifizierungsbereiche umfassen Laserscan-Metadaten, Frames, Aktualität, Ratennachweise, Gesundheitsnachweise und begrenzte Scan-Inspektion.
Diese Geräte verifizieren die herstellerneutrale Architektur.
Sie definieren sie nicht.
Fundament-Server ausführen
Installieren/Synchronisieren der Projektumgebung:
uv syncAktuellen Fundament-Server ausführen:
uv run ros2-perception-mcpDer Prozess wartet auf MCP JSON-RPC über die Standardeingabe.
Im aktuellen Entwicklungsstadium bewirbt er absichtlich keine MCP-Wahrnehmungsfähigkeiten.
Setzen Sie:
ROS2_PERCEPTION_MCP_CONFIGum eine alternative TOML-Konfigurationsdatei auszuwählen.
Entwicklungstests
pytest wird als Entwicklungsabhängigkeit gepflegt.
Die fokussierten Phase-3A-Domänentests können ausgeführt werden mit:
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 \
uv run python -m pytest -q tests/test_domain_models.pyVerifiziertes Phase-3A-Ergebnis:
............ [100%]
12 passed in 0.01sDas automatische Laden von Drittanbieter-pytest-Plugins ist für diesen fokussierten Domänentest deaktiviert, da eine ROS-2-Jazzy-Umgebung nicht verwandte ROS-Test-Plugins wie launch_testing bereitstellen kann.
ROS-spezifisches Testen wird explizit in den entsprechenden späteren Phasen eingeführt.
Projekt-Roadmap
Die v0.1.0-Roadmap ist:
Projektfundament — ABGESCHLOSSEN
Architektur und Umfang — ABGESCHLOSSEN
Domänenmodelle und Anwendungsports — IN BEARBEITUNG
Phase 3A - Domänenmodelle — ABGESCHLOSSEN
Phase 3B - Anwendungsports und Dienstgrenze — ALS NÄCHSTES
ROS 2 Jazzy-Adapterfundament
Sensorerkennung und -inspektion
Kamera / Bild / CameraInfo
Tiefe
PointCloud2
LaserScan
TF / Frames / Aktualität / Rate / Gesundheit
MCP-Tools / Ressourcen / Prompts
Sicherheitsgrenzen und Diagnose
Fokussierte Softwareverifizierung
Echthardware-Verifizierung — RealSense D435i
Echthardware-Verifizierung — RPLIDAR A2M8
Abschließendes Audit, Dokumentation und v0.1.0-Release-Bereitschaft
Jede Phase erfordert einen expliziten Umfang und muss die schreibgeschützte, begrenzte, herstellerneutrale Architektur bewahren.
Dokumentation
Detaillierte Entwicklungsaufzeichnungen werden geführt in:
Die Phasendokumente sollen nicht nur den Implementierungsfortschritt, sondern auch Architekturentscheidungen, explizite Ausschlüsse, Validierungsergebnisse und Verantwortungsgrenzen festhalten.
Versionsannahmen
Das Projekt zielt derzeit auf:
Ubuntu 24.04
Python 3.12
ROS 2 Jazzy
MCP Python SDK 2.x
MCP transport stdioROS-Python-Pakete bleiben Systemabhängigkeiten und werden bewusst von der herstellerneutralen Domänenschicht getrennt.
Die ROS-Nachrichtensemantik wird während der ROS-Adapter- und sensorspezifischen Implementierungsphasen gegen installierte und offizielle ROS-2-Jazzy-Definitionen verifiziert.
RealSense- und SLAMTEC-Treiberversionen und -Konventionen bleiben bis zu ihren entsprechenden Integrations- und Hardware-Verifizierungsphasen zurückgestellt.
Nächster Schritt
Der nächste Entwicklungsschritt ist:
Phase 3B - Application ports and service boundaryPhase 3B wird die minimalen semantischen Anwendungsverträge definieren, die von späteren ROS-2-Jazzy-Adaptern benötigt werden.
Sie muss die Abhängigkeitsrichtung bewahren:
MCP Adapter
|
v
Application Layer
|
v
Domain Layer
^
|
ROS 2 AdapterPhase 3B darf keine ROS-Abonnements, Hardwarezugriff, MCP-Wahrnehmungstools, Gerätekonfiguration oder Betätigung einführen.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only Remote MCP for externally grounded AI agent trust receipts.
Cross-vendor AI memory over MCP. One semantic store, readable and writeable from every MCP client.
Search and browse every MCP server in the Model Context Protocol registry.
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/vagotec/ros2_perception_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server