ros2_perception_mcp
ros2_perception_mcp
ros2_perception_mcp — это выделенный, ориентированный на чтение MCP-сервер для ограниченной семантической инспекции систем восприятия ROS 2.
Версия 0.1.0 нацелена на:
Ubuntu 24.04
Python 3.12
ROS 2 Jazzy
MCP Python SDK 2.x
stdio transport
Проект намеренно спроектирован как выделенный MCP-сервер для восприятия, а не как универсальный интерфейс ROS 2.
Текущее состояние
Текущее состояние разработки v0.1.0:
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 PROGRESSФаза 3A реализует и верифицирует вендорно-нейтральную доменную модель восприятия.
Сфокусированная верификация фазы 3A:
12 passedПроект пока намеренно не предоставляет никаких MCP-инструментов, ресурсов, подсказок, ROS-подписок или интеграций с физическими датчиками. Эти возможности будут введены только в соответствующих фазах дорожной карты.
Архитектура
Предполагаемая архитектура:
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 verificationЗависимости направлены внутрь.
Доменный и прикладной уровни образуют вендорно-нейтральное семантическое ядро.
Интеграции с ROS 2, MCP и физическими датчиками остаются адаптерами вокруг этого ядра.
Доменный уровень не должен зависеть от:
rclpyпакетов сообщений ROS
tf2типов MCP SDK
SDK RealSense
SDK SLAMTEC
OpenCV
устройствозависимых API
RealSense D435i и RPLIDAR A2M8 являются запланированными физическими устройствами для верификации, а не зависимостями публичного API.
Область применения
ros2_perception_mcp владеет ограниченной семантической инспекцией систем восприятия ROS 2.
Запланированная область применения v0.1.0 включает:
обнаружение датчиков
обнаружение потоков
семантические метаданные датчиков
метаданные потоков
метаданные камеры
метаданные калибровки, полученные из
CameraInfoметаданные глубины
метаданные
PointCloud2метаданные
LaserScanотношения фреймов
свидетельства свежести
свидетельства наблюдаемой частоты
свидетельства здоровья датчика
диагностику
явно ограниченные выборки или снимки
Поверхность MCP предназначена для предоставления семантических операций восприятия, а не неограниченных сырых интерфейсов ROS.
Явные границы
Версия 0.1.0 не будет предоставлять:
произвольный доступ к топикам ROS
произвольную публикацию в топики ROS
произвольные вызовы сервисов ROS
произвольные вызовы действий ROS
изменение параметров
выполнение процессов
выполнение запусков
команды оболочки
настройку камеры
настройку LiDAR
управление мотором LiDAR
управление моторами
движение робота
движение манипулятора
неограниченную пересылку полезной нагрузки
потоковую передачу изображений с полной частотой
потоковую передачу облаков точек с полной частотой
Проект ориентирован на чтение.
Инспекция не должна настраивать устройства или вызывать активацию.
Разделение ответственности
Проекты MCP для ROS 2 намеренно имеют раздельные обязанности.
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 semanticsОбщий доступ к ROS принадлежит ros2_mcp.
Семантика управления принадлежит ros2_control_mcp.
Семантика манипуляторов принадлежит ros2_manipulator_mcp.
Семантическая инспекция, специфичная для восприятия, принадлежит ros2_perception_mcp.
Это разделение предотвращает превращение отдельных MCP-серверов в неограниченные универсальные интерфейсы роботов.
Вне области применения v0.1.0
Следующие возможности восприятия и робототехники более высокого уровня явно находятся вне области применения v0.1.0:
обнаружение объектов
сегментация
оценка позы
SLAM
Nav2
MoveIt
поддержка IMU
Эти возможности могут быть рассмотрены отдельно в будущей архитектурной работе, но не являются частью текущего контракта v0.1.0.
Фаза 3A: Доменная основа
Фаза 3A реализует чистый Python-вендорно-нейтральный домен восприятия в:
src/ros2_perception_mcp/domain/Основная реализация:
src/ros2_perception_mcp/domain/models.pyДомен в настоящее время содержит:
SensorDescriptorStreamDescriptorCameraDescriptorCameraIntrinsicsDepthDescriptorPointCloudDescriptorPointCloudFieldLaserScanDescriptorFrameDescriptorFreshnessStatusSensorHealth
Два конечных семантических состояния, принадлежащих приложению, представлены с помощью StrEnum из Python 3.12:
FreshnessCategoryHealthCategory
Открытые классификации, такие как типы датчиков, типы потоков, кодировки, категории сообщений, типы данных облаков точек и идентификаторы фреймов, намеренно остаются расширяемыми строковыми значениями.
Принципы проектирования домена
Фаза 3A следует нескольким важным правилам проектирования.
Вендорно-нейтральность
Поведение домена не зависит от RealSense D435i, RPLIDAR A2M8 или любого другого конкретного устройства.
Независимость от ROS
Сообщения ROS и объекты rclpy не появляются в API домена.
Адаптеры ROS 2 Jazzy позже будут преобразовывать наблюдения ROS в семантические доменные объекты.
Независимость от MCP
Модели домена не содержат типов MCP SDK или протокола.
MCP — это внешний адаптер вокруг прикладного и доменного уровней.
Неизменяемость
Модели домена используют замороженные датаклассы.
Коллекции, принадлежащие неизменяемым доменным значениям, используют кортежи.
Представимость неполных метаданных
Неизвестные метаданные представляются явно, а не выдумываются.
Например, разрешение камеры, диапазоны глубины, информация о калибровке и отношения фреймов могут быть None там, где это уместно.
Только структурная валидация
Домен проверяет детерминированные структурные инварианты.
Он не выдумывает:
аппаратные ограничения
ограничения производителя
пороги свежести
пороги частоты
правила физической безопасности
Свежесть и здоровье
Свежесть и здоровье ориентированы на свидетельства.
FreshnessStatus представляет:
время наблюдения
возраст
свидетельства
необязательную семантическую категорию
Пороги свежести не встроены в доменную модель.
Настройка порогов и вывод категорий относятся к более поздней работе на уровне приложения и безопасности/границ.
SensorHealth представляет:
доступность
свидетельства свежести
свидетельства частоты
выводы
семантическую категорию здоровья
Результат здоровья не является сертификатом физической безопасности.
Сервер никогда не должен интерпретировать здоровье датчика как разрешение на движение робота или другие активации.
Ограниченные данные
Системы восприятия могут генерировать большие непрерывные потоки данных.
ros2_perception_mcp не предназначен для неограниченной пересылки этих потоков клиенту MCP.
Предполагаемая архитектура:
Continuous ROS 2 perception stream
|
v
ROS adapter observes
|
v
Semantic metadata or
bounded sample
|
v
MCP responseДоступ к изображениям, глубине, облакам точек и лазерным сканам должен оставаться явно ограниченным.
Полноскоростная потоковая передача находится вне области применения v0.1.0.
Запланированная аппаратная верификация
Два физических датчика запланированы для более поздней верификации v0.1.0.
RealSense D435i
Запланирован для:
Phase 14 - Real-hardware verification — RealSense D435iОжидаемые области верификации включают метаданные камеры, глубины, калибровки, потока, фреймов, свежести и ограниченную инспекцию восприятия.
RPLIDAR A2M8
Запланирован для:
Phase 15 - Real-hardware verification — RPLIDAR A2M8Ожидаемые области верификации включают метаданные лазерного скана, фреймов, свежести, свидетельства частоты, свидетельства здоровья и ограниченную инспекцию сканов.
Эти устройства верифицируют вендорно-нейтральную архитектуру.
Они не определяют её.
Запуск сервера-основы
Установка/синхронизация окружения проекта:
uv syncЗапуск текущего сервера-основы:
uv run ros2-perception-mcpПроцесс ожидает MCP JSON-RPC на стандартном вводе.
На текущем этапе разработки он намеренно не рекламирует никаких возможностей MCP для восприятия.
Установите:
ROS2_PERCEPTION_MCP_CONFIGчтобы выбрать альтернативный файл конфигурации TOML.
Тесты разработки
pytest поддерживается как зависимость разработки.
Сфокусированные тесты домена фазы 3A можно запустить с помощью:
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 \
uv run python -m pytest -q tests/test_domain_models.pyВерифицированный результат фазы 3A:
............ [100%]
12 passed in 0.01sАвтоматическая загрузка сторонних плагинов pytest отключена для этого сфокусированного теста домена, поскольку окружение ROS 2 Jazzy может предоставлять несвязанные плагины тестирования ROS, такие как launch_testing.
Специфичное для ROS тестирование будет введено явно в соответствующих более поздних фазах.
Дорожная карта проекта
Дорожная карта v0.1.0:
Основа проекта — ЗАВЕРШЕНО
Архитектура и область применения — ЗАВЕРШЕНО
Доменные модели и порты приложения — В ПРОЦЕССЕ
Фаза 3A - Доменные модели — ЗАВЕРШЕНО
Фаза 3B - Порты приложения и граница сервисов — СЛЕДУЮЩАЯ
Основа адаптера ROS 2 Jazzy
Обнаружение и инспекция датчиков
Камера / Изображение / CameraInfo
Глубина
PointCloud2
LaserScan
TF / Фреймы / Свежесть / Частота / Здоровье
MCP Инструменты / Ресурсы / Подсказки
Границы безопасности и диагностика
Сфокусированная программная верификация
Аппаратная верификация — RealSense D435i
Аппаратная верификация — RPLIDAR A2M8
Финальный аудит, документация и готовность к выпуску v0.1.0
Каждая фаза требует явной области применения и должна сохранять архитектуру, ориентированную на чтение, ограниченную и вендорно-нейтральную.
Документация
Подробные записи разработки ведутся в:
Документы фаз предназначены для записи не только прогресса реализации, но и архитектурных решений, явных исключений, результатов валидации и границ ответственности.
Предположения о версиях
Проект в настоящее время нацелен на:
Ubuntu 24.04
Python 3.12
ROS 2 Jazzy
MCP Python SDK 2.x
MCP transport stdioПакеты Python ROS остаются системными зависимостями и намеренно отделены от вендорно-нейтрального доменного уровня.
Семантика сообщений ROS будет верифицирована по установленным и официальным определениям ROS 2 Jazzy во время фаз реализации адаптера ROS и специфичных для датчиков.
Версии и соглашения драйверов RealSense и SLAMTEC остаются отложенными до соответствующих фаз интеграции и аппаратной верификации.
Следующий шаг
Следующий шаг разработки:
Phase 3B - Application ports and service boundaryФаза 3B определит минимальные семантические контракты приложения, необходимые для более поздних адаптеров ROS 2 Jazzy.
Она должна сохранять направление зависимостей:
MCP Adapter
|
v
Application Layer
|
v
Domain Layer
^
|
ROS 2 AdapterФаза 3B не должна вводить подписки ROS, аппаратный доступ, инструменты восприятия MCP, настройку устройств или активацию.
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