ros2_perception_mcp
ros2_perception_mcp
ros2_perception_mcp는 제한적이고 의미론적인 ROS 2 인식 시스템 검사를 위한 전용 읽기 전용 우선 MCP 서버입니다.
버전 0.1.0은 다음을 대상으로 합니다:
Ubuntu 24.04
Python 3.12
ROS 2 Jazzy
MCP Python SDK 2.x
stdio 전송
이 프로젝트는 일반적인 ROS 2 인터페이스가 아닌 전용 인식 MCP 서버로 의도적으로 설계되었습니다.
현재 상태
현재 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 PROGRESS3A 단계는 공급업체 중립적인 인식 도메인 모델을 구현하고 검증합니다.
집중된 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 및 물리적 센서 통합은 해당 코어 주변의 어댑터로 유지됩니다.
도메인 계층은 다음에 의존해서는 안 됩니다:
rclpyROS 메시지 패키지
tf2MCP SDK 타입
RealSense SDK
SLAMTEC SDK
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 모터 제어
모터 제어
로봇 이동
매니퓰레이터 이동
제한 없는 페이로드 전달
전체 속도 이미지 스트리밍
전체 속도 포인트 클라우드 스트리밍
이 프로젝트는 읽기 전용 우선입니다.
검사는 장치를 구성하거나 작동을 유발해서는 안 됩니다.
책임 분리
ROS 2 MCP 프로젝트는 의도적으로 별도의 책임을 가집니다.
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
두 개의 유한한 애플리케이션 소유 의미론적 상태는 Python 3.12 StrEnum을 사용하여 표현됩니다:
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 환경은 launch_testing과 같은 관련 없는 ROS 테스트 플러그인을 노출할 수 있기 때문입니다.
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 stdioROS Python 패키지는 시스템 의존성으로 남아 있으며 공급업체 중립적 도메인 계층과 의도적으로 분리됩니다.
ROS 메시지 의미론은 ROS 어댑터 및 센서 특화 구현 단계에서 설치된 공식 ROS 2 Jazzy 정의에 대해 검증됩니다.
RealSense 및 SLAMTEC 드라이버 버전 및 규칙은 해당 통합 및 하드웨어 검증 단계까지 연기됩니다.
다음 단계
다음 개발 단계는 다음과 같습니다:
Phase 3B - Application ports and service boundary3B 단계는 이후 ROS 2 Jazzy 어댑터에 필요한 최소 의미론적 애플리케이션 계약을 정의합니다.
의존성 방향을 유지해야 합니다:
MCP Adapter
|
v
Application Layer
|
v
Domain Layer
^
|
ROS 2 Adapter3B 단계는 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