- 01 Dec, 2025 4 commits
-
-
- Use dot (.) only for explicitly defined subscreen items - Use underscore (_) for automatically discovered subscreens - Product.FindProduct now correctly named: screen_PopCommerce_screen_PopCommerceAdmin_Catalog_Product_FindProduct - Tool execution now works with proper screen path resolution - Resolves dot vs underscore naming convention for Moqui MCP tools
Ean Schuessler committed -
- Add parentToolName parameter to processScreenWithSubscreens function - Pass hierarchical tool name through recursive subscreen processing - SimpleScreens now appear under proper PopCommerceAdmin hierarchy - Product.FindProduct tool correctly named: screen_PopCommerce_screen_PopCommerceAdmin_Catalog.Product.FindProduct - Resolves issue where subscreens used file paths instead of hierarchical names
Ean Schuessler committed -
- Fixed missing opening brace and alignment issues in fallback logic - Removed duplicate log statement and extra closing brace - Screen discovery now works correctly for nested subscreens - Product.FindProduct tool now properly discovered under Catalog hierarchy Resolves broken MCP tool hierarchy where subscreens were missing from tools list.
Ean Schuessler committed -
- Separate processScreenWithSubscreens closure definition to fix Groovy closure scope issues - Add proper flattening of subScreenPathList to handle nested collections - Fix subscreen tool naming with dot notation for parent.child relationships - Enhance screen tool execution to support subscreen parameters - Unwrap Moqui service results in EnhancedMcpServlet to avoid double nesting in JSON-RPC responses - Improve error handling and logging throughout screen discovery process Now successfully discovers 29 total tools (17 screen tools + 12 service tools) with proper session management.
Ean Schuessler committed
-
- 29 Nov, 2025 3 commits
-
-
- Fixed property name from subScreenInfoByName to subscreenInfoByName (lowercase 's') - Added proper null checks for screenInfoList before accessing .first() - Added proper object navigation for accessing screen locations via subScreenInfo?.sd?.location - Resolved MissingPropertyException in Screen Discovery service - Screen discovery now working correctly, returning 345 screen tools for users
Ean Schuessler committed -
This resolves the error: 'No signature of method: org.moqui.impl.screen.ScreenFacadeImpl.getScreenInfo() is applicable for argument types: (String)' that occurred when trying to discover subscreens for screens like component://PopCommerce/screen/PopCommerceAdmin/Shipment.xml. The fix changes calls from getScreenInfo() to getScreenInfoList() which is the correct method available in ScreenFacadeImpl.
Ean Schuessler committed -
Ean Schuessler committed
-
- 28 Nov, 2025 4 commits
-
-
Ean Schuessler committed
-
Ean Schuessler committed
-
Ean Schuessler committed
-
Ean Schuessler committed
-
- 27 Nov, 2025 1 commit
-
-
- Created McpScreenTest and McpScreenTestRender interfaces - Rewrote CustomScreenTestImpl to implement MCP-specific interfaces instead of extending framework's buggy ScreenTestImpl - Added all required interface methods for complete functionality - Resolves @Override annotation error on non-existent makeWebFacade method - Maintains MCP functionality while providing independent screen test capabilities
Ean Schuessler committed
-
- 26 Nov, 2025 1 commit
-
-
- Updated screen tool call to use correct PopCommerce catalog screen - Added proper error assertions to fail test when isError is true - Added content validation to fail test when no products returned - Added blue product validation to ensure search criteria is met - Replaced warning messages with actual test failures The test now properly validates that PopCommerce catalog search works and actually finds blue products instead of just printing warnings.
Ean Schuessler committed
-
- 25 Nov, 2025 2 commits
-
-
- Replace unhelpful URL fallbacks with comprehensive error details - Include error type, message, stack trace, and context information - Add troubleshooting suggestions for common issues - Maintain test compatibility while improving debugging experience This makes MCP screen rendering failures much more actionable for developers.
Ean Schuessler committed -
- Contains working servlet implementation with URL fallback behavior - Tests passing with current approach - Ready to implement error exposure improvements
Ean Schuessler committed
-
- 24 Nov, 2025 1 commit
-
-
- Created McpTestClient.groovy for automated workflow testing - Added McpTestServices.xml with test product/order/customer services - Updated security permissions for MCP test services - Implemented test workflows for product discovery and order placement - Added test screen for MCP functionality verification - All core MCP functionality verified working: * Authentication and session management * Tool discovery and execution * Screen access (ProductList, OrderList, PartyList) * Security-based permission filtering
Ean Schuessler committed
-
- 23 Nov, 2025 4 commits
-
-
- Replace JsonBuilder with JsonOutput.toJson() to avoid ServiceConfigurationError - Fixes ExceptionInInitializerError with FastStringServiceFactory - MCP server now properly handles JSON-RPC responses and SSE events - All MCP functionality working: ping, tools/list, screen discovery and execution
Ean Schuessler committed -
- Fixed missing JsonOutput import in EnhancedMcpServlet.groovy - Resolves 'No such property: JsonOutput' error - MCP server now properly handles JSON responses - Size protection and screen execution working correctly
Ean Schuessler committed -
- Add size checks and limits to screen rendering services - Implement graceful truncation for oversized responses - Add timeout protection for screen rendering operations - Enhanced error handling and logging for large responses - Prevent server crashes from large screen outputs This protects the MCP server from crashes when screens generate large amounts of data while maintaining functionality for normal use cases.
Ean Schuessler committed -
- Add CustomScreenTestImpl for better screen path handling - Fix WebFacadeStub to use actual screenPath instead of hardcoded '/test' - Improve screen discovery and execution in McpServices - Support standalone screens and proper root screen detection - Add timeout protection for screen rendering
Ean Schuessler committed
-
- 22 Nov, 2025 6 commits
-
-
- Fixed NullPointerException in ScreenTest by removing webappName(null) configuration - Improved error handling with proper fallback to URL when screen rendering fails - Enhanced logging for better tracking of screen execution attempts - Maintained user context restoration for proper authentication handling - Added timeout protection with 30-second limits to prevent hanging operations Screen execution now works correctly and provides meaningful responses with screen URLs when direct rendering requires authentication or encounters issues.
Ean Schuessler committed -
- Removed duplicate listProducts service from McpServices.xml as it was causing conflicts - Added WebFacadeStub.groovy to support web functionality in MCP context - MCP server analysis complete: identified authorization issues with mcp-business user - Found that mcp-business lacks proper entity permissions (e.g., mantle.shipment.ShipmentParty) - Need to implement role-based access control for proper MCP business functionality - Foundation is solid - 1,200+ services and screens exposed, but authorization layer needed
Ean Schuessler committed -
- Fix session header variable expansion in make_mcp_request - Add MAIN_SCRIPT check to prevent main logic when sourcing - Add timeout protection around curl and jq commands - Add debug output for troubleshooting hanging issues The MCP shell now properly handles session IDs and has timeout protection to prevent hanging on long responses. Screen execution service is working but response processing needs optimization for large JSON responses.
Ean Schuessler committed -
- Mock html_scripts, html_stylesheets for web-dependent screens - Mock webappName, servletContext, request, response objects - Mock ec.web.getResourceDistinctValue() for template compatibility - Mock sri object with buildUrl, getThemeValues, sendRedirectAndStopRender - Enables PopCommerce and other web screens to render in text mode - Text mode bypasses web dependencies and renders core content successfully
Ean Schuessler committed -
- Change default renderMode from json to html in screen execution service - json render mode not supported by Moqui screen framework - html mode allows web-dependent screens to render properly - Simple screens can now render successfully in MCP context - Web-dependent screens still fall back to URLs as expected
Ean Schuessler committed -
- Remove unnecessary ADMIN context push in mcp#ToolsList service (line 227) - Fix screen path reconstruction to use original paths from tool descriptions - Add business screen permissions for testing (ProductList, OrderList, PartyList) - Remove overly restrictive screen filtering in discovery service - Add sessionId parameter to tools/call service for proper screen execution - Fix double-encoding issue in screen execution result handling - Add McpTestScreen for validation and testing Now correctly returns user-specific screens instead of ADMIN screens: - 38 total tools (19 services + 19 screens) - Proper user permission filtering - Original screen paths preserved in tool descriptions - Business screens accessible with fallback URLs for complex screens
Ean Schuessler committed
-
- 21 Nov, 2025 3 commits
-
-
Ean Schuessler committed
-
Ean Schuessler committed
-
- Remove unused convert#ScreenInfoToMcpTool service (120+ lines of dead code) - Port screen metadata feature from ScreenInfoToMcpTool to ScreenToMcpTool - Add screen structure metadata (name, level, transitions, forms, subscreens) - Improve screen tool discovery with better parameter extraction - Enhance screen execution with fallback to URL when rendering fails - Add comprehensive logging for debugging screen operations
Ean Schuessler committed
-
- 20 Nov, 2025 11 commits
-
-
Ean Schuessler committed
-
Ean Schuessler committed
-
- Add mantle.party.FindPartyView to McpBusinessServices artifact group for authorization - Enhance ResourcesList service to include ViewEntities with special descriptions - Improve ResourcesRead service with fallback entity discovery for ViewEntities - ViewEntities provide pre-joined data for LLM convenience, eliminating manual joins - Tested successfully: FindPartyView returns 100 records with contact info, addresses, emails, phones
Ean Schuessler committed -
- Add Visit creation to servlet service method for JSON-RPC requests - Fix variable scope issue where visit was undefined in service method - Pass visitId to Initialize service instead of null sessionId - Clean up duplicate session validation code in services - Update version numbers to reflect fixes MCP interface now fully functional with proper session management
Ean Schuessler committed -
For initialize method, use the visitId just created by servlet instead of null sessionId from request. This ensures Initialize service receives valid session ID and eliminates transaction visibility issues.
Ean Schuessler committed -
- Initialize service now only uses visitId from servlet - Removes duplicate Visit creation logic - Removes visit parameter from ToolsList/ResourcesList - Clean up session activity update code - Servlet handles Visit lifecycle, service handles MCP init only
Ean Schuessler committed -
Ean Schuessler committed
-
- Add missing admin user context for visit.update() call - Uncomment and properly scope artifactExecution disable/enableAuthz - Remove debug log statement - Ensure visit metadata is properly saved to database
Ean Schuessler committed -
Ean Schuessler committed
-
Ean Schuessler committed
-
Ean Schuessler committed
-