WiseVision ROS2
STDIOROS2 MCP server for topic management, service calls, and message handling in robotics systems.
ROS2 MCP server for topic management, service calls, and message handling in robotics systems.

A Python implementation of the Model Context Protocol (MCP) for ROS 2. This server enables AI tooling to connect with ROS 2 nodes, topics, and services using the MCP standard over stdio. Designed to be the easiest ROS 2 MCP server to configure.
Save hours of development time with native AI integration for your ROS 2 projects:
Perfect for: Robotics developers, researchers, students, and anyone working with ROS 2 who wants to leverage AI for faster development and debugging.
If you find this useful, please ⭐ star the repo — it helps others discover it.
🚀 Enjoying this project?
Feel free to contribute or reach out for support! Write issues, submit PRs, or join our Discord community to connect with other ROS 2 and AI enthusiasts.

Note: To call a service with a custom (non-default) type, source the package that defines it before starting the server.
Follow the installation guide for step-by-step instructions:
| Tool | Description | Inputs | Outputs | 
|---|---|---|---|
ros2_topic_list | Returns list of available topics | – | topic_name (string): Topic name topic_type (string): Message type | 
ros2_topic_subscribe | Subscribes to a ROS 2 topic and collects messages for a duration or message limit | topic_name (string) duration (float) message_limit (int) (defaults: first msg, 5s)  | messages count duration | 
ros2_get_messages | Retrieves past messages from a topic (data black box) | topic_name (string) message_type (string) number_of_messages (int) time_start (str) time_end (str) | timestamps messages | 
ros2_get_message_fields | Gets field names and types for a message type | message_type (string) | Field names + types | 
ros2_topic_publish | Publishes message to a topic | topic_name (string) message_type (string) data (dict) | status | 
| Tool | Description | Inputs | Outputs | 
|---|---|---|---|
ros2_service_list | Returns list of available services | – | service_name (string) service_type (string) request_fields (array) | 
ros2_service_call | Calls a ROS 2 service | service_name (string) service_type (string) fields (array) force_call (bool, default: false) | result (string) error (string, if any) | 
Since MCP servers run over stdio, debugging can be challenging. For the best debugging experience, we strongly recommend using the MCP Inspector.
You can launch the MCP Inspector via  npm  with this command:
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp_server_ros2 run mcp_ros_2_server
Upon launching, the Inspector will display a URL that you can access in your browser to begin debugging.
We built this server to make AI‑assisted ROS 2 development fast and reliable. Internally, we needed a simple way for agents to discover message types, publish/subscribe to topics, and call services—without boilerplate or flaky networking. That led to a few core design goals:
After dogfooding it, we open‑sourced the project to help the broader ROS 2 community build faster with AI. It’s now useful not only for development, but also for controlling robots, running QoS experiments, and analyzing live data and robot/swarm state. The project is actively maintained—features and improvements ship regularly based on user feedback. If this project helps you, please star the repo and share your use case!