MCP server implementation in Java and Kotlin with PDF embedding, vector search, and hybrid retrieval capabilities. Supports both STDIO and HTTP (Streamable HTTP) transports with MinIO object storage integration.
Three tools with complete schemas and descriptions, but quality varies significantly. Echo and add are simple utility tools with adequate but generic descriptions (34-40 chars, below the 50-200 char LLM-optimized baseline). pdf_search has a more detailed description (180+ chars) and sophisticated parameters (query, top_k, min_score with ranges), but lacks output schema documentation. All tools have proper JSON Schema with types and required fields. No error recovery guidance in descriptions. Parameter descriptions are present but minimal for echo/add. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all being read-only operations.
Returns the sum of two numbers.
Echoes the input message back to the caller.
저장된 PDF 내용을 하이브리드(벡터 유사도 + 키워드)로 검색합니다. 최소 유사도(min_score) 미만의 순수 벡터 결과는 제외됩니다(키워드 매칭은 유지).
Output schemas not documented. LLMs cannot plan downstream tool calls or extract structured data without knowing what fields to expect. Echo/add return TextContent but structure is implicit; pdf_search returns result objects with objectKey(), chunkIndex(), score(), matchSource(), content() but this is not formally declared.
Echo and add descriptions are too short (34-40 chars vs 50-200 char baseline). Generic descriptions like 'Echoes the input message back' and 'Returns the sum of two numbers' lack context for LLM selection. Should explain WHEN to use each tool and any prerequisites.
No tool annotations despite all tools being read-only. Missing readOnlyHint in schema would help agents understand safety and retry semantics. Pattern requires explicit risk classification.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
pdf_search lacks error recovery guidance. Description mentions 'min_score' cutoff logic but does not explain what to do if search returns no results or if the query is malformed. Error responses say '검색 결과가 없습니다' (no results) but do not suggest alternatives.
pdf_search parameter descriptions use Korean language. While technically valid, mixing Korean and English reduces clarity for international LLM agents and makes parameter constraints harder to parse. Descriptions should be in English for consistency.