ROS2 MCP服务器

一个提供与ROS2(机器人操作系统2)主题交互工具的模型上下文协议(MCP)服务器,适用于机器人开发和工具环境。

  • by Yiro13
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Yiro13/ros2-mcp-server

使用说明

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或更高)

安装

  1. 克隆此仓库:

    git clone <repository-url>
    cd ros2-mcp-server
    
  2. 使用 uv 安装依赖项:

    uv sync
    
  3. 确保ROS2 Jazzy已安装,并在您的环境中正确加载。

使用方法

使用 uv 运行 MCP 服务器:

uv run src/ros2-mcp-server/main.py

服务器通过标准输入输出进行通信,并提供三个主要工具:

工具

  1. 获取主题

    • 列出所有活动的ROS2主题
    • 返回值:包含主题数量和主题列表的字符串
  2. 获取主题信息

    • 检索特定主题的相关信息
    • 参数:
      • topic带有前导斜杠的完整主题名称(例如,“/chatter”)
    • 返回:主题类型、发布者数量和订阅者数量
  3. 获取主题数据

    • 从主题中获取最新数据
    • 参数:
      • 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

除非适用法律有要求或书面协议另有约定,否则软件 根据许可证分发的内容是以“现状”为基础进行分发的, 不提供任何形式的保证或条件,无论是明示的还是暗示的。 请参阅许可证以了解有关权限的具体规定语言 根据本许可证的限制。