# Ros Mcp

> ROS MCP Server — connect AI agents to ROS 2 robots

- **Type:** MCP server
- **Install:** `agentstack add mcp-jonasneves-ros-mcp`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [jonasneves](https://agentstack.voostack.com/s/jonasneves)
- **Installs:** 0
- **Category:** [Integrations](https://agentstack.voostack.com/c/integrations)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [jonasneves](https://github.com/jonasneves)
- **Source:** https://github.com/jonasneves/ros-mcp
- **Website:** http://jonasneves.com/ros-mcp/

## Install

```sh
agentstack add mcp-jonasneves-ros-mcp
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# ros-mcp

[](https://github.com/jonasneves/ros-mcp/actions/workflows/build-push.yml)
[](LICENSE)

Drive ROS robots from an AI agent: a FastMCP server that reaches a robot over the [rosbridge](https://github.com/RobotWebTools/rosbridge_suite) WebSocket and exposes its topics, services, nodes, parameters, and actions as 37 MCP tools — usable from Claude Code, Claude Desktop, Cursor, or any MCP client.

```
MCP client ──stdio/HTTP──▶ ros-mcp ──ws :9090──▶ rosbridge ──▶ ROS graph
(Claude, Cursor)                                              (topics, services,
                                                               nodes, actions, params)
```

The browser dashboard skips the Python server: [roslibjs](https://github.com/RobotWebTools/roslibjs) connects straight to rosbridge from the page, with an embedded AI chat panel.

| Mode | Best for | Bridge path |
|---|---|---|
| **Browser dashboard** | Quickest start, no install | page → rosbridge |
| **Python server — stdio** | Claude Code (local) | client → ros-mcp → rosbridge |
| **Python server — HTTP** | Claude Desktop, Cursor, remote | client → ros-mcp `:9000` → rosbridge |
| **Remote CI server** | Shared / cloud-hosted | client → hosted ros-mcp → rosbridge |

See [diagram.png](diagram.png) for the full picture.

## Quick start

You need a running rosbridge (`ros2 launch rosbridge_server rosbridge_websocket_launch.xml`, default port `9090`) — or use the bundled simulators below.

```bash
git clone https://github.com/jonasneves/ros-mcp && cd ros-mcp
```

**Browser dashboard** — open [ros-mcp.github.io](https://ros-mcp.github.io), enter your rosbridge WebSocket URL, connect. No install.

**Claude Code (stdio)**
```bash
make configure
```

**Claude Desktop / Cursor (HTTP on :9000)**
```bash
ROSBRIDGE_IP= make server-http
make configure-desktop
```

**Remote CI server** — uses the URL published by the GitHub Actions workflow:
```bash
make configure-remote
```

## Docker simulators

**3× Turtlesim** — simulators and rosbridge start automatically; MCP server at `http://localhost:9000/mcp`:
```bash
make turtlesim
```

**Isaac Sim** — Linux + NVIDIA GPU, Isaac Sim installed, ROS 2 Bridge extension enabled:
```bash
make isaac-sim                           # rosbridge (FastDDS, host network)
ROSBRIDGE_IP=127.0.0.1 make server-http  # MCP server, separate terminal
```
On macOS or a remote host, point at a rosbridge already running alongside Isaac Sim: `ROSBRIDGE_IP= make server-http`.

## Tools

| Group | Tools |
|---|---|
| Connection | `connect_to_robot`, `ping_robot` |
| Topics | `get_topics`, `get_topic_type`, `get_topic_details`, `get_message_details`, `subscribe_once`, `subscribe_for_duration`, `publish_once`, `publish_for_durations` |
| Motion | `turn_by_angle`, `move_by_distance`, `move_robots` |
| Services | `get_services`, `get_service_type`, `get_service_details`, `call_service` |
| Nodes | `get_nodes`, `get_connected_robots`, `get_node_details` |
| Actions | `get_actions`, `get_action_details`, `send_action_goal`, `get_action_status`, `cancel_action_goal` |
| Parameters | `get_parameter`, `set_parameter`, `has_parameter`, `delete_parameter`, `get_parameters`, `get_parameter_details` |
| Robot config | `detect_ros_version`, `get_verified_robots_list`, `get_verified_robot_spec`, `get_robot_description`, `get_joint_states` |
| Images | `analyze_previously_received_image` |

Full signatures, units, and examples: [docs/tools.md](docs/tools.md).

## Configuration

| Variable | Default | Description |
|---|---|---|
| `ROSBRIDGE_IP` | `127.0.0.1` | rosbridge host |
| `ROSBRIDGE_PORT` | `9090` | rosbridge port |
| `ROS_DEFAULT_TIMEOUT` | `5.0` | Tool timeout in seconds |

## License

Apache 2.0. See [LICENSE](LICENSE).

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [jonasneves](https://github.com/jonasneves)
- **Source:** [jonasneves/ros-mcp](https://github.com/jonasneves/ros-mcp)
- **License:** Apache-2.0
- **Homepage:** http://jonasneves.com/ros-mcp/

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-jonasneves-ros-mcp
- Seller: https://agentstack.voostack.com/s/jonasneves
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
