-
Notifications
You must be signed in to change notification settings - Fork 137
Bugfix: adding check on missing rosapi services to avoid crashes in older versions #182
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rjohn-v
approved these changes
Oct 31, 2025
Merged
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>
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #181
Should be tested with
get_action_detailstool on[ ] ROS 2 Jazzy - should respond correctly
[ ] ROS 2 Humble - should raise compatibility issue
[ ] ROS 1 - should raise compatibility issue
In general, for any version older than ROS 2 Jazzy the MCP should gracefully inform compatibility issue rather than crash.
Ready for Review