Skip to content

Conversation

@rjohn-v
Copy link
Contributor

@rjohn-v rjohn-v commented Oct 26, 2025

Details, and how to test

Now that we have tested functionality to have installations via pip, I've made updates to the installation docs for users as well.

1. Before Install:

Run these two commands to remove any prior installations and have a fresh start.

pip uninstall ros-mcp
pipx uninstall ros-mcp

2. Access the instructions

The instructions are in installation.md directly on the branch or online here:
https://github.com/robotmcp/ros-mcp-server/blob/feature/rjv/pip_install_documentation/docs/installation.md

3. Follow instructions to install and run

I've tested WSL again, and have copied the instructions for Ubuntu and Mac from the previous PR where it was tested by our team. We should run through these instructions again to confirm.


20251026 Edit: Simplified the testing instructions since the latest v2.1.7 was merged onto main and released to PyPI

- Replace cloning/UV setup with pipx as primary installation method
- Add pip as alternative installation option
- Update MCP client configurations to use ros-mcp command
- Simplify JSON configurations for all platforms (Ubuntu, macOS, WSL)
- Create separate installation-from-source.md for developers
- Remove duplicate content and link back to main guide
- Update HTTP transport commands to use ros-mcp
- Improve documentation structure and user experience
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is installation-from-source just a copy-paste from the previous one?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes

@stex2005 stex2005 mentioned this pull request Oct 26, 2025
rjohn-v and others added 3 commits October 26, 2025 09:48
- Fix debug commands in 6.2 to use ros-mcp instead of uv run server.py for pipx installation consistency
- Remove collapsible sections in section 5 to improve visibility of LLM client options
- Move 'If you're still having issues' from 6.3 into 6.1 for better organization
- Split debug commands into separate, organized code blocks
- Wrap debug commands and 'Why pipx?' sections in collapsible details blocks
- Update section numbering and structure for better navigation
- Move installation commands before 'Why pipx?' section for better flow
- Wrap section 5 (Alternate Clients) in collapsible details block
- Add descriptive text to section 6.1 Common Issues
- Convert debug command headings to plain text for cleaner appearance
- Improve overall document structure and readability
@rjohn-v
Copy link
Contributor Author

rjohn-v commented Oct 26, 2025

@stex2005 - Thank you for the feedback. Good catches!

I've made changes and pushed again. (I've tried to keep everything that is not the "quick-install-path" within summary blocks so that it does not look overwhelming to a user. - "Here is installation in 4 simple steps"

@stex2005
Copy link
Collaborator

@stex2005 - Thank you for the feedback. Good catches!

I've made changes and pushed again. (I've tried to keep everything that is not the "quick-install-path" within summary blocks so that it does not look overwhelming to a user. - "Here is installation in 4 simple steps"

Got it, makes sense to use summary blocks to make the doc easier to follow.

Copy link
Collaborator

@stex2005 stex2005 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to merge for me.

@rjohn-v just one last-minute minor comment: is it worth mentioning the use of pip install . for local pip installation? I use it all the time in develop mode, could be Option B/C in alternative installations.

- Add new installation option for developers who want source access with pipx isolation
- Include step-by-step commands to clone repository and install with pipx install .
- Add note that regular pip install . also works for source installation
- Provide more flexibility for different developer preferences and environments
- Additional improvements to installation guide structure and content
@rjohn-v
Copy link
Contributor Author

rjohn-v commented Oct 27, 2025

Good to merge for me.

@rjohn-v just one last-minute minor comment: is it worth mentioning the use of pip install . for local pip installation? I use it all the time in develop mode, could be Option B/C in alternative installations.

Agreed.
Done.

@rjohn-v rjohn-v merged commit c563ae9 into develop Oct 27, 2025
1 check passed
@stex2005 stex2005 deleted the feature/rjv/pip_install_documentation branch October 28, 2025 21:17
@rjohn-v rjohn-v mentioned this pull request Nov 3, 2025
stex2005 added a commit that referenced this pull request Nov 5, 2025
* update the paths in the examples appropriately

* Fix: Removed Optional for IP and PORT in connect_to_robot. This sometimes generates truncation, no need for optional as they are intrinsically optional.

* Added ip and port information on config yaml file

* Added turtlesim.yaml

* ruff format fix

* Added configuration file for local_rosbridge.yaml

* trigger ruff check

* Revert "Added ip and port information on config yaml file"

This reverts commit 131fae4.

* Removed ip/port

