lpigeon/ros-mcp-server

lpigeon/ros-mcp-server

от lpigeon
Управляет роботами на ROS без изменения их кода: читает топики, вызывает сервисы и действия, меняет параметры.

ROS MCP Server 🧠⇄🤖

Static Badge Static Badge Static Badge Python pip Dev Container GitHub Repo stars GitHub last commit

ROS-MCP-Server connects large language models (such as Claude, GPT, and Gemini) to robots, enabling bidirectional communication with no changes to existing robot source code.

Why ROS-MCP?
  • No robot source code changes → just add the rosbridge node to your existing ROS setup.
  • True two-way communication → LLMs can both control robots and observe everything happening on the Robot.
  • Full context → publish & subscribe to topics, call services & actions, set parameters, read sensor data, and monitor robot state in real time.
  • Deep ROS understanding → guides the LLM to discover available topics, services, actions, and their types (including custom ones) — enabling it to use them with the right syntax without manual configuration.
  • Works with any MCP client → built on the open MCP standard, supporting Claude Code, Codex CLI, Gemini CLI, Claude Desktop, ChatGPT, Cursor, and more.
  • Works across ROS versions → compatible across ROS 2 (Jazzy, Humble, and others) and ROS 1 distros.

Часто задаваемые вопросы

Инструменты были проиндексированы:
call_service

Вызывает ROS-сервис с указанными данными запроса. Пример: call_service('/rosapi/topics', 'rosapi/Topics', {}) call_service('/slow_service', 'my_package/SlowService', {}, timeout=10.0) # Указывайте timeout только для медленных сервисов ВАЖНО: Имена полей в словаре запроса должны совпадать с именами полей, которые показывает get_service_details(), они уже отформатированы для rosbridge (без ведущих подчёркиваний). Например, используйте {'topic': '/image'}, а не {'_topic': '/image'}.

Вызов службы

Параметры
  • requestobjectобязательный
  • service_namestringобязательный
  • service_typestringобязательный
  • timeoutnumber
cancel_action_goal

Отменяет конкретную цель действия. Работает только с ROS 2. Пример: cancel_action_goal('/turtle1/rotate_absolute', 'goal_1758653551839_21acd486')

Отменяет цель действия

Параметры
  • action_namestringобязательный
  • goal_idstringобязательный
connect_to_robot

Подключается к роботу, задавая IP/порт. Также проверяет соединение, чтобы убедиться, что робот доступен и порт открыт.

Подключается к Robot

Параметры
  • ipstring
  • ping_timeoutnumber
  • portinteger | string
  • port_timeoutnumber
delete_parameter

Удаляет параметр ROS. Работает только с ROS 2. Пример: delete_parameter('/turtlesim:background_b')

Удаляет параметр

Параметры
  • namestringобязательный
detect_ros_versionтолько чтение

Определяет версию и дистрибутив ROS через rosbridge.

Определяет версию ROS.

Параметры

Без параметров.

get_action_detailsтолько чтение

Получает полные сведения о действии, включая структуры goal, result и feedback. Требует тип действия; если не знаете его, вызовите без action_type, чтобы в ошибке вернулся список доступных типов. Пример: get_action_details('/turtle1/rotate_absolute', 'turtlesim/action/RotateAbsolute')

Получает детали действия

Параметры
  • actionstringобязательный
  • action_typestring
get_actionsтолько чтение

Получает список всех доступных ROS actions. Пример: get_actions()

Получает действия

Параметры

Без параметров.

get_action_statusтолько чтение

Получает статус действия для конкретного имени действия. Работает только с ROS 2. Пример: get_action_status('/turtle1/rotate_absolute')

Получает статус действия

Параметры
  • action_namestringобязательный
get_message_detailsтолько чтение

Получает полную структуру/определение типа сообщения. Пример: get_message_details('geometry_msgs/Twist')

Получает детали сообщения.

Параметры
  • message_typestringобязательный
get_node_detailsтолько чтение

Получает подробную информацию о конкретном узле, включая его издателей, подписчиков и сервисы. Пример: get_node_details('/turtlesim')

