Model Context Protocol server for analyzing SAP Commerce (Hybris) source code. Provides tools for searching classes, finding implementations, analyzing dependencies, and managing Spring XML configurations.
The server provides 9 well-scoped tools for SAP Commerce codebase exploration. Tool naming follows verb_noun convention (search_, get_, find_, rebuild_) which is appropriate. However, there are consistent gaps: (1) Input schemas are present and properly typed for all tools, but output schemas are NOT documented, the tool code generates JSON responses but the schema is not declared in the tool definitions. (2) Descriptions are generally adequate (100-300 chars) and include USE/NOT guidance, which is good, but parameter descriptions occasionally lack specificity (e.g., 'class name' could specify whether fully qualified or simple names are preferred, though this is mentioned in some descriptions). (3) The rebuild_index tool has an empty properties object but no description of what happens or side effects. (4) Error handling is present in code (try/catch) but error messages are generic ('{error: e.message}') without recovery guidance for the LLM. (5) All parameter types are declared (string, integer, boolean) with defaults where appropriate. The tool set is cohesive and addresses a clear domain need (SAP Commerce code navigation via Spring/Java patterns).
Find all classes that implement a specific interface. Searches class hierarchy to find all concrete implementations and subclasses.
Find all Spring dependencies (@Autowired, @Resource, @Inject) for a specific class. Shows field injection, constructor injection, and setter injection patterns.
Find classes that IMPORT a specific class (compile-time dependency). Searches imports table. Accepts both fully qualified names and simple names.
Get full signature of a class: extends, implements, methods, fields, annotations, and constructor parameters.
Show index statistics: classes, methods, fields, annotations, beans count, last indexed time, and index size.
Search Spring XML bean definitions (*-spring.xml files). Pattern matching on bean IDs.
Output schemas are not documented. Tools generate JSON responses (visible in code: JSON.pretty_generate(formatted_results)) but the response structure is not declared in the tool definitions. LLMs cannot predict the shape of returned data or plan downstream steps without knowing field names and types.
Error messages lack recovery guidance. Code catches exceptions and returns '{error: e.message}' (e.g., in FindUsages.rb line with 'rescue => e'). LLM receives raw error text with no hint of what to try next. Should return structured errors like '{error: "Class not found", suggestion: "Try search_classes() with a partial name", code: "NOT_FOUND"}'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Force rebuild of code index. Use after major codebase changes. Set force=true to override existing index.
Find classes/methods/fields with specific annotation (@Service, @Controller, @Autowired, etc).
Search for classes by name pattern. Supports substring matching and filtering by extension.
rebuild_index tool has minimal documentation. Description says 'Force rebuild of code index. Use after major codebase changes.' but does not explain: What triggers a rebuild? How long does it take? Does it block other queries? What happens if invoked mid-indexing? Side effects and prerequisites are unclear.
get_index_stats has empty input schema (properties: {}). This is acceptable since the tool takes no parameters, but the description should explicitly state 'This tool requires no parameters' to avoid LLM confusion.
Result pagination not consistently documented. search_classes, find_implementations, find_usages accept 'limit' parameters and return 'result_count', but the response structure (array vs. object with count) is not declared. If results exceed limit, is there a cursor or offset mechanism? This is unclear.