관상 추출 MCP 서버 (stdio) — 사진(base64) → 사람 판별 + 결정론 얼굴 피처(三停·五官 비율·대칭·자세) JSON. 순수 추출(손발) — 관상 해석·점수·운세는 절대 생성하지 않는다(AI 몫).
Single tool 'analyze_face' has a clear, descriptive docstring (Korean, ~180 chars) and explicit input schema with types and descriptions. However, the output schema is only partially documented in the docstring, no formal JSON Schema definition is visible in the code. Parameter descriptions are present but lack format constraints (e.g., accepted image formats, base64 encoding details). Error handling returns structured dicts but lacks actionable recovery guidance. The tool is read-only and well-intentioned, but schema incompleteness and missing output type definitions prevent a higher score.
사진에서 결정론 얼굴 피처를 추출한다(해석 없음 — 수치만).
Output schema not formally documented. Docstring describes return structure (is_person, features, confidence, notes, overlay) but no JSON Schema definition is visible. LLMs cannot reliably parse or chain outputs without explicit schema.
Input parameter 'image' lacks format constraints. Description mentions 'local file path / data URI / pure base64' but does not specify accepted image formats (JPEG, PNG, etc.), max file size, or base64 encoding rules. LLMs may pass invalid formats.
Error responses lack recovery guidance. Returns {'is_person': False, 'reason': '...'} but does not guide the LLM on next steps (e.g., 'Try a higher-resolution image' or 'Ensure face is frontal'). Bare error messages offer no actionable path forward.
No tool annotations (readOnlyHint, idempotentHint). The tool is read-only and idempotent, but these hints are not declared in the schema. Agents cannot infer safety properties without explicit annotations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Output field 'features' is a nested object with undocumented sub-fields (samjeong, ogwan, face_shape_ratio, symmetry, pose, geometry_px). No type definitions or ranges provided. LLMs cannot reliably extract or validate these values.