ROS MCP

by Yutarop

ROS MCP 是一个用于在 ROS 环境中通过自然语言控制机器人的 MCP 服务器。它支持通过 ROS 主题(topics)、服务(services)和动作(actions)进行通信,并兼容任何 ROS 消息类型。集成需外部配置 claude_desktop_config.json 以连接 Claude Desktop。

Developer toolsstdioCommunity

Repository-wide counts · Cached 2025-11-07

Overview

The ROS MCP MCP server is a publicly available project. Review the upstream repository for installation instructions, supported tools, compatibility, permissions, and current maintenance status.

Configuration

Configuration, transport, authentication, and runtime requirements vary by project. Open the repository before connecting and use the smallest set of credentials and permissions required.

Open the ROS MCP repository to read the latest documentation.

KEEP EXPLORING

Compare source, connection, and authentication details before choosing an implementation.

View the complete category

模型上下文协议服务器

modelcontextprotocol

Community

一组用于模型上下文协议(MCP)的参考实现,展示了对大型语言模型(LLM)工具和数据源的安全且受控的访问方式。

Context7 Platform - Up-to-date Code Docs For Any Prompt

upstash

Community

Context7 MCP server providing up-to-date, version-specific documentation and code examples for libraries, enabling coding agents to fetch accurate docs and code snippets. Requires an API key for higher rate limits, passed via CONTEXT7_API_KEY header.

Playwright MCP

Microsoft Corporation

Community

A Model Context Protocol (MCP) server that provides browser automation capabilities using Playwright. Enables LLMs to interact with web pages through structured accessibility snapshots, bypassing the need for screenshots or visually-tuned models.

AIHawk

feder-cr

Community

AIHawk is an anti detect browser and web browsing agent, open source, with an MCP server for coding agents: undetected, no captchas, no blocks. It requires an OpenRouter API key for the standalone web UI mode, which can be provided via the --openrouter-key flag or the OPENROUTER_API_KEY environment variable or a .env file in the running directory.

FROM THE SOURCE

Repository README

Build-time snapshot · Retrieved 2026-10-05

View original

ROS MCP

Trust Score ROS2-humble Industrial CI

ROS MCP is a MCP server designed for controlling robots in ROS environments using natural language. It supports communication via ROS topics, services, and actions, and works with any ROS message type.

Demo

Test to see if ros topics, services, and actions can be used.

https://github.com/user-attachments/assets/61143c37-fb73-4998-9cbc-844d92ae61d9

Prompt used (Topic)

Open gazebo with TurtleBot3 and publish topic to move it.

Prompt used (Service)

Show me service list and call service to reset the world in Gazebo.

Prompt used (Action)

Show me action list and call action to move the TurtleBot3 forward for 1m.

Components

  • Socket Server (socket_server.py): A lightweight server that runs on localhost:8765 to handle GUI-related operations. It receives instructions from the MCP server to launch tools such as Gazebo or rqt_graph on the local display.

  • MCP Server (ros-general.py): A Python-based server that implements the MCP. It processes natural language input, maps it to ROS commands, and communicates with the socket server. To enable node communication between the MCP server and the local machine, both must be configured with the same ROS_DOMAIN_ID on the same local network.

Overview of MCP Tools

  • Topic Management: List, monitor, and publish to ROS2 topics
  • Node Control: List and inspect running ROS2 nodes
  • Service Interaction: Call ROS2 services with custom
  • Action Support: Send goals to ROS2 actions
  • GUI Integration: Launch ROS2 GUI tools via WebSocket server
  • Environment Debugging: Check ROS2 setup and configuration
  • Process Management: Clean up running ROS2 processes

Please refer here for more details.

Getting Started

Requirements
  • ROS2 Humble Hawksbill (This project has only been tested with ROS2 Humble. Compatibility with other ROS2 distributions is not guaranteed.)
  • claude desktop (Linux, macOS and Windows)
  • Python 3.10+
  • websockets >= 15.0.1
  • uv package manager (Installing uv)
  • Other dependencies as listed in pyproject.toml

Installation

Git clone and install websockets package
git clone [email protected]:Yutarop/ros-mcp.git
cd ros-mcp
pip install "websockets>=15.0.1"
Activate .venv and install dependencies
uv venv
source .venv/bin/activate
uv pip install -e .
Claude Settings (claude_desktop_config.json)

To use the MCP server correctly with Claude Desktop, you need to modify the claude_desktop_config.json file with appropriate values.

{
  "mcpServers": {
    "ros-general": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/PARENT/FOLDER/ros-mcp",
        "run",
        "bash",
        "-c",
        "export ROS_LOG_DIR=/tmp && export ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-YOUR_ROS_DOMAIN_ID} && source /opt/ros/humble/setup.bash && python3 /ABSOLUTE/PATH/TO/PARENT/FOLDER/ros-general.py"
      ]
    }
  }
}
💡 Replace the following placeholders:
  • /ABSOLUTE/PATH/TO/PARENT/FOLDER/ros-mcp Replace with the absolute path the ros-mcp directory. For example: /home/ubuntu/ros-mcp

  • YOUR_ROS_DOMAIN_ID Replace with the ROS domain ID used in your environment to enable ROS communication between the MCP server and your local machine. If you're not sure what your current domain ID is, you can check it by running the following command in your terminal:

    echo $ROS_DOMAIN_ID
    

    If nothing is printed, the domain ID is not set, and the default value 0 will be used. Alternatively, you can set it manually using the following command:

    export ROS_DOMAIN_ID=10  # Replace 10 with your desired domain ID
    
  • /ABSOLUTE/PATH/TO/PARENT/FOLDER/ros-general.py Replace with the absolute path to your ros-general.py script. For example: /home/ubuntu/ros-mcp/ros-general.py

Running the Servers

Start MCP server

Make sure your virtual environment is activated before running the MCP server:

(ros-mcp) $ uv run ros-general.py
Start socket server
python3 socket_server.py

💡not in the virtual environment!