WiseVision/mcp_server_ros_2
Provides containerization support for running the MCP server in an isolated environment, allowing communication with ROS2 components running in the same Docker network.
Integrates with InfluxDB through the WiseVision Data Black Box as an alternative to Rosbag2 for storing and retrieving ROS2 messages.
Provides tools for interacting with ROS2 (Robot Operating System) nodes, enabling listing of topics and services, subscribing to topics, publishing messages, calling services, and retrieving data from WiseVision Data Black Box.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WiseVision/mcp_server_ros_2list available topics on my robot"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ROS2 MCP

ROS2 MCP is an open-source (MPL-2.0) Model Context Protocol (MCP) server for ROS 2 Humble and Jazzy, written in Python. It lets AI tools such as Claude, Cursor and Codex list, subscribe to, publish on and call ROS 2 topics, services and actions over stdio (or SSE). It is listed in Docker's official MCP catalog as mcp/ros2.
Every tool is free and open source, including multi-topic subscribe/publish, map-to-image and point-cloud bird's-eye view.
π Website: wisevision.tech Β· π Documentation: wisevision.tech/docs
π Security: read-only mode
An agent connected to a real robot can move it. Start the server in read-only mode to let the agent observe but not act:
ROS2_MCP_READONLY=1 uv run mcp_ros_2_server # env var
uv run mcp_ros_2_server --read-only # or CLI flag
docker run -i --rm -e ROS2_MCP_READONLY=1 mcp/ros2In read-only mode the tools that change robot state are not registered at all: they do not appear in list_tools, and calling one returns an Unknown tool error. The hidden tools are:
ros2_topic_publish, ros2_publish_multiple_topics, ros2_service_call, ros2_send_action_goal, ros2_cancel_action_goal.
Read-only mode fails closed: only tools that were explicitly reviewed as read-only (listed in server/tool_safety.py) are registered, and a test fails if a new tool is added without being classified.
ros2_service_call is hidden because the server cannot know whether an arbitrary service has side effects.
β¨ Tools
List available topics
List available services
Lists available actions with their types and request fields
Call services
Subscribe to topics to collect messages
Publish messages to topics
Echo messages on topics
Get fields from message types
Sends an action goal and optionally waits for the result
Requests the result of an action goal
Subscribes to feedback messages from an action
Subscribes to status updates of an action
Cancels a specific goal or all active goals
Get messages from WiseVision Data Black Box (InfluxDB alternative to Rosbag2)
Subscribe to several topics at once (images returned as PNG)
Publish to several topics at once at a set frequency and duration
Get a
nav_msgs/OccupancyGridmap as a PNG imageGet a
sensor_msgs/PointCloud2as a bird's-eye-view PNG image
π€ Available Prompts
π Want to create a custom prompt? Check the guide here
π base.ros2-topic-echo-and-analyze
Subscribe to a ROS2 topic, collect messages for a specified duration, and provide statistical analysis of the collected data.
β‘οΈ Can auto-detect topic if only one is available. Analyzes message rates, counts, and statistics on numeric fields.
Related MCP server: ros2-mcp
π base.ros2-topic-relay
Subscribe to one ROS2 topic and republish messages to another topic with optional transformations.
β‘οΈ Supports identity relay, rate limiting, and change-based filtering.
π₯ base.ros2-node-health-check
Check if expected ROS2 topics and services are available and functioning correctly with optional publication rate monitoring.
β‘οΈ Provides comprehensive health report with status indicators and recommendations.
π base.ros2-topic-diff-monitor
Compare two ROS2 topics and report differences in their messages with detailed field-by-field analysis.
β‘οΈ Useful for comparing raw sensor data with filtered/processed versions or verifying topic synchronization.
ROS2 MCP has Prompts extension with additional prompts See here
π‘ Donβt know what prompts are? See the MCP spec here.
Note: To call a service with a custom (non-default) type, source the package that defines it before starting the server.
π― Why Choose This MCP Server?
Save hours of development time with native AI integration for your ROS 2 projects:
Why this ROS 2 MCP server β
β‘ 1-minute setup - one
docker runoruv runcommand0οΈβ£ Zero-friction setup - stdio transport, no brokers, no webserver.
π Auto type discovery - a built-in βlist interfacesβ tool dynamically enumerates available topics and services together with their message/service definitions (fields, types, schema) β so the client always knows exactly what data can be published or called.
β¨ Nested field support: Handle complex message structures with ease.
π€ AI-powered debugging - Let AI help you troubleshoot ROS 2 issues in real time
π Smart data analysis - Query your robot's sensor data using natural language
π Boost productivity - Control robots, analyze logs, and debug issues through AI chat
π‘ No ROS 2 expertise required - AI translates your requests into proper ROS 2 commands
π Dockerized: Ready-to-use Docker image for quick deployment.
π§ Auto QoS selection: Automatically selects appropriate Quality of Service settings for topics and services, ensuring optimal communication performance without manual configuration.
Perfect for: Robotics developers, researchers, students, and anyone working with ROS 2 who wants to leverage AI for faster development and debugging.
π 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.
Want to see it on real data? The forklift rosbag demo replays a warehouse forklift recording and walks through three MCP calls in about ten minutes.
π€ Contributing
Contributions are welcome! Please check the open issues for ways to help, open a pull request, or drop by our Discord to discuss ideas before diving in. By participating, you agree to follow our Code of Conduct.
π Drone Mission Using Prompts

