This MCP server provides access to ROS 2 systems. It can view ROS 2 nodes and topics, and it supports calling ROS 2 services and actions via MCP. The repository is a Python-based implementation and is associated with ROS 2 releases such as Humble and Jazzy.
🛠️ Key Features
View ROS 2 nodes
View ROS 2 topics
Call ROS 2 services via MCP
Call ROS 2 actions via MCP
🚀 Use Cases
Inspect ROS 2 communication structure (nodes and topics)
Trigger ROS 2 behavior through services and actions using MCP
⚡ Developer Benefits
Integrates ROS 2 workflows into MCP tooling
Uses a Python implementation
Fits ROS 2 Humble and ROS 2 Jazzy environments
⚠️ Limitations
Limited details are provided beyond nodes/topics viewing and services/actions calling; other MCP capabilities are not described
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 easiestROS 2 MCP server to configure.
✨ 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
0️⃣ 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.
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.
🤝 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.
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:
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:
bash
npx @modelcontextprotocol/inspector uv --directory /path/to/ros2_mcp run mcp_ros_2_server
Upon 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 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!