Получает сведения об узле.

Параметры
  • nodestringобязательный
get_nodesтолько чтение

Получает список всех запущенных сейчас узлов ROS. Пример: get_nodes()

Получает узлы

Параметры

Без параметров.

get_parameterтолько чтение

Получает значение одного параметра ROS по имени. Работает только с ROS 2. Пример: get_parameter('/turtlesim:background_b')

Получает параметр

Параметры
  • namestringобязательный
get_parameter_detailsтолько чтение

Получает подробные сведения о конкретном параметре ROS, включая значение, тип и метаданные. Работает только с ROS 2. Пример: get_parameter_details('/turtlesim:background_r')

Получает сведения о параметре.

Параметры
  • namestringобязательный
get_parametersтолько чтение

Возвращает список всех имён параметров ROS для конкретного узла. Работает только с ROS 2. Пример: get_parameters('cam2image') get_parameters('/cam2image')

Получает параметры

Параметры
  • node_namestringобязательный
get_service_detailsтолько чтение

Получает полную информацию о сервисе, включая структуры запроса/ответа и узлы-провайдеры. Пример: get_service_details('/rosapi/topics')

Получает сведения о сервисе

Параметры
  • servicestringобязательный
get_servicesтолько чтение

Получает список всех доступных сервисов ROS. Пример: get_services()

Получает сервисы.

Параметры

Без параметров.

get_service_typeтолько чтение

Получает тип сервиса для конкретного сервиса. Пример: get_service_type('/rosapi/topics')

Получает тип сервиса.

Параметры
  • servicestringобязательный
get_topic_detailsтолько чтение

Получает подробную информацию о конкретной теме, включая её тип, публикаторов и подписчиков. Пример: get_topic_details('/cmd_vel')

Get Topic Details

Параметры
  • topicstringобязательный
get_topicsтолько чтение

Получает список всех доступных ROS-топиков. Пример: get_topics()

Получает темы

Параметры

Без параметров.

get_topic_typeтолько чтение

Получает тип сообщения для конкретного топика. Пример: get_topic_type('/cmd_vel')

Получает тип темы.

Параметры
  • topicstringобязательный
get_verified_robots_listтолько чтение

Перечисляет предварительно проверенные модели роботов, для которых доступны файлы спецификаций с рекомендациями по использованию. Используйте этот инструмент, чтобы проверить, доступен ли для модели робота дополнительный контекст, перед вызовом get_verified_robot_spec. Если вашего робота нет в этом списке, вы всё равно можете подключиться к нему напрямую с помощью connect_to_robot.

Получает список проверенных роботов.

Параметры

Без параметров.

get_verified_robot_specтолько чтение

Загружает спецификации и контекст использования для проверенной модели робота. Используйте ТОЛЬКО если модель робота есть в проверенном списке (сначала вызовите get_verified_robots_list для проверки). У большинства роботов спецификаций нет - это нормально, вместо этого подключайтесь напрямую через connect_to_robot.

Получает проверенную спецификацию робота

Параметры
  • namestringобязательный
has_parameterтолько чтение

Проверяет, существует ли параметр ROS. Работает только с ROS 2. Пример: has_parameter('/turtlesim:background_b')

Имеет параметр

Параметры
  • namestringобязательный
ping_robotsтолько чтение

Пингует один или несколько IP-адресов роботов и проверяет, открыты ли конкретные порты. Успешный пинг IP, но не порта, может указывать на то, что ROSbridge не запущен. Пример: ping_robots(targets=[{'ip': '192.168.1.100', 'port': 9090}, {'ip': '192.168.1.101', 'port': 9090}])

Пингует роботов

Параметры
  • ping_timeoutnumber
  • port_timeoutnumber
  • targetsobject[]
publish_for_durations

