62ceb38a by Ean Schuessler

Enhance MCP debugging and pricing tool access

- Add comprehensive logging for MCP service calls (EXECUTESCREEN, SCREENASTOOL, ToolsCall)
- Update instructions to include Product_EditPrices tool for price checking
- Change default render mode to 'html' for better screen output
- Temporarily disable visit.update() to reduce database overhead during debugging
- Improve parameter passing for screen execution tools
1 parent 4c7a2d51
...@@ -107,7 +107,7 @@ ...@@ -107,7 +107,7 @@
107 capabilities: serverCapabilities, 107 capabilities: serverCapabilities,
108 serverInfo: serverInfo, 108 serverInfo: serverInfo,
109 sessionId: sessionId, 109 sessionId: sessionId,
110 instructions: "This server provides access to Moqui ERP through MCP. For common business queries: Use screen_PopCommerce_screen_PopCommerceAdmin_Catalog.Feature_FindFeature to search by features like color or size. Use screen_PopCommerce_screen_PopCommerceAdmin_Catalog.Product_FindProduct for product catalog, screen_PopCommerce_screen_PopCommerceAdmin_Order.FindOrder for order status, screen_PopCommerce_screen_PopCommerceRoot.Customer for customer management, and screen_PopCommerce_screen_PopCommerceAdmin.QuickSearch for general searches. All screens support parameterized queries for filtering results." 110 instructions: "This server provides access to Moqui ERP through MCP. For common business queries: Use screen_PopCommerce_screen_PopCommerceAdmin_Catalog.Feature_FindFeature to search by features like color or size. Use screen_PopCommerce_screen_PopCommerceAdmin_Catalog.Product_FindProduct for product catalog, screen_PopCommerce_screen_PopCommerceAdmin_Order.FindOrder for order status, screen_PopCommerce_screen_PopCommerceRoot.Customer for customer management, screen_PopCommerce_screen_PopCommerceAdmin_Catalog.Product_EditPrices to check prices and screen_PopCommerce_screen_PopCommerceAdmin.QuickSearch for general searches. All screens support parameterized queries for filtering results."
111 ] 111 ]
112 112
113 ec.logger.info("MCP Initialize for user ${userId} (session ${sessionId}): capabilities negotiated") 113 ec.logger.info("MCP Initialize for user ${userId} (session ${sessionId}): capabilities negotiated")
...@@ -199,14 +199,16 @@ ...@@ -199,14 +199,16 @@
199 // Call screen execution service with decoded parameters 199 // Call screen execution service with decoded parameters
200 def screenCallParams = [ 200 def screenCallParams = [
201 screenPath: screenPath, 201 screenPath: screenPath,
202 parameters: actualArguments?.arguments ?: [:], 202 parameters: actualArguments, //actualArguments?.arguments ?: [:],
203 renderMode: actualArguments?.renderMode ?: "text", 203 renderMode: actualArguments?.renderMode ?: "html",
204 sessionId: sessionId 204 sessionId: sessionId
205 ] 205 ]
206 if (subscreenName) { 206 if (subscreenName) {
207 screenCallParams.subscreenName = subscreenName 207 screenCallParams.subscreenName = subscreenName
208 } 208 }
209 209
210
211 ec.logger.info("EXECUTESCREEN ${screenCallParams}")
210 return ec.service.sync().name("McpServices.execute#ScreenAsMcpTool") 212 return ec.service.sync().name("McpServices.execute#ScreenAsMcpTool")
211 .parameters(screenCallParams) 213 .parameters(screenCallParams)
212 .call() 214 .call()
...@@ -224,6 +226,7 @@ ...@@ -224,6 +226,7 @@
224 } 226 }
225 } else { 227 } else {
226 // For other protocol methods, call the target service with provided arguments 228 // For other protocol methods, call the target service with provided arguments
229 ec.logger.info("MCP ToolsCall: ${targetServiceName} ${arguments}")
227 def serviceResult = ec.service.sync().name(targetServiceName) 230 def serviceResult = ec.service.sync().name(targetServiceName)
228 .parameters(arguments ?: [:]) 231 .parameters(arguments ?: [:])
229 .call() 232 .call()
...@@ -281,6 +284,8 @@ ...@@ -281,6 +284,8 @@
281 if (subscreenName) { 284 if (subscreenName) {
282 serviceCallParams.subscreenName = subscreenName 285 serviceCallParams.subscreenName = subscreenName
283 } 286 }
287
288 ec.logger.info("SCREENASTOOL ${serviceCallParams}")
284 serviceResult = ec.service.sync().name("McpServices.execute#ScreenAsMcpTool") 289 serviceResult = ec.service.sync().name("McpServices.execute#ScreenAsMcpTool")
285 .parameters(serviceCallParams) 290 .parameters(serviceCallParams)
286 .call() 291 .call()
......
...@@ -1207,7 +1207,7 @@ try { ...@@ -1207,7 +1207,7 @@ try {
1207 1207
1208 if (visit) { 1208 if (visit) {
1209 visit.thruDate = ec.user.getNowTimestamp() 1209 visit.thruDate = ec.user.getNowTimestamp()
1210 visit.update() 1210 //visit.update()
1211 // Update cache with new thruDate 1211 // Update cache with new thruDate
1212 visitCache.put(sessionId, visit) 1212 visitCache.put(sessionId, visit)
1213 lastActivityUpdate.put(sessionId, now) 1213 lastActivityUpdate.put(sessionId, now)
......