您的足迹: ros-mcp-server

ROS-MCP-Server: LLM与ROS系统的MCP桥梁

ROS-MCP-Server 是一个开源项目,实现了大语言模型与机器人操作系统之间的双向集成。它通过 MCP 协议与 LLM 端通信,通过 rosbridge WebSocket 协议连接 ROS 系统,充当协议翻译层。

项目地址:https://github.com/robotmcp/ros-mcp-server | Stars: 1291 | 许可证: Apache 2.0 | 主页:https://robotmcp.ai

核心能力

  • 自然语言控制机器人 - 将对话式命令转换为 ROS topics、services 和 parameters
  • 实时机器人观测 - 流式传输传感器数据、监控机器人状态、检查 ROS 生态系统
  • 零机器人代码修改 - 通过 rosbridge 接口集成现有 ROS 系统,无需修改机器人代码
  • 多平台支持 - 兼容 ROS1 (Noetic) 和 ROS2 (Jazzy、Humble 等) 及多种机器人平台
  • 通用 MCP 客户端兼容 - 支持 Claude Code、Claude Desktop、Codex CLI、Gemini CLI、ChatGPT、Cursor 等

系统架构

ROS-MCP-Server 采用三层架构设计:

  • LLM 通信层 - 通过 MCP 协议与 LLM 客户端通信,接收工具调用请求并返回结果
  • 协议转换层 - 将 MCP 工具调用转换为 rosbridge WebSocket JSON 消息
  • ROS 集成层 - 通过 rosbridge 与 ROS/ROS2 系统交互,操作 topics、services、parameters

工具分类

服务器注册了以下工具类别:

类别 工具函数 功能说明
Topic 工具 list_topics()get_topic_type()subscribe_to_topic()publish_once() 发现和操作 ROS 主题
Service 工具 list_services()get_service_type()call_service() 枚举和调用 ROS 服务
Parameter 工具 get_param()set_param()list_params() 读写 ROS 参数服务器
System 工具 connect_to_robot()test_connectivity() 连接管理和网络检测
Action 工具 Action 相关工具函数 ROS action 支持
Node 工具 节点相关工具函数 列出和检查运行中的节点
Image 工具 图像相关工具函数 捕获和分析摄像头画面
Robot Config 工具 配置相关工具函数 获取机器人规格信息

核心组件

组件 文件 功能
FastMCP 服务器 server.py / ros_mcp/main.py 主 MCP 服务器进程,工具注册和 LLM 通信,支持 stdio/http/streamable-http 传输
WebSocket 管理器 utils/websocket_manager.py 管理 rosbridge WebSocket 连接和消息序列化
网络工具 utils/network_utils.py 连通性测试,提供 ping_ip_and_port() 函数
工具注册 ros_mcp/tools/__init__.py 按类别注册所有 ROS MCP 工具
图像处理 utils/websocket.py 解析 ROS 图像消息(支持 CompressedImage 和原始图像格式)

安装指南

步骤一: 配置 AI 客户端

使用 uv 包管理器快速配置 Claude Code:

# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 添加 MCP 服务器到 Claude Code
claude mcp add ros-mcp -- uvx ros-mcp --transport=stdio

支持的其他客户端包括:

客户端 说明
Codex CLI OpenAI 的 CLI 代理
Gemini CLI Google 的 CLI
Claude Desktop Anthropic 桌面应用
ChatGPT OpenAI 桌面应用
Cursor AI 增强 IDE

步骤二: 启动 Rosbridge

在机器人端安装并启动 rosbridge_server:

# 安装 rosbridge(以 ROS2 Jazzy 为例)
sudo apt update
sudo apt install ros-jazzy-rosbridge-server

# 启动 rosbridge(同时启动 rosapi)
source /path/to/ros_ws/install/setup.bash
ros2 launch rosbridge_server rosbridge_websocket_launch.xml

重要提醒