Публикует последовательность сообщений в топик ROS, каждое удерживается заданную длительность. При rate_hz=0 (по умолчанию): публикует каждое сообщение один раз, затем ждёт заданную длительность. При rate_hz>0: публикует каждое сообщение повторно с заданной частотой в течение длительности (полезно для контроллеров вроде diff_drive, которым нужны непрерывные команды). Пример (одна публикация с задержкой): publish_for_durations(topic='/cmd_vel', msg_type='geometry_msgs/msg/Twist', messages=[{'linear': {'x': 1.0}}, {'linear': {'x': 0.0}}], durations=[1, 2]) Пример (непрерывная потоковая передача на 10 Hz в течение 2 секунд): publish_for_durations(topic='/cmd_vel', msg_type='geometry_msgs/msg/Twist', messages=[{'angular': {'z': 0.5}}], durations=[2.0], rate_hz=10)

Публикует для Durations

Параметры
  • durationsnumber[]
  • messagesobject[]
  • msg_typestring
  • rate_hznumber
  • topicstring
publish_once

Публикует одно сообщение в топик ROS. Пример: publish_once(topic='/cmd_vel', msg_type='geometry_msgs/msg/TwistStamped', msg={'linear': {'x': 1.0}})

Опубликовать один раз

Параметры
  • msgobject
  • msg_typestring
  • topicstring
send_action_goal

Отправляет цель серверу действий ROS. Работает только с ROS 2. Пример: send_action_goal('/turtle1/rotate_absolute', 'turtlesim/action/RotateAbsolute', {'theta': 1.57})

Отправляет цель действия

Параметры
  • action_namestringобязательный
  • action_typestringобязательный
  • goalobjectобязательный
  • timeoutnumber
set_parameter

Задаёт значение одного параметра ROS. Работает только с ROS 2. Пример: set_parameter('/turtlesim:background_b', '255')

Задает параметр

Параметры
  • namestringобязательный
  • valuestringобязательный
subscribe_for_durationтолько чтение

Подписывается на топик на заданное время и собирает сообщения. Пример: subscribe_for_duration(topic='/cmd_vel', msg_type='geometry_msgs/msg/TwistStamped', duration=5, max_messages=10) subscribe_for_duration(topic='/high_rate_topic', msg_type='sensor_msgs/Image', duration=10, queue_length=5, throttle_rate_ms=100) # Управляет буферизацией сообщений и частотой subscribe_for_duration(topic='/camera/image_raw', msg_type='sensor_msgs/Image', duration=5, expects_image='true') # Подсказывает, что это изображение, для более быстрой обработки subscribe_for_duration(topic='/point_cloud', msg_type='sensor_msgs/PointCloud2', duration=5, expects_image='false') # Пропускает определение изображения, если данные не изображение

Подписка на срок

Параметры
  • durationnumber
  • expects_imagestring
  • max_messagesinteger
  • msg_typestring
  • queue_lengthinteger
  • throttle_rate_msinteger
  • topicstring
subscribe_onceтолько чтение

Подписывается на топик ROS и возвращает первое полученное сообщение. Пример: subscribe_once(topic='/cmd_vel', msg_type='geometry_msgs/msg/TwistStamped') subscribe_once(topic='/slow_topic', msg_type='my_package/SlowMsg', timeout=10.0) # Используйте больший timeout для медленных топиков subscribe_once(topic='/high_rate_topic', msg_type='sensor_msgs/Image', timeout=5.0, queue_length=5, throttle_rate_ms=100) # Управляйте буферизацией сообщений и частотой subscribe_once(topic='/camera/image_raw', msg_type='sensor_msgs/Image', expects_image='true') # Подсказка, что это изображение, для более быстрой обработки subscribe_once(topic='/point_cloud', msg_type='sensor_msgs/PointCloud2', expects_image='false') # Пропустите определение изображения для не-изображений

Подписаться один раз

Параметры
  • expects_imagestring
  • msg_typestring
  • queue_lengthinteger
  • throttle_rate_msinteger
  • timeoutnumber
  • topicstring
view_saved_imageтолько чтение

Показывает ранее сохранённое изображение с диска. Изображения сохраняются автоматически при подписке на топики с изображениями. Используйте этот инструмент, чтобы снова посмотреть сохранённое изображение без повторной подписки.

