Provides access to ROS1 Noetic robotic systems, enabling interaction with topics, services, parameters, and nodes, as well as querying coordinate transforms and message definitions.
Click on "Install 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., "@ROS1 Noetic MCP Serverlist all active topics and check the status of the /move_base node"
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.
ROS1 Noetic MCP Server
An MCP (Model Context Protocol) server that provides LLM access to ROS1 Noetic robotic systems. Built with FastMCP and deployed as a Docker container.
Claude Code Quick Start
Add ROS MCP to Claude Code with a single command:
For remote ROS master:
Features
Topic Management: List, publish, subscribe, and echo ROS topics
Service Management: List and call ROS services
Parameter Management: Get, set, list, and delete ROS parameters
Node Inspection: List nodes and get detailed node information
TF Transforms: Query coordinate frame transforms, transform points/poses
Message Introspection: View message and service definitions
Quick Start
Prerequisites
Docker and Docker Compose
Running ROS1 Noetic system with roscore
Running with Docker Compose
Clone this repository:
Set environment variables (optional):
Start the MCP server:
The server will be available at http://localhost:8000/mcp.
Running with stdio transport (for local development)
Testing the Server
Using MCP Inspector
The easiest way to test the MCP server is using the official MCP Inspector:
This opens an interactive web UI where you can:
Browse available tools and resources
Test tool calls with custom parameters
View server responses in real-time
Configuration
Environment Variables
Variable | Default | Description |
|
| URI of the ROS master |
|
| IP address of this machine for ROS networking |
|
| Transport mode: |
|
| Port for HTTP transport |
MCP Client Configuration
Add to your MCP client configuration (e.g., Claude Desktop):
Claude Code Configuration
Add the MCP server to Claude Code using stdio transport:
Other useful commands:
Available Tools
Topic Tools
Tool | Description |
| List all active ROS topics |
| Get detailed information about a topic |
| Publish a message to a topic |
| Get a single message from a topic |
| Get multiple messages from a topic |
Service Tools
Tool | Description |
| List all available services |
| Get service details |
| Call a ROS service |
Parameter Tools
Tool | Description |
| List all parameters |
| Get a parameter value |
| Set a parameter value |
| Delete a parameter |
| Check if parameter exists |
| Search for a parameter |
Node Tools
Tool | Description |
| List all active nodes |
| Get node publications, subscriptions, services |
| Check if a node is responsive |
| Get ROS master information |
Message Tools
Tool | Description |
| Show message type definition |
| Show service type definition |
| List available message types |
| List available service types |
| Get message type MD5 sum |
TF Transform Tools
Tool | Description |
| List all TF frames |
| Get transform between frames |
| Check if transform is available |
| Get TF tree structure |
| Transform a point between frames |
| Transform a pose between frames |
Available Resources
Resource URI | Description |
| System connectivity status |
| List of all topics |
| List of all nodes |
| List of all services |
| List of all parameters |
| Topic info and latest message |
| Node information |
| Parameter value |
| List of TF frames |
Example Usage
List all topics
Get robot position
Send a velocity command
Check TF transform
Development
Building locally
Running without Docker
Requires ROS Noetic environment:
Project Structure
Troubleshooting
Cannot connect to ROS master
Ensure roscore is running
Check
ROS_MASTER_URIis correctVerify network connectivity (use
network_mode: hostin Docker)
Transform lookup fails
Wait for TF data to be published
Check that both frames exist with
ros_list_framesVerify the transform chain exists with
ros_get_frame_tree
Message type not found
Ensure the message package is installed in the Docker container
For custom messages, mount the workspace or rebuild the Docker image
License
MIT License