* Add ROS 2 Parameters API (#135)

* Added get_parameters set_param get_param etc. Inspect parameters missing.

* Fixed inspect_all_parameters. Now tested with background color of turtlesim.

* Fixed parameter type in inspect_all_parameters + added get_parameter_details

* Added note that parameters are supported on ROS 2 only

* Added get_actions tool

* Added get_action_type tool

* Added get_action_details and inspect_all_actions tools

* Added send_action_goal, non-blocking, no feedback or result.

* Fixed send_action_goal to:
- Be blocking and waiting for action_result or timeout.
- Return action_result when action is completed.
- Return the last action_feedback, if available, when timeout.
- Return timeout/success:false if no action_feedback or action_result is detected.
- Fixed bug with timeout input tools (no Optional)

* Added cancel_action_goal. Non-blocking. No response is available. Tested with fibonacci server.

* Added note for ROS 2 support only.

* Added get_action_status tool

* Modified get_action_status to work with action_name and not action_type

* Added action_feedback through ctx.report_progress. Tested and working in Cursor, not showing in ChatGPT.

* Refactor: replace Optional with union syntax (Type | None) (#143)

- Remove Optional imports and usage
- Update server.py and websocket_manager.py

* Add ROS 2 Launch System (#138)

* Created ROS2 launch files for rosbridge and turtlesim demo, removed manual launch_ros.sh + Added docs on launch system

* Modified documentation

* Improved launch_mcp_tunnel to include default options for port and domain.

* Moved robot specifications folder to root

* updated Manifest and pyproject to point to correct locations

* Type hint fix in server.py from previous PR on ros actions

* updated config_utils to access specification files using Path

* updated tool names and descriptions for getting robot spec

* updated name of get verified robots list based on issue feedback

* Fixed inconsistent tool names of topic subscribers and publishers, solving #141

* Modify WSL installation documents (#169)

docs: add WSL path best practices to prevent common issues
- Add warnings to recommend using /home/username/ instead of /mnt/c/Users/username/
- Fix incorrect path labeling
- Add explanatory comment to config/mcp.json template
- Closes #102

* Cleared naming convention and removed optional scaffolding to state spec file directory explicitly (YAGNI principle)

* changed print statements from stdout to stderr for errors

* ruff

* Bump version to v2.1.7

* Update version to v2.1.7 in server.json and uv.lock

* Pipx install documentation for users (#178)

* Update installation documentation for pip install support

- Replace cloning/UV setup with pipx as primary installation method
- Add pip as alternative installation option
- Update MCP client configurations to use ros-mcp command
- Simplify JSON configurations for all platforms (Ubuntu, macOS, WSL)
- Create separate installation-from-source.md for developers
- Remove duplicate content and link back to main guide
- Update HTTP transport commands to use ros-mcp
- Improve documentation structure and user experience

* Move pipx benefits into advanced dropdown for cleaner main flow

* Improve installation documentation based on reviewer feedback

- Fix debug commands in 6.2 to use ros-mcp instead of uv run server.py for pipx installation consistency
- Remove collapsible sections in section 5 to improve visibility of LLM client options
- Move 'If you're still having issues' from 6.3 into 6.1 for better organization
- Split debug commands into separate, organized code blocks
- Wrap debug commands and 'Why pipx?' sections in collapsible details blocks
- Update section numbering and structure for better navigation

* Further improve installation documentation organization

- Move installation commands before 'Why pipx?' section for better flow
- Wrap section 5 (Alternate Clients) in collapsible details block
- Add descriptive text to section 6.1 Common Issues
- Convert debug command headings to plain text for cleaner appearance
- Improve overall document structure and readability

* Add Option C: Install from source using pipx

- Add new installation option for developers who want source access with pipx isolation
- Include step-by-step commands to clone repository and install with pipx install .
- Add note that regular pip install . also works for source installation
- Provide more flexibility for different developer preferences and environments

* Update installation documentation

- Additional improvements to installation guide structure and content

* Fix: make image analysis work with any topic containing image data (#144)

* Bugfix: make image analysis work with any topic containing image data

- Remove "Image" in topic name requirement
- Add content-based image detection using "data" field
- Update tool descriptions for clarity

* Add optional expects_image parameter with robust image detection
Includes is_image_like() helper that checks image-specific fields to
distinguish images from pointclouds etc.

* Track image parsing state and exclude data field

* Add was_parsed_as_image tracking to accurately report whether image
parsing occurred. Filter out large 'data' field from image responses
since image is already saved to disk for analysis.

* Create a centralized parse_input() function in websocket_manager.py
that encapsulates all parsing logic with expects_image hint handling.

* Refactor the request method in WebSocketManager to use parse_input. This will also allow service responses to handle image data if a service returns image data:

* Removed Union/Optional and using a string instead. Union/Optional are highly bugged in fastmcp.

* Added recognition for jpeg/compressed formats + restructure image analysis process.

* Added launch file for realsense example + cleaned up the README.md

* Updated pip minimum version + added pip badge (#180)

* Bugfix: adding check on missing rosapi services to avoid crashes in older versions (#182)

* Check rosapi required services for action-related tools and throw error/warning if not available (applies to ROS 1 or ROS 2 Humble)
* Improved return messages for action-related tools when required services are not compatible

* Update version to v2.2.0

---------

Co-authored-by: Jungsoo Lee <dlwjdtn7083@gmail.com>
Co-authored-by: Stefano Dalla Gasperina <stefano.dallagasperina@austin.utexas.edu>
@stex2005 stex2005 mentioned this pull request Nov 6, 2025
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