使用说明
ROS2 MCP 服务器
一个模型上下文协议(MCP)服务器,提供与ROS2(机器人操作系统2)主题交互的工具。该服务器允许您列出活跃的ROS2主题,检索特定主题的信息,并使用MCP兼容的工具从主题中获取数据。
建筑学
服务器通过调用ROS2命令行工具的子进程与ROS2进行交互ros2 topic list, ros2 topic info, ros2 topic echo),而不是使用ROS2客户端库。这种方法提供了一种轻量级的集成方式,无需初始化完整的ROS2节点,因此非常适合工具和开发环境。ROS2环境通过配置必要的环境变量(AMENT_PREFIX_PATH、PYTHONPATH、LD_LIBRARY_PATH、PATH)指向ROS2 Jazzy安装目录来程序化地设置。
特点/功能
- 列出主题获取当前所有活跃的ROS2主题列表。
- 主题信息获取特定ROS2主题的详细信息,包括消息类型、发布者数量和订阅者数量。
- 主题数据获取特定ROS2主题上发布的最新数据。
要求
- Python 3.14.0 或更高版本
- ROS2 Jazzy Jalisco 已安装并配置好源码
- MCP库(版本1.18.0或更高)
安装
-
克隆此仓库:
git clone <repository-url> cd ros2-mcp-server -
使用 uv 安装依赖项:
uv sync -
确保ROS2 Jazzy已安装,并在您的环境中正确加载。
使用方法
使用 uv 运行 MCP 服务器:
uv run src/ros2-mcp-server/main.py
服务器通过标准输入输出进行通信,并提供三个主要工具:
工具
-
获取主题
- 列出所有活动的ROS2主题
- 返回值:包含主题数量和主题列表的字符串
-
获取主题信息
- 检索特定主题的相关信息
- 参数:
topic带有前导斜杠的完整主题名称(例如,“/chatter”)
- 返回:主题类型、发布者数量和订阅者数量
-
获取主题数据
- 从主题中获取最新数据
- 参数:
topic带前导斜杠的完整主题名称(例如,“/chatter”)
- 返回:最新发布的消息数据
项目结构
src/ros2-mcp-server/
├── main.py # Main MCP server entry point
├── core/
│ ├── topics/
│ │ ├── topics_controller.py # ROS2 topic interaction logic
│ │ └── __init__.py
│ └── __init__.py
├── setup/
│ ├── ros2_env.py # ROS2 environment setup
│ └── __init__.py
└── __init__.py
发展
这个项目使用:
- 紫外线 用于依赖管理
- 黑色 用于代码格式化
- Ruff(在中文中,这个名字或词可能保持原样,因为它可能是一个专有名词或特定领域的术语,没有直接的中文对应翻译。如果是指一种犬类的叫声或动作,可以翻译为“粗声”或“吠叫”,但在此上下文中,更可能是指名字或特定表达,所以直接保留为“Ruff”。) 用于代码检查(或语法分析)
运行开发工具:
# Format code
uv run black .
# Lint code
uv run ruff check .
许可证
版权所有 2024 [Mars Rover UdeGSpace](注:UdeGSpace可能是一个特定项目或组织的名称,根据上下文可能需要具体翻译或保留原样)
根据Apache许可证,第2版(“许可证”)授权; 除非遵守许可协议,否则您不得使用此文件。 您可以在以下位置获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律有要求或书面协议另有约定,否则软件 根据许可证分发的内容是以“现状”为基础进行分发的, 不提供任何形式的保证或条件,无论是明示的还是暗示的。 请参阅许可证以了解有关权限的具体规定语言 根据本许可证的限制。
