Skip to content

Conversation

@itsbharatj
Copy link

Description

Integrates a Tugbot warehouse simulation example using Ignition Gazebo (Fortress) to demonstrate robot control via ROS-MCP.

Changes

  1. New Example: Added simulation environment (.sdf) and unified launch configuration.
  2. Dependencies: Updated pyproject.toml with a bridge group (pymongo, tornado, netifaces) to resolve ROS node conflicts in uv environments.
  3. Documentation: Added README.md with setup instructions for Ubuntu 22.04/Humble.

itsbharatj and others added 30 commits October 7, 2025 21:47
- Fix macOS XQuartz display issues with dynamic DOCKER_DISPLAY variable
- Add platform-specific setup instructions for macOS, Linux, Windows
- Remove hard-coded IP addresses and display numbers
- Add comprehensive troubleshooting for common X11 connection errors

Resolves Docker GUI display issues on macOS and improves cross-platform compatibility.
Updated images and added a working demo section.
@stex2005
Copy link
Collaborator

Hi @itsbharatj,

thank you for your contribution! This demo is very interesting and well thought out.

However, I don’t think this example should be added directly to the ros-mcp-server repository. The main server already includes several built-in examples, and adding larger simulation demos (especially those introducing additional dependencies) can quickly bloat the core package.

In particular, since this change modifies the pyproject.toml to include new dependencies (e.g., pymongo, tornado, netifaces), it would force all users to install them even if they’re not running the simulation. That’s something we want to avoid.

I’d recommend creating a new repository (e.g., ros-mcp-demos or ros-mcp-examples) dedicated to simulation and showcase environments. The demo could live there cleanly, with its own pyproject.toml, launch files, and setup instructions.
@rjohn-v please give me confirmation and I will create the repo.

Thank you!

@itsbharatj
Copy link
Author

itsbharatj commented Nov 24, 2025

Hi @stex2005,

Thanks for the review and the kind words about the demo.

However, I'd like to share my reasoning for keeping this example in the main repo, particularly regarding how the dependencies are handled:

1. Dependencies:
The new dependencies (pymongo, tornado, etc.) are defined under [project.optional-dependencies] (see uv-documentation) in the bridge group. A standard user installing the server will not download these. They are only installed if a user explicitly runs uv sync --extra bridge (to install main + bridge) or uv pip install -e .[bridge]. Because of this uv feature, we can offer this capability without forcing the extra weight on anyone who doesn't need it.
Alternatively, I can create an additional pyproject.toml or requirements.txt for the respective example. Users can then install the dependencies only when required.

2. First example using .sdf files :
To my knowledge, the current examples don't yet cover .sdf simulations, which is the primary format for Ignition Gazebo. This example can serve as a "plug-and-play" template for users trying to connect their own custom simulations to ROS-MCP. By keeping it here, we provide a reference implementation that saves users from the hassle of figuring out the bridge connection from scratch.

Further, reading through the contribution guidelines, my impression was that the current repo is looking for more examples and integrations.

I strongly believe keeping diverse examples in the main repo significantly helps with adoption.
I am definitely open to moving this if you feel strongly about a separate repo.

Let me know what you think!

@stex2005
Copy link
Collaborator

Hi @itsbharatj,

Thanks again for the clarification. You’re right that using uv extras avoids pulling optional dependencies for regular users.

The main reason I still prefer a separate repo is scope. We’d like to keep ros-mcp-server lightweight with only the minimal turtlesim examples (and maybe not even those), and move all richer demos (including yours and the existing larger examples) into a dedicated ros-mcp-demos repository. That way we can maintain more complex simulation environments without increasing the maintenance effort of the core package.

If y'all agree, I’ll go ahead and create the new repo and help migrate everything over.

@itsbharatj
Copy link
Author

Hi @stex2005,

Sure, completely understand that you would want to keep theros-mcp-server repo lightweight, and not bloat with additional examples. I'm also totally okay to move the simulation examples to a new repository. Please let me know if you require any help in setting it up.

Thanks,
Bharat Jain

@rjohn-v
Copy link
Contributor

rjohn-v commented Nov 24, 2025

Good from me on creating a separate repo!

@rjohn-v
Copy link
Contributor

rjohn-v commented Nov 24, 2025

This repo could have a high level readme and several folders in it, each with its own project.toml

@rjohn-v
Copy link
Contributor

rjohn-v commented Nov 26, 2025

https://github.com/robotmcp/demos-ros-mcp-server/
Took me a moment to get down to it, but the repo is created!

@itsbharatj
Copy link
Author

itsbharatj commented Nov 26, 2025

Thanks @rjohn-v,
I will make a PR on the demos repo, and close this one.

Regards,
Bharat

@itsbharatj itsbharatj closed this Nov 26, 2025
@itsbharatj
Copy link
Author

Hey @rjohn-v and @stex2005,
I have made a PR inside the demos repo. You can review it here: robotmcp/demos-ros-mcp-server#1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants