오믹스 분석 MCP 서버 — 단일세포 RNA-seq 분석 파이프라인 (전처리 → QC → 차등발현)
Four tools with basic schemas and descriptions, but significant gaps in naming clarity, parameter documentation, and error handling. Tool names lack action verbs (dataset_overview, preprocess, qc_check, differential_expression are weak). Descriptions exist but are terse (avg ~80 chars, below 194-char baseline). Parameters lack type annotations in visible schema (only string/boolean shown, no enums or constraints). Output schemas are undocumented. Error responses exist but lack recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Korean descriptions reduce LLM clarity.
데이터셋 ID 로 그 데이터셋의 개요(규모 · 샘플 · 군 · 환자 · 요법)를 돌려줍니다.
세포 유형 안에서 반응군 vs 비반응군 차등발현을 돌려줍니다.
전처리 파이프라인을 실행하고 run_id 를 돌려줍니다. 결과 데이터가 아니라 손잡이(run_id)만 옵니다. 아직 QC 는 안 된 상태입니다.
전처리한 run 의 품질을 점검하고, 합격 여부를 run 에 기록합니다.
Tool names lack action verbs. 'dataset_overview', 'preprocess', 'qc_check', 'differential_expression' do not start with clear verbs (get_, create_, run_, etc.). LLMs cannot infer intent from names alone.
No input parameter type constraints. Parameters are typed (string, boolean) but lack enums, ranges, or format constraints. E.g., 'dataset_id' accepts any string; 'cell_type' has no enum of valid types (CD8 T세포, CD4 T세포, etc.).
Output schemas undocumented. Tools return dicts with fields like 'run_id', '거부', '다음', but no formal schema is declared. LLMs cannot plan downstream calls without knowing return structure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | <=2025-11-25 | v2 |
Error responses lack recovery guidance. Errors like '모르는 run_id 입니다' (unknown run_id) tell the LLM to call preprocess(), but this is implicit. Should explicitly state: 'Call preprocess() to generate a run_id.'
No tool annotations. Tools lack readOnlyHint/destructiveHint/idempotentHint. preprocess and qc_check modify state (WRITE risk) but are not marked as destructive. differential_expression is READ_ONLY but unmarked.