Memory Layer MCP for Claude Code — hybrid BM25 + vector search that compounds with usage (Korean ↔ English)
Single tool 'hybrid_search' has a well-structured schema with 9 parameters, all typed and described. Tool name is action-oriented (verb_noun pattern). Description is clear and specific (145 chars), explaining what the tool does and when to use it (bm25_weight tuning). Schema includes proper constraints (enums for 'detail', min/max for 'limit' and 'bm25_weight'). However, output schema is not documented, LLMs cannot predict the response structure. Error handling is not visible in the provided code. Parameter descriptions are good but could be more prescriptive about format/constraints (e.g., glob pattern syntax for file_pattern). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present.
Search code and docs using hybrid BM25 + semantic vector search with cross-language support (Korean ↔ English). Set bm25_weight=0 for pure semantic search.
Output schema not documented. LLMs cannot predict response structure (fields, types, pagination). Breaks downstream tool chaining and forces agents to guess at result format.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tool is read-only but LLMs cannot infer this from the schema alone. Agents may incorrectly treat it as stateful.
Error handling and recovery guidance not visible in source. No documented error cases, retryability classification, or actionable error messages for invalid inputs (e.g., invalid glob patterns, out-of-range limit).
Parameter 'file_pattern' and 'exclude_pattern' lack format specification. Descriptions say 'Glob pattern' but do not explain syntax (*, **, ?, []) or common mistakes. LLMs may pass invalid patterns.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | <=2025-11-25 | v2 |
Parameter 'node_types' is an array of strings with no enum constraint. Description lists examples ('function, class, interface, method, type, etc.') but does not restrict to valid values. LLMs may hallucinate unsupported node types.