Intermediate MCP server for code snippets search
Single tool with adequate basic structure but significant gaps in description clarity, parameter detail, and output documentation. The tool name 'lookup-snippet' is reasonably clear but lacks action-verb specificity. Description is present (238 chars, within 10-1024 range) but generic and does not explain prerequisites, dependencies, or expected output schema. Input schema has one parameter with type and description, but no enum constraints, format specifications, or range limits. Output is documented in code as 'list[TextContent | ImageContent | EmbeddedResource]' but not exposed in tool registration metadata. No error handling guidance, no actionable recovery messages. Tool is marked READ_ONLY which is good, but annotations are not declared in schema. The tool acts as a proxy wrapper to a remote 'qdrant-find' service, adding an abstraction layer that is not documented to the LLM.
Search for examples of using libraries, functions, classes, etc. Lookup available methods, features and possible configurations. Example: Create a collection for hybrid search with qdrant client.
Output schema not exposed in tool registration. Return type 'list[TextContent | ImageContent | EmbeddedResource]' is visible only in Python code, not in MCP tool metadata. LLM cannot reason about what fields to expect or how to chain downstream operations.
Parameter description lacks actionable constraints. 'Description of the function or method to lookup a snippet for' does not specify: format (free text vs structured query), length limits, example syntax, or what language/library names to expect. No guidance on how to phrase queries effectively.
Tool description does not document the proxy/wrapper behavior or preconditions. LLM is not told: (a) this requires a remote Qdrant server configured, (b) language and dependencies are auto-detected from the project, (c) a fallback unfiltered search is attempted if filtered search returns empty. These are critical for agent planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 34 | - | v1 |
No error handling guidance. Code shows two possible states: (1) filtered search succeeds, (2) filtered search empty so fallback unfiltered search runs. No documentation of: what happens if both fail, what conditions trigger retry, whether the tool is idempotent, what user-fixable errors might occur.
Tool annotations missing. Schema does not declare readOnlyHint, destructiveHint, or idempotentHint. Based on code (no state changes, repeatable logic), this should be marked as readonly and idempotent for proper agent reasoning.
No pagination or result limits documented. Code does not show a limit parameter or pagination capability in the lookup-snippet tool itself. If the underlying Qdrant service returns many results, context window could be exhausted. No guidance on expected result count or how to subset results.
Naming could be more specific. 'lookup-snippet' uses 'lookup' which is slightly vague compared to action verbs like 'search', 'find', or 'get'. However, this is a minor issue and naming is acceptable.