π Real-world examples:

βοΈ Installation
Follow the installation guide for step-by-step instructions:
π§ DDS discovery warm-up (Docker)
If the first tool call returns an incomplete list of topics/services right after container start, DDS discovery may still be in progress. The server performs a one-time warm-up on the first tool call in container environments; tune it via:
MCP_ROS_DISCOVERY_STABLE_SEC(default:1.0)MCP_ROS_DISCOVERY_TIMEOUT_SEC(default:5.0)MCP_ROS_DISCOVERY_WARMUP=falseto disable
π‘ Want to try it in simulation?
Check out the Gazebo Drone Demo section
π§ ROS 2 Tools
π Topics
Tool | Description | Inputs | Outputs |
| Returns list of available topics | β |
|
| Subscribes to a ROS 2 topic and collects messages for a duration or message limit |
|
|
| Retrieves past messages from a topic (data black box) |
|
|
| Gets field names and types for a message type |
| Field names + types |
| Publishes message to a topic (hidden in read-only mode) |
|
|
| Subscribes to several topics at once; |
| per topic: |
| Publishes to several topics simultaneously at a given frequency for a given duration (hidden in read-only mode) |
| per topic: status |
| Gets one |
| PNG image |
| Gets one |
| PNG image |
π Services
Tool | Description | Inputs | Outputs |
| Returns list of available services | β |
|
| Calls a ROS 2 service (hidden in read-only mode) |
|
|
π― Actions
Tool | Description | Inputs | Outputs |
| Returns list of available ROS 2 actions with their types and request fields | β |
|
| Sends a goal to an action. Optionally waits for the result. (hidden in read-only mode) |
|
|
| Cancels a specific goal or all goals for an action (hidden in read-only mode) |
|
|
| Waits for the RESULT of a given goal via GetResult |
|
|
| Subscribes to feedback messages for an action. Can filter by goal_id. Collects messages for duration or max count. |
|
|
| Subscribes to an action's status topic and returns collected status frames |
|
|
π Debugging
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/ros2_mcp run mcp_ros_2_serverUpon launching, the Inspector will display a URL that you can access in your browser to begin debugging.
π Origins and evolution
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:
Handle all ROS 2 message types (including nested fields) so agents can write and test any code
Integrate topic pub/sub and service calls to validate behavior endβtoβend
Work seamlessly with GitHub Copilot in VS Code and other MCP clients
Use a simple stdio transport to avoid network complexity
After dogfooding it, we openβsourced the project (MPL-2.0) 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, share your use case in Discussions!
This server cannot be deployed
Maintenance
Related MCP Connectors
Public MCP for agent verification, work discovery and governed interoperability.
121An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Agent communication platform for agent to agent messaging via MCP. Messages, channels, skills.
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for ROS 2 environments that connects via rosbridge WebSocket, enabling topic/service introspection, publish/subscribe, service calls, robot connectivity checks, and polishing pipeline operations.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server for AI agents to inspect and control ROS2 graphs, enabling topic listing, node info, service calls, parameter management, and pub/echo without manual ROS2 CLI usage.11MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server for ROS 2 that enables GitHub Copilot and other AI agents to interact with ROS 2 systems. This server provides tools for monitoring, debugging, and managing ROS 2 nodes, topics, services, and TF2 frames.1537 npmMIT
- AlicenseAqualityCmaintenanceROS2 MCP server that bridges AI agents (Claude Code, OpenClaw, Cursor) to ROS2, allowing them to read topics, call services, control robots, and wrap telemetry into verifiable hash-chained proof bundles.6MIT