必须同时安装 rosapi。ros-mcp-server 需要 rosbridgeserver 的 WebSocket 接口 rosapi 的内省服务(提供 getnodes、gettopics、getservices 等功能)。请使用 launch 文件 启动而非 ros2 run,否则所有 introspection 工具将因 “Service does not exist” 错误而失败。建议安装 ros-<distro>-rosbridge-suite 元包。

ROS1 启动命令:

roslaunch rosbridge_server rosbridge_websocket.launch

步骤三: 连接机器人

在 AI 客户端中输入以下指令即可连接:

Connect to the robot at <robot-ip>

连接后可尝试探索 ROS 系统:

What topics and services are available on the robot?

RobotMCP 平台架构

除核心服务器外,项目还提供了完整的 RobotMCP 平台。平台由三层组成:Server(托管 MCP 端点)、Modules(提供工具的插件包)和 Cloud(云服务处理初始设置)。

RobotMCP Server

基于 FastAPI 的 MCP 服务器,运行在本地或机器人上:

端点 传输方式 说明
POST /mcp Streamable HTTP 主 MCP 端点(推荐)
GET /sse SSE 旧版端点(即将弃用)
GET / HTTP 服务器信息

核心功能:

  • 模块自动发现 - 启动时扫描 .gitmodules,读取各模块的 pyproject.toml,自动安装依赖并调用模块的 register() 函数
  • Cloudflare 隧道 - 将本地服务器暴露为 {your-robot}.robotmcp.ai,无需端口转发或防火墙更改
  • OAuth 2.1 - 可选的认证机制,支持 PKCE、动态客户端注册和创建者权限控制
  • CLI 守护进程 - 后台运行,支持 start、stop、status、verify 命令

ROS-MCP 模块

作为默认内置模块,提供全面的 ROS 工具集:

类别 能力
Topics 发布消息、订阅流、列出可用 topic
Services 调用任意服务(含自定义类型)
Parameters 读写 ROS 参数
Nodes 列出和检查运行中的节点
Actions ROS action 支持
Images 捕获和分析摄像头画面
Connection 管理 rosbridge 连接
Robot config 获取机器人规格信息

此外还注册了 resource(主题定义、服务模式、类型文档)和 prompt(数据分析、调试、机器人交互的系统提示词)。

自定义模块开发

模块为插件包,通过 integration.py 中的 register() 函数向服务器注册工具。

自定义模块目录结构

my-module/
├── pyproject.toml       # 包名和依赖
└── my_module/
    ├── __init__.py
    └── integration.py   # register(mcp, **kwargs) 函数

# pyproject.toml 示例
[project]
name = "my-module"
version = "0.1.0"
dependencies = ["fastmcp>=2.0.0"]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

# integration.py 示例
from fastmcp import FastMCP

def register(mcp: FastMCP, **kwargs) -> None:
    @mcp.tool()
    def my_tool(param: str) -> str:
        """Description of what this tool does."""
        return f"Result: {param}"

添加模块到服务器:

robotmcp-server add https://github.com/robotmcp/test-mcp-server.git

RobotMCP Cloud

位于 app.robotmcp.ai 的轻量级云服务,仅参与以下初始设置:

  • 用户认证(基于 Supabase)
  • Cloudflare 隧道创建和 DNS 配置
  • 通过 Web 仪表盘进行服务器共享和访问管理
云服务仅在初始设置和服务管理阶段参与,不在 MCP 数据路径中 - 配置完成后,LLM 客户端直接通过 Cloudflare 隧道连接到本地服务器,数据不经过云端。

应用场景

  • 工业机器人调试 - AI Agent 诊断工业机器人末端执行器异常,自动发现自定义 topic 和服务类型
  • 自然语言操控 - 通过自然语言指令控制机器人执行复杂任务(导航、抓取等)
  • 仿真集成 - 与 NVIDIA Isaac Sim、Gazebo 等仿真环境配合使用
  • 多机器人协作 - 通过 MCP 协议管理多个机器人系统

参考链接

评论

请输入您的评论. 可以使用维基语法:
 
robotmcp/ros-mcp-server.txt · 最后更改: 2026/07/14 08:43