Просматривает сохранённое изображение

Параметры
  • image_pathstring
3.1.2основная
3.1.0
3.0.1
2.2.1
2.2.0
2.1.8
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1

Выберите клиент, чтобы установить lpigeon/ros-mcp-server:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "lpigeon-ros-mcp-server-mzfdnd2jai": {
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "lpigeon-ros-mcp-server-mzfdnd2jai": {
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "lpigeon-ros-mcp-server-mzfdnd2jai": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"lpigeon-ros-mcp-server-mzfdnd2jai\",\"type\":\"stdio\",\"command\":\"uvx\",\"args\":[\"ros-mcp\",\"--transport=stdio\"]}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "lpigeon-ros-mcp-server-mzfdnd2jai": {
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add lpigeon-ros-mcp-server-mzfdnd2jai -- uvx ros-mcp --transport=stdio

Либо через JSON-конфиг:

claude mcp add-json lpigeon-ros-mcp-server-mzfdnd2jai "{\"command\":\"uvx\",\"args\":[\"ros-mcp\",\"--transport=stdio\"]}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add lpigeon-ros-mcp-server-mzfdnd2jai -- uvx ros-mcp --transport=stdio

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.lpigeon-ros-mcp-server-mzfdnd2jai]
command = "uvx"
args = ["ros-mcp", "--transport=stdio"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите lpigeon/ros-mcp-server, а в поле команды запуска — строку ниже:
uvx ros-mcp --transport=stdio

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "lpigeon-ros-mcp-server-mzfdnd2jai": {
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "lpigeon-ros-mcp-server-mzfdnd2jai": {
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например lpigeon-ros-mcp-server-mzfdnd2jai.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: lpigeon-ros-mcp-server-mzfdnd2jai
    command: uvx
    args:
      - "ros-mcp"
      - "--transport=stdio"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "lpigeon-ros-mcp-server-mzfdnd2jai": {
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}

Похожие MCP-сервера

WiseVision/mcp_server_ros_2

WiseVision/mcp_server_ros_2

от wise-vision

MCP сервер для ROS 2: читает и публикует топики, вызывает сервисы, управляет действиями. Включает промпты для анализа данных и мониторинга роботов. Ускоряет разработку и отладку с помощью AI.

Python⭐ 93
Yutarop/ros-mcp

Yutarop/ros-mcp

от yutarop

MCP инструмент для управления роботами в ROS2 с помощью естественного языка. Поддерживает топики, сервисы, экшены и все типы сообщений. Полезен робототехникам для отладки и прототипирования.

Python⭐ 36
ttommyth/interactive-mcp

ttommyth/interactive-mcp

от ttommyth

MCP-сервер для интерактивного взаимодействия LLM с пользователем: запрашивает ввод, отправляет уведомления и ведет интенсивный чат. Полезен при доработках кода, уточнениях и подтверждении действий ...

TypeScript⭐ 351
peter-j-thompson/semanticapi-mcp

peter-j-thompson/semanticapi-mcp

от peter-j-thompson

Semantic API MCP сервер для поиска API по описанию на естественном языке. Агенты Claude и ChatGPT получают endpoint, параметры, auth и примеры кода. Ускоряет поиск и интеграцию API.

Python⭐ 1
saurav61091/mcp-openapi

saurav61091/mcp-openapi

от saurav61091

Превращает любую OpenAPI 3.x спецификацию в MCP-инструменты для Claude - одной строкой в конфиге. Claude вызывает эндпоинты через естественный язык, инструменты обновляются автоматически.

TypeScript⭐ 1
agentrpc/agentrpc

agentrpc/agentrpc

от agentrpc

AgentRPC — универсальный RPC слой, который позволяет ИИ-агентам через MCP сервер вызывать функции на любом языке в приватных сетях, Kubernetes и облаках. Сервер регистрирует и отслеживает инструменты, обеспечивая отказоустойчивость и наблюдаемость. Полезен разработчикам, строящим кросс-сетевые аг...

TypeScript⭐ 135
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин